James Reads


Day of Jun 15th, 2020

  • Experts unsure if George Floyd protests will cause COVID-19 spike

    Data suggests George Floyd protests have not caused coronavirus spike in NYC June 11, 2020 | 5:30pm Enlarge Image Black Lives Matter protesters crowd around Foley Square in front of the federal courthouses in Manhattan. Tamara Beckwith / NYPost Officials in New York have openly fretted that the massive civil rights and anti-police protests following the Minneapolis police killing of George Floyd could lead to a new coronavirus outbreak as tens of thousands packed together on city streets. Yet, testing data released by city and state officials in recent days shows little evidence of any spike — a seemingly confounding development that experts say is attributable to a few key factors. First, the lag in test results and COVID-19’s long incubation period mean the Big Apple may not be out of the woods, yet. “It is too soon to tell what public health impact the protests of the last few weeks will have on New York,” said Professor Summer McGee, the dean of the School of Health Sciences at the University of New Haven, in Connecticut. “We will have a much better picture of things in another week or two because positive tests and hospitalization lag behind exposure by a few weeks.” However, the protests were outdoors in the fresh air and the vast majority of protestors at demonstrations wore face masks or other protective coverings, two important things that scientists say help prevent the virus’ spread. “Most protesters I saw were wearing some kind of cloth face covering,” McGee added. “But prolonged close proximity to others is a concern when individuals are wearing bandanas and less effective masks.” Masks are increasingly central to efforts by public health authorities to slow the spread of the disease. A new study out of Britain showed that even homemade cloth masks can dramatically reduce transmission of COVID-19, according to a report published by the Reuters news agency. “Our analyses support the immediate and universal adoption of face masks by the public,” Dr. Richard Stutt, who co-led the study at the University of Cambridge, told the wire service. He added that combining widespread mask use with social distancing and some lockdown measures could be “an acceptable way of managing the pandemic and re-opening economic activity” as scientists race to develop a vaccine for the virus. Source: Experts unsure if George Floyd protests will cause COVID-19 spike

    Read at 11:08 pm, Jun 15th

  • T-Mobile, other phone carrier service may be down in parts of the US - Business Insider

    T-Mobile customers throughout the US are experiencing outages on Monday afternoon. Service-tracker Down Detector reported over 93,000 reports of T-Mobile outages as of about 3:09 p.m. Eastern Time. Phone users also reported issues with their cell service on social media.  T-Mobile said its engineers "are working to resolve a voice and data issue" affecting customers throughout the US. While issues were reported with other carriers, including AT&T and Verizon, both carriers said their service was operating normally.   Calls to a carrier experiencing outages may get an error message, resulting in reports of issues with non-affected carriers, a Verizon spokesperson said.  Visit Business Insider's homepage for more stories. T-Mobile and other wireless carriers throughout the US are experiencing issues on Monday afternoon.  "Our engineers are working to resolve a voice and data issue that has been affecting customers around the country," Neville Ray, president of technology for T-Mobile, said in a tweet. "We're sorry for the inconvenience and hope to have this fixed shortly." Service-tracker Down Detector reported T-Mobile outages in New York, Florida, Texas, Georgia, California, and the Washington, DC, area. As of about 3:09 p.m. Eastern Time on Monday, Down Detector had seen over 93,000 reports of T-Mobile outages, and varying reports from the other carriers. Phone owners in the US also reported issues on social media Monday afternoon with their cell service, particularly T-Mobile. While both Down Detector and customers on social media reported that AT&T and Verizon service was down, an AT&T spokesperson told Business Insider its "network is operating normally." A Verizon spokesperson also told Business Insider the carrier is "operating at normal service levels" and noted that given that "another national carrier" is having issues, calls to and from that carrier may get an error message, resulting in reports of issues.  T-Mobile outages on Monday afternoon. Down Detector Down Detector also reported that US Cellular and Sprint were having issues, but neither company immediately returned a request for comment.  This story is developing ... More: Tech wireless carriers Verizon Sprint Chevron iconIt indicates an expandable section or menu, or sometimes previous / next navigation options. Source: T-Mobile, other phone carrier service may be down in parts of the US – Business Insider

    Read at 08:56 pm, Jun 15th

  • GitHub to replace "master" with alternative term to avoid slavery references | ZDNet

    GitHub is working on replacing the term "master" on its service with a neutral term like "main" to avoid any unnecessary references to slavery, its CEO said on Friday. The code-hosting portal is just the latest in a long line of tech companies and open source projects that have expressed support for removing terms that may be offensive to developers in the black community. This includes dropping terms like "master" and "slave" for alternatives like "main/default/primary" and "secondary;" but also terms like "blacklist" and "whitelist" for "allow list" and "deny/exclude list." The concern is that continued use of these racially-loaded terms could prolong racial stereotypes. "Such terminology not only reflects racist culture, but also serves to reinforce, legitimize, and perpetuate it," wrote academics in a 2018 journal. BLM protests spur new efforts to clean out software language Now, spurred by the Black Lives Matter protests across the US, the tech community is engaging again in efforts to remove such language from source code, software applications, and online services. For starters, the Android mobile operating system, the Go programming language, the PHPUnit library, and the Curl file download utility have stated their intention to replace blacklist/whitelist with neutral alternatives. Similarly, the OpenZFS file storage manager has also replaced its master/slave terms used for describing relations between storage environments with suitable replacements. Gabriel Csapo, a software engineer at LinkedIn, said on Twitter this week that he's also in the process of filing requests to update many of Microsoft's internal libraries and remove any racially-charged phrases. Other projects that don't use racially-charged constructs in their source code or user interfaces directly are now looking at their source code repositories. Most of these projects manage their source code via the Git software, or the GitHub online portal (which provides Git-based source code hosting). Both Git and GitHub use the term "master" for the default version of a source code repository. Developers fork a version of the "master" to create secondary versions, add their own code to this default version, and then merge their changes back into the "master." Now, several open-source projects are changing the name of their default Git repo from "master" to alternatives like main, default, primary, root, or another. For example, ZDNet found that projects like the OpenSSL encryption software library, automation software Ansible, Microsoft's PowerShell scripting language, the P5.js JavaScript library, and many others are looking at changing the name of their default source code repos, in a bid to stamp out racially-charged and slavery-related terms, in a way of showing support for the BLM movement and their protests. The move has taken the open-source development community by storm, so much so that even the Git project itself is now considering an official change, albeit discussions in its mailing list and GitHub Issues section are still going on, with considerable pushback. GitHub support legitimizes and streamlines movement But even if Git formally replaces the "master" name or not, GitHub appears to have decided to move on, regardless of Git's decision. On Friday, Google Chrome developer Una Kravets tweeted that the Chrome project was considering a similar move of renaming the default branch of the Chrome browser source code from "master" to a neutral term like "main." Kravets asked GitHub to follow Google in its move and help drive change across the industry, a move to which GitHub CEO Nat Friedman answered promptly, revealing that the company was already working on the issue. GitHub lending its backing to this movement effectively ensures the term will be removed across millions of projects, and effectively legitimizes the effort to clean up software terminology that started this month. But, in reality, these efforts started years ago, in 2014, when the Drupal project first moved in to replace "master/slave" terminology with "primary/replica." Drupal's move was followed by the Python programming language, Chromium (the open-source browser project at the base of Chrome), Microsoft's Roslyn .NET compiler, and the PostgreSQL and Redis database systems. However, despite some pretty big projects getting on board, efforts to clean up software language across the years have not been widely embraced. Most detractors and the explanation that often resurfaces in these discussions is that terms like master/slave are now more broadly used to describe technical scenarios than actual slavery and that the word "blacklist" has nothing to do with black people, but the practice of using black books in medieval England to write down the names of problematic workers to avoid hiring in the future. Related Topics: Open Source Enterprise Software Mobile OS Source: GitHub to replace “master” with alternative term to avoid slavery references | ZDNet

    Read at 08:25 pm, Jun 15th

  • Improved Next.js and Gatsby page load performance with granular chunking

    Improved Next.js and Gatsby page load performance with granular chunking A newer webpack chunking strategy in Next.js and Gatsby minimizes duplicate code to improve page load performance. Apr 29, 2020 Chrome is collaborating with tooling and frameworks in the JavaScript open-source ecosystem. A number of newer optimizations were recently added to improve the loading performance of Next.js and Gatsby. This article covers an improved granular chunking strategy that is now shipped by default in both frameworks. Introduction Like many web frameworks, Next.js and Gatsby use webpack as their core bundler. webpack v3 introduced CommonsChunkPlugin to make it possible to output modules shared between different entry points in a single (or few) "commons" chunk (or chunks). Shared code can be downloaded separately and stored in the browser cache early on which can result in a better loading performance. This pattern became popular with many single-page application frameworks adopting an entrypoint and bundle configuration that looked like this: Although practical, the concept of bundling all shared module code into a single chunk has its limitations. Modules not shared in every entry point can be downloaded for routes that do not use it resulting in more code being downloaded than necessary. For example, when page1 loads the common chunk, it loads the code for moduleC even though page1 doesn't use moduleC. For this reason, along with a few others, webpack v4 removed the plugin in favor of a new one: SplitChunksPlugin. Improved Chunking The default settings for SplitChunksPlugin works well for most users. Multiple split chunks are created depending on a number of conditions to prevent fetching duplicated code across multiple routes. However, many web frameworks that use this plugin still follow a "single-commons" approach to chunk splitting. Next.js, for example, would generate a commons bundle that contained any module that is used in more than 50% of pages and all framework dependencies (react, react-dom, and so on). const splitChunksConfigs = { … prod: { chunks: 'all', cacheGroups: { default: false, vendors: false, commons: { name: 'commons', chunks: 'all', minChunks: totalPages > 2 ? totalPages * 0.5 : 2, }, react: { name: 'commons', chunks: 'all', test: /[\/]node_modules[\/](react|react-dom|scheduler|use-subscription)[\/]/, }, }, }, Although including framework-dependent code into a shared chunk means that it can be downloaded and cached for any entrypoint, the usage-based heuristic of including common modules used in more than half of pages isn't very effective. Modifying this ratio would only result in one of two outcomes: If you reduce the ratio, more unnecessary code gets downloaded. If you increase the ratio, more code gets duplicated across multiple routes. To solve this problem, Next.js adopted a different configuration forSplitChunksPlugin that reduces unecessary code for any route. Any sufficiently large third-party module (greater than 160 KB) is split into its own individual chunk A separate frameworks chunk is created for framework dependencies (react, react-dom, and so on) As many shared chunks as needed are created (up to 25) The minimum size for a chunk to be generated is changed to 20 KB This granular chunking strategy provides the following benefits: Page load times are improved. Emitting multiple shared chunks, instead of a single one, minimizes the amount of unneeded (or duplicate) code for any entrypoint. Improved caching during navigations. Splitting large libraries and framework dependencies into separate chunks reduces the possibility of cache invalidation since both are unlikely to change until an upgrade is made. You can see the entire configuration that Next.js adopted in webpack-config.ts. More HTTP requests SplitChunksPlugin defined the basis for granular chunking, and applying this approach to a framework like Next.js was not an entirely new concept. Many frameworks, however, still continued to use a single heuristic and "commons" bundle strategy for a few reasons. This includes the concern that many more HTTP requests can negatively affect site performance. Browsers can only open a limited number of TCP connections to a single origin (6 for Chrome), so minimizing the number of chunks outputted by a bundler can ensure that the total number of requests stays under this threshold. However, this only holds true for HTTP/1.1. Multiplexing in HTTP/2 allows for multiple requests to be streamed in parallel using a single connection over a single origin. In other words, we generally do not need to worry about limiting the number of chunks emitted by our bundler. All major browsers support HTTP/2. The Chrome and Next.js teams wanted to see if increasing the number of requests by splitting Next.js's single "commons" bundle into multiple shared chunks would affect loading performance in any way. They began by measuring the performance of a single site while modifying the maximum number of parallel requests using the maxInitialRequests property. In an average of three runs of multiple trials on a single web page, the load, start-render and First Contentful Paint times all remained about the same when varying the max initial request count (from 5 to 15). Interestingly enough, we noticed a slight performance overhead only after splitting aggressively to hundreds of requests. This showed that staying under a reliable threshold (20~25 requests) struck the right balance between loading performance and caching efficiency. After some baseline testing, 25 was selected as the maxInitialRequest count. Modifying the maximum number of requests that happen in parallel resulted in more than a single shared bundle, and separating them appropriately for each entry point significantly reduced the amount of unneeded code for the same page. This experiment was only about modifying the number of requests to see if there would be any negative effect on page load performance. The results suggest that setting maxInitialRequests to 25 on the test page was optimal because it reduced the JavaScript payload size without slowing down the page. The total amount of JavaScript that was needed to hydrate the page still remained about the same, which explains why page load performance didn't necessarily improve with the reduced amount of code. webpack uses 30 KB as a default minimum size for a chunk to be generated. However, coupling a maxInitialRequests value of 25 with a 20 KB minimum size instead resulted in better caching. Size reductions with granular chunks Many frameworks, including Next.js, rely on client-side routing (handled by JavaScript) to inject newer script tags for every route transition. But how do they predetermine these dynamic chunks at build time? Next.js uses a server-side build manifest file to determine which outputted chunks are used by different entry points. To provide this information to the client as well, an abridged client-side build manifest file was created to map all the dependencies for every entry point. getDependencies (route) { return this.promisedBuildManifest.then( man => (man[route] && man[route].map(url => `/_next/${url}`)) || [] ) } This newer granular chunking strategy was first rolled out in Next.js behind a flag, where it was tested on a number of early adopters. Many saw significant reductions to the total JavaScript used for their entire site: The final version was shipped by default in version 9.2. Gatsby Gatsby used to follow the same approach of using a usage-based heuristic for defining common modules: config.optimization = { … splitChunks: { name: false, chunks: `all`, cacheGroups: { default: false, vendors: false, commons: { name: `commons`, chunks: `all`, minChunks: componentsCount > 2 ? componentsCount * 0.5 : 2, }, react: { name: `commons`, chunks: `all`, test: /[\/]node_modules[\/](react|react-dom|scheduler)[\/]/, }, By optimizing their webpack configuration to adopt a similar granular chunking strategy, they also noticed sizeable JavaScript reductions in many large sites: Take a look at the PR to understand how they implemented this logic into their webpack configuration, which is shipped by default in v2.20.7. Conclusion The concept of shipping granular chunks is not specific to Next.js, Gatsby or even webpack. Everyone should consider improving their application's chunking strategy if it follows a large "commons" bundle approach, regardless of the framework or module bundler used. If you would like to see the same chunking optimizations applied to a vanilla React application, take a look at this sample React app. It uses a simplified version of the granular chunking strategy and can help you start applying the same sort of logic to your site. For Rollup, chunks are created granularly by default. Take a look at manualChunks if you would like to manually configure the behavior. Last updated: Apr 29, 2020 Improve article Source: Improved Next.js and Gatsby page load performance with granular chunking

    Read at 07:44 pm, Jun 15th

  • Civil Rights Law Protects L.G.B.T. Workers, Supreme Court Rules - The New York Times

    The court said the language of the Civil Rights Act of 1964, which prohibits sex discrimination, applies to discrimination based on sexual orientation and gender identity. Tiffany Munroe waving a Pride flag during a rally to call attention to violence against transgender people of color in Brooklyn on Sunday.Credit...Demetrius Freeman for The New York Times The Supreme Court ruled Monday that a landmark civil rights law protects gay and transgender workers from workplace discrimination, handing the movement for L.G.B.T. equality a stunning victory. The vote was 6 to 3, with Justice Neil M. Gorsuch writing the majority opinion. He was joined by Chief Justice John G. Roberts Jr. and Justices Ruth Bader Ginsburg, Stephen G. Breyer, Sonia Sotomayor and Elena Kagan. The case concerned Title VII of the Civil Rights Act of 1964, which bars employment discrimination based on race, religion, national origin and sex. The question for the justices was whether that last prohibition — discrimination “because of sex”— applies to many millions of gay and transgender workers. The decision, covering two cases, was the court’s first on L.G.B.T. rights since the retirement in 2018 of Justice Anthony M. Kennedy, who wrote the majority opinions in all four of the court’s major gay rights decisions. Those decisions were grounded in constitutional law. The new cases, by contrast, concerned statutory interpretation. Lawyers for employers and the Trump administration argued that the common understanding of sex discrimination in 1964 was bias against women or men and did not encompass discrimination based on sexual orientation and gender identity. If Congress wanted to protect gay and transgender workers, they said, it could pass a new law. Lawyers for the workers responded that discrimination against employees based on sexual orientation or transgender status must as a matter of logic take account of sex. The court considered two sets of cases. The first concerned a pair of lawsuits from gay men who said they were fired because of their sexual orientation. The second was about a suit from a transgender woman, Aimee Stephens, who said her employer fired her when she announced that she would embrace her gender identity at work. The cases concerning gay rights are Bostock v. Clayton County, Ga., No. 17-1618, and Altitude Express Inc. v. Zarda, No. 17-1623. The first case was filed by Gerald Bostock, a gay man who was fired from a government program that helped neglected and abused children in Clayton County, Ga., just south of Atlanta, after he joined a gay softball league. The second was brought by a skydiving instructor, Donald Zarda, who also said he was fired because he was gay. His dismissal followed a complaint from a female customer who had expressed concerns about being strapped to Mr. Zarda during a tandem dive. Mr. Zarda, hoping to reassure the customer, told her that he was “100 percent gay.” Mr. Zarda died in a 2014 skydiving accident, and his estate pursued his case. Most federal appeals courts have interpreted Title VII to exclude sexual orientation discrimination. But two of them, in New York and Chicago, have ruled that discrimination against gay men and lesbians is a form of sex discrimination. In 2018, a divided 13-judge panel of the United States Court of Appeals for the Second Circuit, in New York, allowed Mr. Zarda’s lawsuit to proceed. Writing for the majority, Chief Judge Robert A. Katzmann concluded that “sexual orientation discrimination is motivated, at least in part, by sex and is thus a subset of sex discrimination.” In dissent, Judge Gerard E. Lynch wrote that the words of Title VII did not support the majority’s interpretation. “Speaking solely as a citizen,” he wrote, “I would be delighted to awake one morning and learn that Congress had just passed legislation adding sexual orientation to the list of grounds of employment discrimination prohibited under Title VII of the Civil Rights Act of 1964. I am confident that one day — and I hope that day comes soon — I will have that pleasure.” “I would be equally pleased to awake to learn that Congress had secretly passed such legislation more than a half-century ago — until I actually woke up and realized that I must have been still asleep and dreaming,” Judge Lynch wrote. “Because we all know that Congress did no such thing.” The case on transgender rights is R.G. & G.R. Harris Funeral Homes Inc. v. Equal Employment Opportunity Commission, No. 18-107. It concerns Aimee Stephens, who was fired from a Michigan funeral home after she announced in 2013 that she was a transgender woman and would start working in women’s clothing. Ms. Stephens died on May 12. “What I must tell you is very difficult for me and is taking all the courage I can muster,” she wrote to her colleagues in 2013. “I have felt imprisoned in a body that does not match my mind, and this has caused me great despair and loneliness.” Ms. Stephens had worked at the funeral home for six years. Her colleagues testified that she was able and compassionate. Two weeks after receiving the letter, the home’s owner, Thomas Rost, fired Ms. Stephens. Asked for the “specific reason that you terminated Stephens,” Mr. Rost said: “Well, because he was no longer going to represent himself as a man. He wanted to dress as a woman.” The United States Court of Appeals for the Sixth Circuit, in Cincinnati, ruled for Ms. Stephens. Discrimination against transgender people, the court said, was barred by Title VII. “It is analytically impossible to fire an employee based on that employee’s status as a transgender person without being motivated, at least in part, by the employee’s sex,” the court said, adding, “Discrimination ‘because of sex’ inherently includes discrimination against employees because of a change in their sex.” Source: Civil Rights Law Protects L.G.B.T. Workers, Supreme Court Rules – The New York Times

    Read at 03:58 pm, Jun 15th

  • MTA's homeless outreach effort a bust, inspector general finds

    MTA’s ‘very expensive’ homeless outreach effort a bust, inspector general finds June 15, 2020 | 2:26am | Updated June 15, 2020 | 3:50am Enlarge Image New York City police officers with the department's homeless outreach division talk to people remaining in the Coney Island station. EPA/JUSTIN LANE The MTA’s multimillion-dollar effort to shrink the homeless population in the city’s subways has been an expensive bust, the agency’s watchdog says in a damning new report. Complaints about vagrants in the system surged after the agency last year revamped its $5 million annual effort to get the unsheltered out of the subways and into shelters — while homeless-related train delays continued apace, MTA Inspector General Carolyn Pokorny’s office found. The “very expensive” and “minimally effective” program cost at least $2.6 million in overtime on top of the contact — but 10-person teams of MTA cops and social workers from contractor Bowery Residents’ Committee lured just three transients out of the system per station per night, the report said. “On the nights OIG staff observed the program, dozens of apparently homeless individuals stayed on the trains for every 1 that accepted services,” IG staff wrote. Despite the MTA’s “good faith” program, delays related to homeless individuals continued their upward trajectory from the first half of 2019, the IG reported. Incidents involving the homeless caused 100 delays per month in January and February. Rider complaints about the homeless, meanwhile, jumped in August after months of decline, the IG said. In February, the last month of available data, the MTA received 550 complaints — nearly twice as many as in February 2019. The teams began trying to coax homeless people out of the system at end-of-line stations last summer after Gov. Cuomo declared their presence on transit “egregious” and “the worst it’s ever been.” But the effort was primarily hamstrung by the MTA’s limited ability to force homeless people off trains and a vast web of societal failures that have increased homelessness, the IG’s office concluded. The IG’s office launched its probe after auditors from state Comptroller Tom DiNapoli’s office accused BRC workers of spending just 26 percent of their time conducting in-person outreach to homeless individuals — half the amount of time required by the firm’s $5 million contract. Pokorny herself went to check out the situation at Grand Central Terminal and Penn Station last year and sent a scathing letter to the agency saying she “saw individuals seeking food in garbage cans just steps from BRC’s Office door and homeless individuals lying on the ground directly outside BRC’s Office.” Ultimately, the IG’s investigation concluded BRC could account for its whereabouts. The MTA, however, failed in several ways to monitor the program and had no clear understanding of what happened to the homeless if they did accept help from BRC. Outreach providers that record homeless people have achieved “placement” if they accept a broad range of services — even services that might have them back in the subways shortly thereafter, the IG found. MTA Inspector General Carolyn Pokorny at a board meeting in 2019.Gregory P. Mango The entire program was effectively placed on hold in May, when the MTA took the unprecedented step of shutting the system down nightly to clear homeless people out and clean trains amid the coronavirus. The agency also instituted new rules prohibiting loitering at stations. The IG recommended the MTA take a long hard look at whether it is worth “spending millions annually” on this scheme when the subways fully reopen — and needs to provide better oversight if so, the report said. The MTA accepted the IG’s findings and pledged change. “We agree that in-depth discussions should be held with partner agencies before enforcement/outreach programs are established — in order to clarify roles, define performance metrics, define clear goals and assign responsibility for gathering and reporting accurate data about any program’s impact.,” wrote Sarah Feinberg, interim president of New York City Transit. Source: MTA’s homeless outreach effort a bust, inspector general finds

    Read at 03:24 pm, Jun 15th

  • Gay rights: Supreme Court grants job protection to LGBTQ workers

    Supreme Court grants federal job protections to gay, lesbian, transgender workers WASHINGTON – A divided Supreme Court further advanced the cause of LGBTQ rights Monday, ruling that a landmark civil rights law barring sex discrimination in the workplace applies to gay, lesbian and transgender workers. The decision was written by Associate Justice Neil Gorsuch, President Donald Trump's first nominee to the court. He was joined by Chief Justice John Roberts and the court's four liberal justices. Associate Justices Samuel Alito, Clarence Thomas and Brett Kavanaugh dissented. "An employer who fires an individual for being homosexual or transgender fires that person for traits or actions it would not have questioned in members of a different sex," Gorsuch wrote. "Congress adopted broad language making it illegal for an employer to rely on an employee’s sex when deciding to fire that employee. We do not hesitate to recognize today a necessary consequence of that legislative choice: An employer who fires an individual merely for being gay or transgender defies the law." The ruling came in three cases, involving two gay men and a transgender woman, from Georgia, New York and Michigan. The cases, heard in early October, are among the most significant on the court's docket this term. The challenges from the fired workers picked up where the same-sex marriage battle left off in 2015, when the court ruled 5-4 that states cannot bar gay men or lesbians from matrimony. What was different this time was the court itself: The author of four major opinions expanding gay rights, retired Associate Justice Anthony Kennedy, has been succeeded by the more conservative Associate Justice Brett Kavanaugh. The three plaintiffs were Gerald Bostock, a former child welfare services coordinator from Georgia; Donald Zarda, a former New York skydiving instructor who died at 44 in 2014 but was represented by his sister and former partner; and Aimee Stephens, a former funeral home worker from Michigan who is transgender, and who died March 12.  Earlier:Gay rights battle against employment discrimination extends beyond the grave, and to the Supreme Court At issue: the text of a 1964 civil rights law barring employment discrimination based on sex, and whether that term should be understood to include sexual orientation and gender identity. Lawyers for the two gay workers said they were fired for dating men, while female employees were not. Lawyers for their employers said they were treated the same as if they were female employees who dated women. Twenty-eight states have little or no workplace protections for the LGBT community. About 4.5% of the U.S. population, or roughly 11 million people, identify as lesbian, gay, bisexual, transgender or queer; 88% of them are employed. Alito, writing more than 100 pages in dissent for himself and Thomas, accused the court's majority of writing legislation, not law. "The question in these cases is not whether discrimination because of sexual orientation or gender identity should be outlawed," Alito said. "The question is whether Congress did that in 1964. It indisputably did not." Writing separately, Kavanaugh said simply: "We are judges, not members of Congress." "Instead of a hard-earned victory won through the democratic process, today’s victory is brought about by judicial dictate – judges latching on to a novel form of living literalism to rewrite ordinary meaning and remake American law," he wrote. "Under the Constitution and laws of the United States, this court is the wrong body to change American law in that way." Federal appeals courts have been split on the question since 2017, when the U.S. Court of Appeals for the 7th Circuit became the first to rule that gay men and lesbians should be covered by the decades-old federal civil rights law. The U.S. Court of Appeals for the 2nd Circuit ruled for Zarda in 2018, but the 11th Circuit, based in Atlanta, ruled against Bostock. The 6th Circuit, based in Cincinnati, ruled for Stephens. Congress has debated the issue for decades but "repeatedly declined to pass bills adding sexual orientation to the list of protected traits" under the law, the Justice Department told the justices. The Democratic-controlled House passed the Equality Act last year, but the Republican-controlled Senate has not considered it. Source: Gay rights: Supreme Court grants job protection to LGBTQ workers

    Read at 02:38 pm, Jun 15th

  • Iceland livestreams 10-year-old McDonald's cheeseburger - BBC News

    Iceland livestreams 10-year-old McDonald's cheeseburger By Georgina Rannard BBC News Image copyright AFP / Angelika OSIEWALSKA Image caption Hjortur Smarason bought this McDonald's meal in 2009 to see how long it would take to decompose When McDonald's closed all its restaurants in Iceland in 2009, one man decided to buy his last hamburger and fries. "I had heard that McDonald's never decompose so I just wanted to see if it was true or not," Hjortur Smarason told AFP. This week, it's 10 years since the seemingly indestructible meal was purchased, and it barely looks a day older. Curious observers can watch a live stream of the burger and fries from its current location in a glass cabinet in Snotra House, a hostel in southern Iceland. "The old guy is still there, feeling quite well. It still looks quite good actually," the hostel's owner Siggi Sigurdur told BBC News. "It's a fun thing, of course, but it makes you think about what you are eating. There is no mould, it's only the paper wrapping that looks old." The hostel claims that people come from around the world to visit the burger, and the website receives up to 400,000 hits daily. Image copyright AFP / Angelika OSIEWALSKA Image caption The meal receives many visitors to its home in southern Iceland In their short existence, the burger and fries have moved around a lot. In the first stage of Mr Smarason's investigation into how quickly the food would decay, it was kept in a plastic bag in his garage. When after three years, he detected little change in its composition, he donated the meal to the National Museum of Iceland. A museum specialist eventually decided they were not equipped to preserve food and it was returned to its original owner, according to Snotra House. "I think he was wrong because this hamburger preserves itself," Mr Smarason commented. After a spell in a different hostel in Reykjavík, the meal moved to its current home. Pictures posted on social media sparked discussion of other robust foods that have resisted the ravages of time. "The health teacher in our high school did this, but just left them on a shelf," commented one Twitter user. "He would point out how even after years they didn't grow mould because apparently there weren't even enough nutrients in it for microbes." Mr Smarason is far from the first person to try this experiment with McDonald's food. Image copyright Snotra hostel Image caption The burger and fries are currently kept in Snotra House, a hostel in southern Iceland Famously, Karen Hanrahan bought a hamburger in 1996 and 14 years later was claiming it looked no different than on the day she'd bought it. In 2010, New York photographer Sally Davies bought a Happy Meal and took a picture of it daily for six months. She claimed it didn't rot, smell bad, develop maggots, or indeed show any sign of going off. A YouTube video comparing the decomposition of burgers and fries from a range of restaurants over two months has nearly eight million views. McDonald's commented in 2013 that "in the right environment, our burgers, like most other foods, could decompose", but that without moisture in the environment, they were "unlikely to grow mould or bacteria or decompose". Senior lecturer in food science at the University of Iceland, Bjorn Adalbjornsson, confirmed this explanation, telling AFP that without moisture, "food will simply dry out". Source: Iceland livestreams 10-year-old McDonald’s cheeseburger – BBC News

    Read at 01:41 pm, Jun 15th

  • Reminder: Accessibility can't be solved automatically - Joe Dolson Web Accessibility

    Reminder: Accessibility can’t be solved automatically The other day, Mike Gifford shared a post from Small Business Trends that talked about how free accessibility plugins cause problems for small business, in which my plug-in WP Accessibility was cited. In that message, he expressed that he was sorry to see my plug-in lumped in with other shady web site accessibility toolbars. But, in all honesty, I’m OK with that. WP Accessibility is definitely different from most of these other so-called accessibility toolbars, in that I’ve worked hard to try and convey awareness that the plug-in absolutely will not solve your accessibility problems. And in that sense, it really doesn’t belong grouped with some of the truly horrific free plugins you can find. But in another sense, it absolutely does: it’s still a tool that people are using in a mistaken belief that they are fixing their accessibility problems, when what they really need to do is fix the root of the problem. No matter what I right, I can tell from the support requests I get that there is an expectation that the plug-in will fix their problems. And some of the features are actually universally beneficial on a long-term or permanent basis. WP Accessibility offers support for the longdesc attribute, can fix some core WordPress problems relating to search forms, and can help you work with alt attributes in your site. But other features are fragile or better solved in other ways. Focus states should be controlled in your theme. The use of ARIA landmark roles should come from your theme. Unnecessary title attributes should be removed from your content manually, rather than depending on possibly too aggressive parsing that WP Accessibility does. Skip links should come from your theme. I’ve been thinking for some time that I need to divide WP Accessibility into two plugins: one that provides features & tools to help you with your site useful in all site, and a second that does all of the stopgap fixes that should really be repaired elsewhere – in the hopes that those stopgap fixes will eventually die. But in the meantime, here’s your reminder: no plug-in, toolbar, or overlay is “fixing” your accessibility problems. They may be sticking a piece of used duct-tape over the gap, but the problem is still there. A tiny change to the underlying structure might break the so-called “fix”, or the fix may cause other, even bigger problems. Here’s some further reading on the problem: If, after reading those articles, you still want to use an overlay to solve your accessibility problems…well, good luck. It’s all you’ll have. Source: Reminder: Accessibility can’t be solved automatically – Joe Dolson Web Accessibility

    Read at 01:25 pm, Jun 15th

  • Should you accept that counteroffer? — Resume Insider

    Here’s the scenario: you have been feeling a little bored at work and aren’t moving up as quickly as you would have liked. So you have been interviewing with other companies. One of those companies has given you a strong offer, which you have accepted. Now you have to give notice. As you poke your head into your manager’s doorway and ask if they have a few moments, your heart is beating like crazy. You’re feeling excitement… and fear. You explain how much you have enjoyed working there and thank them for many great years and then you drop the bomb. You quit. Your manager looks surprised and troubled. Then they come through with something you didn’t expect: a counteroffer. Should you accept it? I mean, it’s a big pay increase and you’ll be able to keep working with some of your friends. The answer is “no.” You should not accept that counteroffer. Early in my recruiting career, my peers and I shared an article on counteroffers with candidates. Back then, articles were made out of paper. It was originally published in 1987. Despite the passage of time, the relevance of that article has not degraded one bit. I’ve posted it below. Counter Offer Acceptance - Road to Career Ruin By Paul Hawkinson Mathew Henry, the 17th century writer, said “Many a dangerous temptation comes to us in fine gray colors that are but skin deep.” The same can be said for counteroffers, those magnetic enticements designed to lure you back into the nest after you’ve decided it’s time to fly away. The litany of horror stories I have come across in my years as an executive recruiter, consultant and publisher provides a litmus test that clearly indicates counteroffers should never be accepted… EVER! I define a counteroffer simply as an inducement from your current employer to get you to stay after you’ve announced your intention to take another job. We’re not talking about those instances when you receive an offer but don’t tell your boss. Nor are we discussing offers that you never intended to take, yet tell your employer about anyway are “they-want-me-but I’m staying-with-you” ploy. These are merely astute positioning tactics you may choose to use to reinforce your worth by letting your boss know you have other options. Mention of a true counteroffer, however, carries an actual threat to quit. Interviews with employers who make counteroffers, and employees who accept them, have shown that as tempting as they may be, acceptance may (and usually does) cause career suicide. During the past 20 years, I have seen only isolated incidents in which an accepted counteroffer has benefited the employee. Consider the problem in its proper perspective. What really goes through a boss’s mind when someone quits? "This couldn’t be happening at a worse time." "This is one of my best people, if I let him quit now, it’ll wreak havoc on the morale of the department." "I’ve already got one opening in my department. I don’t need another right now." "This will probably screw up the entire vacation schedule." "I’m working as hard as I can, and I don’t need to do his work, too." "If I lose another good employee, the company might decide to ‘lose’ me too." "My review is coming up and this will make me look bad." "Maybe I can keep him/her on until I find a suitable replacement." What will the boss say to keep you in the nest? "I’m really shocked I thought you were as happy with us as we are with you. Let’s discuss it before you make your final decision.” "I’ve been meaning to tell you about the great plans we have for you, but it’s been confidential until now.” "The VP has you in mind for some exciting and expanding responsibilities. "Your raise was scheduled to go into effect next quarter, but we’ll make it effective immediately.” "Your raise was scheduled to go into effect next quarter, but we’ll make it effective immediately.” "Your raise was scheduled to go into effect next quarter, but we’ll make it effective immediately.” "Your raise was scheduled to go into effect next quarter, but we’ll make it effective immediately.” "Your raise was scheduled to go into effect next quarter, but we’ll make it effective immediately.” "You’re going to work for whom? You can’t be serious." Let’s face it. When someone quits it’s a direct reflection on the boss. Unless you’re really incompetent or a destructive thorn in his side, the boss might look bad by “allowing” you to go. His gut reaction is to do what has to be done to keep you from leaving until he’s ready. That’s human nature. Unfortunately, it’s also human nature to want to stay unless your work life is abject misery. Career change, like all ventures into the unknown, is tough. That’s why bosses know they can usually keep you around by pressing the right buttons. Before you succumb to a tempting counteroffer, consider these universal truths: Any situation in which an employee is forced to get an outside offer before the present employer will suggest a raise, promotion or better working conditions, is suspect. No matter what the company says when making its counteroffer, you will always be considered a fidelity risk. Having once demonstrated your lack of loyalty (for whatever reason), you will lose your status as a “team player’ and your place in the inner circle. Counteroffers are usually nothing more than stall devices to give your employer time to replace you. Your reasons for wanting to leave still exist. Conditions are just made a bit more tolerable in the short term because of the raise; promotion nor promises made to keep you. Counteroffers are only made in response to a threat to quit. Will you have to solicit an offer and threaten to quit every time you deserve better working conditions? Decent and well-managed companies don’t make counteroffers…EVER! Their policies are fair and equitable. They will not be subjected to “counteroffer coercion” or what they perceive as blackmail. If the urge to accept a counteroffer hits you, keep cleaning out your desk as you count your blessings. So if you are giving notice and feel that your employer may be interested in retaining you, be strong and resist the allure of the counteroffer, no matter how flattering it may seem. It’s not about you, it’s about them and how much they need you. Source: Should you accept that counteroffer? — Resume Insider

    Read at 01:21 pm, Jun 15th

  • Defund the Police? Turning a Slogan into Policy - Democratic Socialists of America (DSA)

    Defund the Police? Turning a Slogan into Policy June 15, 2020 by Max B. Sawicky To advance #BlackLivesMatter, we should advocate measures that are both effective and politically tenable. As on most issues, there is a wide array of ideas as to what those might be. On the radical end of the spectrum is the self-identified ”abolitionist” movement, reflected in the Black Lives Matter organization (BLM) and the Movement for Black Lives coalition (M4BL). On the reform end is the #8cantwait project of Campaign Zero. The marquee slogan of abolitionism is “Defund the police.” The raspberries leveled at Mayor Jacob Frey of Minneapolis, after he announced his disagreement at a rally, suggests that ”Defund” has taken over the streets. The #8cantwait alternative to “Defund” is led by DeRay McKesson. It is often identified with Black Lives Matter, and McKesson has claimed to be a leader of BLM agitation. In fact, BLM and M4BL are wholly separate organizations that do not overlap with Campaign Zero. McKesson came out of the anti-union Teach for America operation and is networked into the Democratic Party and the NGO/foundation world. #8cantwait claims its proposals are “research-based.” Whatever you think of its platform, it has received pointed criticism from BLM activists. McKesson and #8cantwait are also the objects of bitter criticism on Twitter. To be fair, BLM, M4BL, and Campaign Zero have all received corporate donations. While policy wonks chew over Campaign Zero’s proposals, the protests have put the ‘Defund’ slogan front and center. Liberals claim that it really means something else – some kind of reorganization of police departments. You could think of it that way, but the authors of the slogan insist that it really means abolition of police departments. “Defund” need not mean a utopian world without any police, but it does leave open the question of alternatives. Absent substantive proposals, those who hear the slogan could be forgiven for defaulting to a literal translation–namely, no police force at all. At least for the time being, this position is a political non-starter according to polling on the topic. The political vacuum left by such a “non-reformist reform,” also described as “starving the beast,” will be filled by very reformist reforms. For example, there are demands to cut the budgets of police departments and reallocate the money to mental health services, youth programs, and community alternatives to incarceration. There is no doubt that those funds could be used for better purposes, and the implied rebuke to police departments might encourage better police behavior. But from a reform standpoint, budget cuts are limited and, after the marches peter out, easily reversed. In the wake of the recession and virus-related expenses, state and local governments are already under extreme pressure to cut across the board. The prospects for more ample, local public sectors are dim, absent decisive action by the Congress. Money freed up by cuts to police budgets will be at risk of  vanishing into the ether. The most powerful force weighing on local police funding is the Republican Senate’s refusal to consider emergency aid to state and local governments. Abolitionists have offered this well-circulated graphic. The basic frame for criticism is that reforms must reduce the power of the police. The objective is change that challenges the legitimacy of policing itself, which verges on a demand for the State to cancel itself. Incremental reforms of the #8cantwait sort often rely on what could be called self-regulation of police behavior – an honor system, such as the demand for body cams. This requires that officers actually turn their body cams on or leave them on in times when they would rather turn them off. Another is the plea to show badges not covered by tape to prevent their identification. In principle, governments can discipline police who fail to follow the rules. In practice, this is difficult. Police are a political power unto themselves. They can make life difficult for citizens and business owners. When they unionize, their power is enhanced. The more likely remedies lie somewhere in the space between #8cantwait and abolitionism. The most relevant in the #8cantwait menu is the demand for institutions capable of policing the police, what used to be called civilian review boards (CRB). Ideally, these boards would command the internal affairs divisions of the police departments and have the power to investigate, discipline, fire, arrest, and prosecute police officers guilty of misconduct. In principle, they would be a police force whose beat is the regular police force. In an era of ubiquitous camera phones, where police are under constant threat of being recorded committing crimes, the workings of a CRB could have a positive impact on behavior. The abolitionists reject CRBs on the grounds that they have never been strong enough to achieve any results. But on those grounds, we could reject the entire abolitionist platform. There is always the matter of policy, which goes to whom we elect to public office. Over the past few weeks, a wide assortment of liberal mayors, both black and white, have been exposed as either incapable of or unwilling to direct their police to focus on public safety, rather than counterinsurgency. In other words, if less police time were wasted on moving around large crowds of law-abiding demonstrators, officers could be deployed to prevent violence and property damage. The failure of a medley of liberal mayors who have found pressure from police to be more galvanizing than that from the people who elected them opens up a new political space. To fill that space, a new movement needs organization and a program that goes beyond three-word slogans. The danger is that an #8cantwait posture of noodling with reforms and herding people into support for lackluster Democratic politicians will coopt protest energy and stave off more compelling solutions. In this respect, the more broad-brush, transformational approach of the BLM/M4BL side is more in keeping with electoral campaigning. The political opening places new opportunities and new burdens before socialists. We will have to get more specific about positive reforms and more discriminating about self-avowed reformers. After all, some of the failing mayors themselves came up as critics of police misconduct. Now more than ever, there is potential for progressive electoral campaigns, founded on candidates who make firm commitments to change. Candidates need not declare themselves socialists; such affirmations are as easily abandoned as anything else. But steps can be taken to cement them into progressive positions. The key disciplining mechanism is the establishment of independent organizations that can make credible threats to withdraw political support, when necessary. An added source of flexibility is that third party candidacies are more feasible at the local level. There is not as much of a penalty if a left campaign causes a centrist to lose to a right-wing candidate. We can survive conservative mayors. Surviving another four years of Donald Trump and his Senate is altogether a different thing. In general, the objective should be to create something durable out of the current, unprecedented upsurge. Very few such opportunities ever present themselves. It would be a tragedy to let this one pass by.   /sidebar Source: Defund the Police? Turning a Slogan into Policy – Democratic Socialists of America (DSA)

    Read at 01:13 pm, Jun 15th

  • Interview with Shubhodeep Mukherjee, Tech Lead at Paytm Insider | Developer to Manager

    Hello! What's your background and what do you do? Hello world! I’m Shubhodeep, a self-taught (but inspired by many) developer, still learning and navigating through my journey as a Tech Lead at Paytm Insider. My journey with software development started at a very early age. At the age of 15, I remember watching “The Social Network” movie, and it somehow made me excited about programming. Movies have always been a source of inspiration for me. At that time I didn’t know much of programming, only the bits that were being taught in my school, which was beginners Java. But I was determined to learn, even though the lack of proper internet access was a big pain point. I remember borrowing an O’Reilly book on PHP from the school’s library, and going through page by page, and trying to understand each and every line and syntax. I was lucky enough to have Linux (Ubuntu) as my primary OS, which helped a lot in basic setup and normal blockers I would face while learning to code. With time I learned web development with a keen interest in workings of programming languages. After that, it made sense for me to get a CS degree, so I did my B.Sc in Computer Science from Vellore Institute of Technology in Vellore, India. I am very glad to have joined this particular college, because it gave me the exposure and competition I needed. I met such great programmers and people during my college time. It gave me a great kickstart in my career and a boost to my learning. How was your transition from software development to management like? Almost a year back, I had expressed my desire to lead a team at some point to my manager. I had no expectation that I would be given the opportunity so soon. My manager became my mentor, and helped me through the ways to work at a high pace and taught me how important my work was. I had been an individual contributor for almost 2 years and was always more comfortable to work alone. But I would credit my manager and my team that helped me get out of my comfort zone, and push my limits. I feel, we all are managers, if you are an individual contributor, then you are managing yourself, and it is a big task in itself. To learn how to manage your time, and able to fit your work and your extra-curricular. Before I was a Tech Lead, I was managing myself. This realisation made the transition a lot smoother. What does your day-to-day work look like, and what motivates you to do it every day? There has been a drastic change in my routine since I took up the role of Tech Lead. Earlier as an IC, it was quite simple. I was free to choose my time of work. But being a TL means taking your team into account to manage your time. I start my work roughly around 9:30 AM. Before that I spend time learning for myself, usually by watching talks and listening to podcasts. At 9:30 AM, I sit down to clear any spillovers from the last day, which usually are any pending doubts from my team and any code dependencies that I had on me to complete. We have our daily standups at 11:00 AM, which is very helpful for me to take into account if my team is blocked on something and if I can help them. I try to squeeze in my breakfast along with the standup call. After the standup calls, I schedule meetings with my team to discuss their issues and blockers in their tasks. Between these meetings, I work on code (re-)architecture,code reviews, and ad-hoc tasks which are dependencies/blockers for my team . Usually my day gets stretched until 7PM with meetings and dependencies, after which I take a break for around 2 hours before coming back to work. I take this time to focus on pure coding work. I code for roughly 3-4 hours, complete my tasks and find new issues that can be worked on. I use Notion religiously. I manage my day, my tasks and everything there is on Notion. I find it the most perfect tool for my needs. It helps me document work, work on ideas and keep track of my todo list. What are the biggest challenges you've faced so far? What did you do to overcome them? The biggest challenge I have faced so far is to delegate tasks to my team members. I have always had an attitude to pick all the tasks for myself. This attitude made it really hard for me to not pick a task for once and instead, hand it over to my team. But with time I realised how important it is to distribute work within the team, and it helps everyone to grow as a team. Another challenge I faced as a Tech Lead was to say “I don’t know the answer”. It is expected of a Technical Lead to have answers to all the technical doubts that a team could have. But the truth is, it is not possible for a single person to have all the answers. I learned this with time. I learned how to say “I don’t know the answer to your question”. The more important thing is to figure out how to find the solutions to those questions. It could be that someone in the team is already proficient enough to answer that. In general though, it’s important to encourage a culture of research. As a lead, one should encourage people to learn and give them chances to make errors (so they can then learn from those errors). What has been the biggest surprise so far? Something you didn't expect? I was surprised to see how well my team accepted me. There is no lead without a team, and a lead is as good as its team. I am surprised everyday with how different people work with each other so well, and help each other to achieve their goals. Everytime we complete a task as a team, I am in awe of how well it went, or if we ever screw up, how easy it is to get back up as a team. What's the best advice you've received about being a manager? I have had many mentors in my career, and I have tried my best to learn from them. One of my mentors told me once, Being a Tech Lead means giving 130%, though it didn’t make sense then, but as time passed as a lead, I found it to be true. That 130% includes management and being a programmer. What do you tell developers who are considering making the switch or new to the role? Before making the switch, consider it very carefully. Being an individual contributor is no less than being a manager. But it is also necessary to experience and take up new opportunities, and examine yourself and your potential. There is clearly no harm if you later want to get back to being an individual contributor. One should always know what they are best at. Final call to action! Where can we go to learn more about you? You can find me at http://shubhodeep.xyz. I am very active on my twitter (https://twitter.com/shubhothegreat) and my linkedin (https://www.linkedin.com/in/shubhodeep9/). Always ready for a quick chat on interesting topics, so feel free to reach me. Don’t forget to visit Paytm Insider and checkout cool digital events on our platform. Source: Interview with Shubhodeep Mukherjee, Tech Lead at Paytm Insider | Developer to Manager

    Read at 01:02 pm, Jun 15th

  • Opinion | Could Trump Turn a Vaccine Into a Campaign Stunt? - The New York Times

    In a desperate search for a boost, he could release a coronavirus vaccine that has not been shown to be safe and effective as an October surprise. Dr. Emanuel and Dr. Offit are professors at the University of Pennsylvania. A vial with a potential Covid-19 vaccine at Novavax Labs in Rockville, Md., earlier this year.Credit...Andrew Caballero-Reynolds/Agence France-Presse — Getty Images Oct. 23, 2020, 9 a.m., with 10 days before the election, Fox New releases a poll showing President Trump trailing Joe Biden by eight percentage points. Oct. 23, 2020, 3 p.m., at a hastily convened news conference, President Trump announces that the Food and Drug Administration has just issued an Emergency Use Authorization for a coronavirus vaccine. Mr. Trump declares victory over Covid-19, demands that all businesses reopen immediately and predicts a rapid economic recovery. Given how this president has behaved, this incredibly dangerous scenario is not far-fetched. In a desperate search for a political boost, he could release a coronavirus vaccine before it had been thoroughly tested and shown to be safe and effective. There are 123 candidate Covid-19 vaccines in development, and 10 are in human trials. Many have not even been tested, or only perfunctorily tested, in animals. In July, the National Institutes of Health is planning to begin randomized phase III trials to test whether some of the 10 vaccines prevent infection with coronavirus. Some pharmaceutical companies are planning to start their own trials at about the same time. Astra Zeneca has already mentioned it plans to begin delivery of its vaccine in October. [Follow our Live Coronavirus Vaccine Tracker.] Pfizer is planning to give its vaccine to approximately 8,000 patients. The N.I.H. is planning to enroll 30,000 participants — 20,000 getting a candidate vaccine and 10,000 research controls. By comparison, the Phase III effectiveness trial for one rotavirus vaccine, RotaTeq, to prevent diarrhea involved about 70,000 infants from 2001 to 2004 and another rotavirus vaccine trial, Rotarix, involved 63,000 infants, from 2003 to 2006. Researchers are expecting that it will be likely to take at least another eight to 12 months to determine whether these coronavirus vaccines are effective. Scientists have to wait until a sufficient number of patients are exposed to coronavirus to see if the vaccine really reduces the infection rate, as well as how many people develop uncommon side effects. For comparison, the effectiveness trial for the rotavirus vaccines took about four years and the human papillomavirus vaccine studies to prevent cervical cancer took seven years. So could Mr. Trump really pull an “October Surprise” with a vaccine less than five months from today? One highly unlikely possibility is that recruitment of volunteers in a coronavirus “hot spot” would be so rapid that it would allow for an adequate assessment of the vaccine’s safety and effectiveness very quickly. There is another scenario that is far more ominous: Three months after the N.I.H. trials begin in July — so, mid October — studies reveal many patients are developing high levels of antibodies to the coronavirus without severe side effects. As the White House did with its relentless promotion of hydroxychloroquine as a cure, it would badger the F.D.A. to permit use of the vaccine. More pressure would come from drug companies, some of whom may spend up to $1 billion on research and are intensely competing for prestige and glory. They are planning to begin manufacturing their vaccine candidates at-risk — that is, before completed studies showing their vaccine is actually effective. Cognizant of the fate of Rick Bright — the head of the Biomedical Advanced Research and Development Authority, who was summarily demoted when he resisted the president’s wishes to ramp up purchase of hydroxychloroquine — the F.D.A. could issue an Emergency Use Authorization for one or more vaccines. These authorizations only require that the F.D.A. finds it “reasonable to believe” that a vaccine “may be effective” in preventing a life-threatening disease for it to be put on the market, without being formally licensed. An emergency authorization would allow Mr. Trump to hold his news conference and declare victory. But like President George W. Bush’s “Mission Accomplished” proclamation, it has the potential to be a travesty. Millions of vaccines could be distributed without proof that the vaccine can prevent disease or transmission. No vaccine since the 1950s has been approved and licensed without completing large, prospective, placebo-controlled studies of safety and effectiveness. Even if a vaccine generates antibodies, it does not prove that the vaccine is effective at preventing infection; it only makes it more likely that the vaccine would be effective. Indeed, about half of the vaccines for other diseases that work and are on the market actually lack clear immunological correlates for protection, meaning they are effective but patients’ antibodies, immune cells or other markers do not identify whether a patient is protected. Even with the initial trials, we are likely to have scant data on whether older people will mount an immune reaction and be protected. Giving people a false sense of being protected will most likely lead to serious outbreaks of the disease as people reduce their compliance with physical distancing and other public health measures. If only 20,000 participants receive the vaccine, serious but rare side effects might be missed. If such harms eventually arise, it could further erode a fragile vaccine confidence and threaten the ability to get enough people vaccinated to establish herd immunity. That would be a disaster. We were once in a situation very similar to the current one. Like Covid-19 today, polio in the 1950s was a horrific disease feared by every parent. Each summer 1,500 children died and as many as 30,000 became paralyzed for the rest of their lives. Jonas Salk produced his vaccine and tested it on 700 children in the Pittsburgh area. It was safe and produced antibodies. But proof that it was effective at preventing polio was demanded. A randomized, controlled trial was required before the vaccine would be licensed and distributed. More than 400,000 children got the vaccine and 200,000 got placebo. Only after this effectiveness trial was completed was the Salk vaccine licensed and all children finally protected from the dreaded disease. The F.D.A. must require more than the production of antibodies to approve a vaccine, even for an emergency authorization, much less licensing. Only when the independent data safety and monitoring board composed of physicians, researchers and biostatisticians reviews the accumulated trial data to assess the safety and effectiveness of the vaccines, should the F.D.A. be allowed to decide on approval. Thousands of Americans have already died as Donald Trump has perpetually postponed effective public health interventions and made poor therapeutic recommendations. We must be on alert to prevent him from corrupting the rigorous assessment of safety and effectiveness of Covid-19 vaccines in order to pull an October vaccine surprise to try to win re-election. Ezekiel Emanuel, @ZekeEmanuel, is professor of medical ethics and health policy at the University of Pennsylvania, a member of Joe Biden’s coronavirus task force, and author of the forthcoming book “Which Country has the World’s Best Health Care?” Paul Offit is professor of pediatrics at the University of Pennsylvania, co-inventor of the rotavirus vaccine and author of “Overkill: When Modern Medicine Goes Too Far.” The Times is committed to publishing a diversity of letters to the editor. We’d like to hear what you think about this or any of our articles. Here are some tips. And here’s our email: letters@nytimes.com. Follow The New York Times Opinion section on Facebook, Twitter (@NYTopinion) and Instagram. Source: Opinion | Could Trump Turn a Vaccine Into a Campaign Stunt? – The New York Times

    Read at 12:54 pm, Jun 15th

  • All tech is political | Go Make Things

    Source: All tech is political | Go Make Things

    Read at 12:52 pm, Jun 15th

  • NYTimes Op-ed warns of a Trump 'vaccine' October Surprise

    There is no bottom with this man. None. If anyone else were president, this type of suggestion would sound like some CT out of left field. Unfortunately, we have a deranged sociopath in the Oval Office, one who has already proven his utter disregard for American lives, and one who is literally facing potential jail time if he fails to get re-elected, so quite honestly, all bets are off, including the following scenario: Oct. 23, 2020, 9 a.m., with 10 days before the election, Fox News releases a poll showing President Trump trailing Joe Biden by eight percentage points. Oct. 23, 2020, 3 p.m., at a hastily convened news conference, President Trump announces that the Food and Drug Administration has just issued an Emergency Use Authorization for a coronavirus vaccine. Mr. Trump declares victory over Covid-19, demands that all businesses reopen immediately and predicts a rapid economic recovery. Drs. Ezekial J. Emanuel, an oncologist and bioethicist, and Paul A. Offit, a pediatrician who specializes in immunology and infectious diseases, are the authors of an alarming Op-ed, published in Monday’s New York Times , titled “Could Trump Turn a Vaccine Into a Campaign Stunt?”   Dr. Offit is also the co-inventor of a rotavirus vaccine. Both are professors at the University of Pennsylvania. And both are worried right now. Emanuel and Offit believe that based on Trump’s prior record of contempt for medical science and given his penchant for exaggerating the benefits of unproven cures to stoke his own political prospects, the scenario described above is well within the realm of possibility. Specifically, they believe that “In a desperate search for a political boost, [Trump] could release a coronavirus vaccine before it had been thoroughly tested and shown to be safe and effective.” The authors note that the National Institutes of Health will be conducting trials on at least 10 different potential vaccines during the summer with Astra Zeneca and Pfizer poised to conduct larger-scale administration of their sample vaccines into October. However, that is just the end of the beginning, so to speak, to determine whether such vaccines are actually safe across the population. Researchers are expecting that it will be likely to take at least another eight to 12 months to determine whether these coronavirus vaccines are effective. Scientists have to wait until a sufficient number of patients are exposed to coronavirus to see if the vaccine really reduces the infection rate, as well as how many people develop uncommon side effects. The authors allow that one possible (but highly unlikely) scenario that would expedite the process is would be an unusually rapid recruitment of a huge volunteer group in a COVID-19 “hot spot,” which could theoretically provide enough data to determine a vaccine’s reliability and safety. But they consider another possibility, one which would appear to provide an irresistible temptation to someone like Donald Trump. There is another scenario that is far more ominous: Three months after the N.I.H. trials begin in July — so, mid October — studies reveal many patients are developing high levels of antibodies to the coronavirus without severe side effects. As the White House did with its relentless promotion of hydroxychloroquine as a cure, it would badger the F.D.A. to permit use of the vaccine. More pressure would come from drug companies, some of whom may spend up to $1 billion on research and are intensely competing for prestige and glory. They are planning to begin manufacturing their vaccine candidates at-risk — that is, before completed studies showing their vaccine is actually effective. The authors suggest that Trump has laid the potential groundwork for applying such political pressure to the FDA, and they cite the demotion of Rick Bright after the latter resisted Trump’s efforts to promote hydroxychloroquine as a “miracle cure” for the novel coronavirus. Under intense pressure from administration officials faced with poll numbers in October as poor or worse than what Trump is facing now, the FDA could issue an “Emergency Use Authorization”  which requires a much lower standard of reliability for the dissemination of any vaccine. According to the authors, such an “Emergency Use Authorization” would “only require that the FDA  finds it ‘reasonable to believe’ that a vaccine ‘may be effective’ in preventing a life-threatening disease for it to be put on the market, without being formally licensed. As the authors point out, this would provide Trump with an opportunity to declare “victory” over the COVID-19 pandemic, a declaration that would almost certainly be looked favorably on by Wall Street and the financial markets. They theorize that Trump could easily dovetail such a declaration with emphasis on an imminent economic recovery as a consequence. Millions of Americans would thereby be permitted to receive a vaccine that was untested and essentially unproven by the rigorous, “large, prospective, placebo-controlled studies of safety and effectiveness,” that have preceded the distribution and licensing of every vaccine produced in this country (such as the polio vaccine) over the past 70 years. The current trials scheduled to occur pre-October involve, at the most, 20,000 patients receiving the actual vaccine (as opposed to the research control). According to Emanuel and Offit, that is not nearly enough to determine whether a vaccine is safe for use in the general population, even if antibodies are produced. As they note, the presence of antibodies in a trial vaccine does not equate with prevention of infection, much less the prevention of infection among a more susceptible, elderly population.  But human nature being what it is, a false sense of being protected among those so “immunized” would almost certainly lead to higher risk behavior and further potential outbreaks. Donald Trump and the sycophants within his administration have amply demonstrated their ineptitude and complete indifference towards Americans’ health and lives in their gross mishandling of the Covid-19 pandemic. We already know there is no bottom, no limit to which Trump will not stoop when he finds himself threatened. Sadly, sacrificing American citizens to the altar of his re-election prospects isn’t remotely beyond his capacity for malevolence. Source: NYTimes Op-ed warns of a Trump ‘vaccine’ October Surprise

    Read at 12:45 pm, Jun 15th

  • My career story.

    As I’ve had more early career folks reach out about mentorship, the most frequent question has been about my technology career story. I genuinely don’t think my story is a good one to learn from because I’ve walked a path dependent on a great deal of privilege and luck. That said, at some point it’s easier to simply write the story and let folks decide that for themselves. In telling my story here, I’ve centered on the role of privilege and luck, with the hope that it steers folks away from trying to learn too much from it. There is a very different framing that I would use when I’m trying to impress folks, and it’s up to the beholder to decide which framing is more honest. The financial disclosure aspects of this were inspired by Maia Bittner’s A Complete History of My Wages, which was in turn inspired by Ashley C. Ford’s appearance on Longform Podcast. After you’re underwhelmed by my career story, if you’re still looking for career advice, some of my favorite pieces on that topic are: A forty year career, You only learn when you reflect, Some career advice, and Career narratives. Early I grew up in Asheville, North Carolina in an upper-middle class family, eventually moving to nearby Leicester. I did not grow up writing software or take any computer science classes, but we did have a computer in the house from the time I was four. I did work on my high school’s IT team, formatting computers, replacing broken parts and so on. I lived in western North Carolina until I went to college at Centre College in central Kentucky. It was a small school of about 2,000 students and the year that I graduated there were roughly seven Computer Science graduates including me. Only one of my classmates went to Silicon Valley after graduating, with the others staying in the southeast. I graduated from college without debt thanks to family assistance. The week before I graduated from college, I started my blog, Irrational Exuberance. A few months later I left to spend a year teaching English in Japan. I was in a remote location, and spent most of my time outside of work writing software projects and blog posts. At one point I tried monetizing my blog, and got about $500 of donations mostly from one tutorial series on PyObjC, but that’s the only direct income I’ve made from it, and I haven’t tried to directly monetize it since roughly 2009. I also did my first paid software work that year in Japan, when Joel Hooks hired me to write a custom internal Django frontend. Joel found me from my blog posts about using Django. I worked on the project after work and on weekends, and believe in total I got paid $500. To be exceedingly clear, I was grateful to get paid at all and Joel went far out of his way to make this possible for me. Teaching English wasn’t the career for me, and after my one year contract ended I was ready to leave. I had no reference point on how to run a job search, but was fortunate enough that the Yahoo! BOSS team reached out to me about potentially contracting for them after I wrote a series of blog posts on their API launch. However, Yahoo! had a series of hiring freezes where it was unclear for about six months whether they’d be able to hire me. I lived with my then girlfriend in New Jersey, and tried a number of different things to move forward. I did contract work with one of my classmate’s older brother to rewrite a Common Lisp application for a small company in Germany. We didn’t know how to scope an engagement properly, and we did not get paid for our work. I also partnered with my friend Luke Hatcher to launch Monocle Studios and ship our one completed project, an early iPhone tower defense game. As those projects wound down, the hiring process with Yahoo finished up and I was hired as a remote contractor working from the East Coast with a team in San Jose. I’ve forgetten some of the details but I negotiated an hourly rate of roughly $75/hour which they accepted, and then six months later they gave the final offer it was at $50/hour, which I accepted because I needed the job. At the time I assumed they were simply comfortable screwing me, although looking back it’s equally likely it was an honest mistake. Like many companies, Yahoo had a policy of only hiring contractors for a year at a time to minimize the tax risk of contractors being reclassified as employees. When I’d been there twelve months, I learned that I had to either move to Silicon Valley to take a full-time position or immediately lose my job. A month later I was living in San Francisco and a full-time employee at Yahoo. They initially offered me a base salary of $90k and a small number of shares (I don’t remember, but maybe $20k worth of shares over 4 years or some such), but after I accepted the recruiter called me back to say that they thought I wouldn’t stay long if I took such a low offer and they increased my base salary to $100k. Silicon Valley I stayed at Yahoo! for another year, at which point the team had lost most of the folks I enjoyed working with and I slowly realized it was toxic. I forget the Yahoo terminology at this point, but after a year of full-time work I was promoted from the first level of engineer (junior eng? L1? Not sure) to the next level (mid-level engineer? L2?), and got a raise of 13% and some number of options. I left shortly thereafter and never exercised or sold any Yahoo option, largely because I simply didn’t understand how they worked. One of my previous Yahoo coworkers joined Digg and referred me there as well. Digg negotiated me down from my salary of $113k to roughly $105k. I was told I was over their compensation bands and it was a stretch to make even that offer. They must have given me equity but I don’t remember how much. I was hired as a Software Engineer. Compared to making $35k/year teaching English or failed contract work, $105k still seemed pretty good. I joined at a fairly pivotal moment before the Digg V4 launch, after which point most of the tenured members of the team quit or were laid off. The company shrank from roughly 100 people in the company to about 25 over my first year. At some point I was given the title Engineering Manager without a compensation adjustment. As more folks left, I was the only remaining engineering manager at Digg and was given the title Director of Engineering and my salary was increased from $105k to $150k. I was also given an equity increase, although I don’t recall how much. I believe these compensation and title adjustments were exclusively due to the intervention of one person, Keval Desai, looking out for me, and it’s no exaggeration to say that in that moment he shifted my life’s trajectory. As Digg exhausted its raised funds with a struggling business model and no hope of raising more capital, we ran an acquihire process and were sold to SocialCode. The Digg equity ended up having no value, but I was given a retention package as part of the acquihire. The other major draw was continuing to work with the team I’d gotten close to over the previous two years. All retention packages were negotiated by the outgoing Digg CEO on behalf of the team, and my salary compensation remained the same along with a retention bonus structure. The acquiring company did not offer equity, although they later experimented with issuing LTIPs. About a year after the acquisition, I was given the title of Vice President of Platform Technology, although I believe my compensation was not adjusted. After two years at SocialCode, I left and joined Uber where I was referred by a previous coworker from Digg. I was hired with the title of Engineering Manager, the lowest engineering manager level. I’d been managing a team of roughly 13-15, but joined Uber to manage a team of five working on SRE. I think my base compensation was flat from SocialCode to Uber, and I believe it was $160k. I might have taken a small decrease in salary, but if I did it was in the range of $5k. I also got an equity package that was considerably larger than my previous compensation. I didn’t negotiate my offer, because they told me I was above their compensation range. Despite having only three and a half years of engineering management experience, Uber was the first time I worked in a company with engineering managers who were more experienced than I was. Although the processes were far from perfect, simply being exposed to process at all created a period of tremendous personal growth and learning. After six months, I was promoted to Sr Engineering Manager due to the intervention of my manager, Oliver Nicholas. I did not advocate for my promotion or contribute to the promotion process. Over my two years there, we grew the team through external hiring from five folks to seventy. I learned a tremendous amount along the way. I also burned out with the workload. Around that point, my manager joined Stripe and sometime afterwards I followed. I joined as an Engineering Manager to support a team of roughly 25 folks working on infrastructure engineering. I negotiated to roughly maintain my existing compensation. To retain my equity after leaving Uber, I had to raise a low six figures of cash within thirty days, and an additional low six figures to cover taxes six months later. I was only able to do this because of the retention package from Digg’s acquihire, which I had left in a checking account for the last three years due to little knowledge about investment. (I later read A Random Walk Down Wall Street and the sidebar resources in r/financialindependence, both of which have been instrumental for my understanding of investing.) I agonized over this decision, which was almost certainly the correct decision if you’re spending someone else’s money, but less obviously correct when it comes to allocating your life’s earnings. Joining Stripe was a career transformation for me. Looking back at my writing history, after I left Digg I had lost the ability to write, and it was only around the time that I joined Stripe that I reemerged as someone once again capable of writing. As you might imagine, there were some related personal circumstances as well. I learned and did a lot at Stripe, including writing An Elegant Puzzle, giving my first conference talks, and finally figuring out how to grow my personal network. Levels are private at Stripe, but to the best of my knowledge I was as senior as any other engineering leader who wasn’t the head of engineering throughout my period there. My compensation increased over my time there driven by the valuation’s growth from $5B to $36B in that period. After four years at Stripe, earlier this year I got the opportunity to join Calm as their CTO, a role I’ve been building towards throughout my career at a company I’m deeply proud to be part of, which is where I am today. (Well, today I’m on parental leave for the next few weeks trying to figure out how to care for a newborn, writing a bit more than usual during his naps.) There are a lot of themes to extract and discuss here, and I’ll only mention a couple before letting you go along your way. First, it’s staggering how rapidly privilege compounds, especially financial privilege. If I’d graduated college with debt, I would have spent the Digg acquisition proceeds paying that down rather than saving it. If I’d spent it down, I couldn’t have bought my Uber equity (or would have lost much of the upside to a private buyers group). Second, a lot of career success is picking the right companies, which is only easy in hindsight. Folks sometimes ask me how I am so good at selecting companies to join, and the reality is I’ve been picking companies during an era of extraordinary growth which has made it easy to look smart. Source: My career story.

    Read at 12:38 pm, Jun 15th

Day of Jun 14th, 2020

  • New decade, new theme

    It has been almost a decade since this blog last saw a redesign. In these 9 years, my life changed dramatically. I joined the CSS WG, went to MIT for a PhD, published a book, got married, had a baby, among other things.

    Read at 02:38 am, Jun 15th

  • The Problem With Bill Gates

    Out of all the billionaires I know, I only like Bill Gates. Steve Jobs was an awful person who deleted his employees’ work for fun. Jeff Bezos is a systemic bully. Zuckerberg refuses to admit that no one should have the kind of power he has, so he tries to pretend he doesn’t have it.

    Read at 02:07 am, Jun 15th

  • #8cantwait is Based on Faulty Data Science

    By Cherrell Brown and Philip V. McHarris The founders of Campaign Zero released a set of policy demands this week titled, #8cantwait, based on a study the group conducted four years ago, in 2016. The policies put forth by 8cantwait.

    Read at 01:54 am, Jun 15th

  • The Problem With Community Policing

    We are pleased to publish this critical overview of community policing from the Abolition Research Group, a project launched by students and activists at the City University of New York in 2015.

    Read at 01:01 am, Jun 15th

  • Why Minneapolis Was the Breaking Point

    Black men and women are still dying across the country. The power that is American policing has conceded nothing.

    Read at 03:04 pm, Jun 14th

  • How Public Opinion Has Moved on Black Lives Matter

    American public opinion can sometimes seem stubborn. Voters haven’t really changed their views on abortion in 50 years. Donald J. Trump’s approval rating among registered voters has fallen within a five-point range for just about every day of his presidency.

    Read at 02:51 pm, Jun 14th

  • NYC Council is moving to cut $1 billion from NYPD, sources say

    The New York City Council is moving to cut $1 billion from the NYPD’s budget, according to sources with knowledge of the matter, a potentially historic turning point in law enforcement in the Big Apple.

    Read at 02:45 pm, Jun 14th

  • Zoom Acknowledges It Suspended Activists' Accounts At China's Request : NPR

    Zoom Acknowledges It Suspended Activists' Accounts At China's Request END CLASS="STORYTITLE" END CLASS="STORY-TOOLS" END ID="STORY-META" CLASS="STORY-META HAS-BYLINE" Zoom acknowledged Thursday that it had suspended three accounts belonging to activists at China's request. Two of the accounts belonged to U.S.-based activists and the third to a labor leader in Hong Kong. Mark Lennihan/AP hide caption toggle caption Mark Lennihan/AP Zoom acknowledged Thursday that it had suspended three accounts belonging to activists at China's request. Two of the accounts belonged to U.S.-based activists and the third to a labor leader in Hong Kong. Mark Lennihan/AP Teleconferencing company Zoom acknowledged it shut down the accounts of several activists and online commemorations of the Tiananmen Square massacre at China's request. The revelation followed media reports, citing Hong Kong and U.S.-based activists, who found their accounts suspended. Zoom confirmed the reports, in a blog post Thursday, saying China had notified it in late May and early June of four public gatherings hosted on the platform. According to the post, China asserted the activities were illegal and requested the events and hosts' accounts be terminated. Zoom said it determined a majority of participants in three of the events came from China and shut them down. The host accounts for the gatherings were then suspended. "Zoom does not currently have the ability to remove specific participants from a meeting or block participants from a certain country from joining a meeting," the company said. None of the three accounts — two belonging to U.S.-based activists and the third to a Hong Kong activist — were based in mainland China. The company said it would no longer block accounts outside of mainland China at Beijing's request, but did not say outright how it would handle such requests that affect users within mainland China. Instead, Zoom said, it would develop technology to block users based on geography. "This will enable us to comply with requests from local authorities when they determine activity on our platform is illegal within their borders; however, we will also be able to protect these conversations for participants outside of those borders where the activity is allowed," the company said. Thursday's acknowledgement also drew the attention of U.S. lawmakers, over Zoom's cooperation with Chinese authorities. On Friday, a bipartisan group of senators, including Marco Rubio, R-Fla., and Ed Markey, D-Mass., sent a letter to the company's CEO Eric Yuan. In the letter, lawmakers asked which Chinese laws mandated that the company suspend the accounts of U.S.-based activists Zhou Fengsuo and Wang Dan. The senators also wanted to know why the company terminated the account of labor leader Lee Cheuk Yan who is based in Hong Kong. Lawmakers called the suspensions deeply concerning. "Your company has admitted that it did so at the request of the Chinese government to comply with the laws of the People's Republic of China (PRC), because some of the participants resided inside the PRC. ... Zoom's millions of daily users across the world who support and demand basic freedoms deserve answers," the senators wrote. On Friday, Lee told NPR that his event was part of a series of weekly talks: "Is China's autocratic regime a threat to the world?" He said he found his account was blocked just before the third session. "If you said that, you know, you follow the law of [a] country, but that country [suppresses] free speech. ...Which side are you on? Free speech or suppression of free speech?" Lee said. NPR's John Ruwitch contributed to this story. END CLASS="TAGS" END CLASS="SHARE-TOOLS SHARE-TOOLS--SECONDARY" ARIA-LABEL="SHARE TOOLS" END ID="NEWSLETTER-ACQUISITION-CALLOUT-DATA" DATA-NEWSLETTER="{"NEWSLETTERID":"NEWS","TITLE":"DAILY NEWS","MARKETINGHEADER":"SIGN UP FOR THE NPR DAILY NEWSLETTER","FREQUENCY":"EACH WEEKDAY","SHORTDESCRIPTION":"CATCH UP ON THE LATEST HEADLINES AND UNIQUE NPR STORIES, SENT EVERY WEEKDAY.","CONTENTIMAGE":"HTTPS://MEDIA.NPR.ORG/ASSETS/IMG/2018/07/18/DAILYNEWS-JUNE27-SCREENCAP-CROPPED-SMALL_CUSTOM.PNG","STATICMARKUPDIR":"/BUCKETS/TOPICS/HEADER1001.HTML","BRANDINGDIR":"/BRANDING/SECTIONS/NEWS/","BRANDINGLINK":"HTTPS://WWW.NPR.ORG/SECTIONS/NEWS/","ORGANIZATIONID":1,"RECAPTCHASITEKEY":"6LFD6CYUAAAAAIBEUEKWZ9KCJF4UYLFTU7NWNAEK"}" END ID="CALLOUT-END-OF-STORY-MOUNT" END ID="END-OF-STORY-RECOMMENDATIONS-MOUNT" CLASS="RECOMMENDED-STORIES" ARIA-LABEL="RECOMMENDED STORIES" Source: Zoom Acknowledges It Suspended Activists’ Accounts At China’s Request : NPR

    Read at 02:40 pm, Jun 14th

  • 8:46 - Dave Chappelle

    From Dave: Normally I wouldn't show you something so unrefined, I hope you understand To find out more about how you can support the Equal Justice Initiative go here: support.eji.org/chappelle

    Read at 02:39 pm, Jun 14th

  • Mentoring from privilege.

    A couple weeks ago, Sean Page tweeted to match engineering and product manager mentors with BIPOC mentees. I’m amazed at the ability of the internet to create these sort of special congregations, and raised my hand. A good number of folks reached out asking if I’d mentor them, and as I started trying to respond to them, I realized I needed to spend more time trying to understand a few core questions: How can I be a valuable mentor? How can I mentor from a position of privilege without causing harm? Here’s what I pulled together. How can mentorship be valuable? Before talking about mentorship, I think it’s always helpful to consider Lara Hogan’s distinction between sponsorship and mentorship which she explores in What Does Sponsorship Look Like?, as well as her Mentoring + Sponsoring talk. Lara defines mentorship as “Giving advice, based on your experience,” whereas sponsorship is taking an active role in helping someone: recommending them for a role, pushing for their promotion, and so on. It’s clear that sponsorship is more impactful than mentorship, but here I specifically wanted to focus on mentorship on the theory that it has the potential to be more scalable, as well as an effective entry pathway to sponsorship if the mentorship relationship goes well. Although I’ve slowly eased into mentoring over the past few years, I’ve never been particularly comfortable in the mentor role, in part because it was only recently that I’ve figured out how to work with mentors myself. Because of that, I also wanted to look around for general resources on how to mentor well, particularly appreciating the advice from First Round Review’s How to Be a Career-Changing Mentor. The advice that felt most effective to me was: Being explicit about areas where you’re able to give mentorship, along with where you’re not able to give mentorship. I’ve written mine up in Ways I’m available to help. Coach mentees on how to be effective mentees. In particular, I think this is helping folks get good at bringing specific, narrow questions that are answerable. Be thoughtful about when coaching techniques, especially asking good questions, might be more appropriate. Whenever possible, tell stories that folks can draw their own conclusion from rather than giving explicit advice. Don’t give advice about things you don’t know about. Be kind, but also unfailingly honest. How do you avoid harm? Cate Huston says that “Mentors give you perspective. Sponsors give you opportunities,” which is a wonderful description, and leads me to the second question I wanted to spend time considering: how can I, as someone with considerable privilege, mentor folks without that privilege, when my perspective is deeply shaped by my privilege? Many mentees are coached to start their mentorship relationship by asking for their mentor’s personal story, but, wow is my story not applicable for most folks. I think there are aspects of my story that could be reproduced successfully, but that reproducing most aspects would be more likely to set folks up for frustration than success. What I think I can do to maximize help and minimize harm is: Invest into understanding my privilege. Do not give advice about things I don’t know about, for example I don’t have a helpful perspective on breaking into the technology industry and decline to give advice on it. In these cases, offer alternative avenues for mentorship/learning when possible. Ground my stories in the context of my privilege as opposed to generalizing them as “how things work.” Explicitly call out behaviors or experiences that I understand to have hinged heavily on privilege and would be risky if performed with less privilege. Incorporate counterpoint stories from peers and coworkers with different degrees of privilege and who have had different experiences. Putting together these notes has been very helpful for me, but this is an area that I feel like I'm still very early in my understanding. I'm grateful for any additions or suggestions from folks on how to be a better mentor, particularly in the context of mentoring from a position of privilege. Source: Mentoring from privilege.

    Read at 02:10 pm, Jun 14th

  • Confessions of a Former Bastard Cop

    Confessions of a Former Bastard Cop is an essay allegedly written by a former police officer with ten years of experience in “a major metropolitan area in California with a predominantly poor, non-white population”. In it, he attempts to explain the system under which cops are trained and operate, “not to excuse their behavior, but to explain it and to indict the structures that perpetuate it.” At the very least, this essay corroborates what activists have been saying about the police for decades. I could write an entire book of the awful things I’ve done, seen done, and heard others bragging about doing. But, to me, the bigger question is “How did it get this way?”. While I was a police officer in a city 30 miles from where I lived, many of my fellow officers were from the community and treated their neighbors just as badly as I did. While every cop’s individual biases come into play, it’s the profession itself that is toxic, and it starts from day 1 of training. Every police academy is different but all of them share certain features: taught by old cops, run like a paramilitary bootcamp, strong emphasis on protecting yourself more than anyone else. The majority of my time in the academy was spent doing aggressive physical training and watching video after video after video of police officers being murdered on duty. I want to highlight this: nearly everyone coming into law enforcement is bombarded with dash cam footage of police officers being ambushed and killed. Over and over and over. Colorless VHS mortality plays, cops screaming for help over their radios, their bodies going limp as a pair of tail lights speed away into a grainy black horizon. In my case, with commentary from an old racist cop who used to brag about assaulting Black Panthers. And this, uh, training doesn’t prepare officers for what their actual job ends up being: And consider this: my job as a police officer required me to be a marriage counselor, a mental health crisis professional, a conflict negotiator, a social worker, a child advocate, a traffic safety expert, a sexual assault specialist, and, every once in awhile, a public safety officer authorized to use force, all after only a 1000 hours of training at a police academy. Does the person we send to catch a robber also need to be the person we send to interview a rape victim or document a fender bender? Should one profession be expected to do all that important community care (with very little training) all at the same time? To put this another way: I made double the salary most social workers made to do a fraction of what they could do to mitigate the causes of crimes and desperation. I can count very few times my monopoly on state violence actually made our citizens safer, and even then, it’s hard to say better-funded social safety nets and dozens of other community care specialists wouldn’t have prevented a problem before it started. Armed, indoctrinated (and dare I say, traumatized) cops do not make you safer; community mutual aid networks who can unite other people with the resources they need to stay fed, clothed, and housed make you safer. I really want to hammer this home: every cop in your neighborhood is damaged by their training, emboldened by their immunity, and they have a gun and the ability to take your life with near-impunity. This does not make you safer, even if you’re white. His conclusion: “consider abolishing the police” and “creating a society focused on reconciliation and restorative justice instead of punishment, pain, and suffering — a system that sees people in crisis as humans, not monsters”. As someone who did it for nearly a decade, I need you to understand that by and large, police protection is marginal, incidental. It’s an illusion created by decades of copaganda designed to fool you into thinking these brave men and women are holding back the barbarians at the gates. More about... Source: Confessions of a Former Bastard Cop

    Read at 02:06 pm, Jun 14th

Day of Jun 13th, 2020

  • Sorry, but the Irish were always ‘white’ (and so were Italians, Jews and so on)

    “Whiteness studies” is all the rage these days. My friends who teach U.S. history have told me that this perspective has “completely taken over” studies of American ethnic history.

    Read at 03:28 am, Jun 14th

  • Yes, We Mean Literally Abolish the Police

    Because reform won’t happen. Ms. Kaba is an organizer against criminalization.

    Read at 03:26 am, Jun 14th

  • How TypeScript design patterns help you write better code - LogRocket Blog

    TypeScript is a language that has seen a lot of exposure in the modern world of software engineering. Its powerful, strict type system reduces the likelihood of running into errors during runtime or hidden bugs in production due to the lack of strong types in, JavaScript, TypeScript’s predecessor. While TypeScript makes the development experience smooth on its own, it’s important to know how a design pattern can help retain or improve the efficiency and usefulness of a codebase. Using the right design pattern in the right situation and knowing how to do so is a crucial skill in any developer’s toolbox. Prerequisites and outcomes The implementation language is TypeScript, but design patterns are language-agnostic, so the concept and the logic behind them are what is most important. To follow along, you should have: A strong background in JavaScript and TypeScript A good understanding of data types After reading this tutorial, you should: Understand the importance of design patterns in a modern codebase Know how to implement the observer, builder, and prototype design patterns in TypeScript Understand the concept behind each design pattern and be capable of implementing them in any language The observer pattern: I know what happened to you The observer design pattern creates a system to which objects subscribe. When there’s a change to an object they’re observing, all subscribers are immediately notified. This circumvents the necessity to notify all objects when a change happens in a specified object. Concept The observer design pattern involves two groups: the ones that subscribe to changes (observers) and the one(s) whose changes are observed (object). The object must have an array or list to hold the observers. This list or array is manipulated by two methods to either add or remove an observer. There must also be a method to notify all the observers when the object changes. Implementation Think of a situation where multiple patients did their tests at a hospital for the nCovid-19 virus. They are now awaiting their test results. To notify them when their results are ready, you can use the observer design pattern. An interface of the observer is created to define its structure and types. Each observer has a method called sendMessage() that is called during the notification process. It does not return anything. interface IObserver { sendMessage(): void } The Hospital is the object. It contains an array of observers, two methods to manipulate the array, and a method to notify all the observers. class Hospital { private observers: IObserver[]; constructor() { this.observers = []; } addObserver(observer: IObserver) { this.observers.push(observer); console.log('Observer added!'); } removeObserver(observer: IObserver) { const obsIndex = this.observers.indexOf(observer); if (obsIndex < 0) { console.error('Observer does not exist!'); return; } this.observers = this.observers.filter(obs => obs !== observer); console.log('Observer has been removed!'); } notifyPatients() { console.log('Sending test result status to all patients:'); this.observers.forEach(observer => observer.sendMessage()); } } The patients are the observers. As such, they’ll have to follow the structure defined by the interface for an observer. class Patient implements IObserver { name: string; constructor(name: string) { this.name = name; } sendMessage(): void { console.log(`${this.name}, your test results are now ready!`); } } Let’s say patients John and Jack are awaiting their test results and have subscribed to the hospital, as soon as the test results are available, they will all be alerted. const hospital = new Hospital() const john = new Patient('John') const jack = new Patient('Jack') hospital.addObserver(john) hospital.addObserver(jack) hospital.notifyPatients() You can use the observer design pattern when there is a need to change the state of a bunch of objects when the state of a single object has changed where the sum of objects is not known. Most subscription systems use the observer pattern at some point. Event listeners in JavaScript are also observers. The builder pattern: Few subclasses, few problems The builder design pattern is self-explanatory. It creates objects but it really shines is when there is a need to create multiple objects with some similarities. Essentially, it allows you to write all the logic to create multiple different objects in the same place. Concept A builder avoids the necessity to create myriad subclasses from a base class or big constructors with a lot of conditional logic using method chaining and by having a single method to add each property to the object. There is one final method to return the object that has been built. Optionally, you could include a method to reset the builder. Implementation Think of a test result in a medical setting. A test result object can have different properties and a few common ones since there are different types of tests. The results of a pregnancy test have different properties than the results of an anemia test. There are also times when a doctor might test for pregnancy and anemia at the same time. This creates an opportunity to use the builder pattern. As usual, we must first create an interface for each test result object to define its structure. HCG is a hormone that is tested for during a pregnancy test. RBC stands for red blood cells, and the availability of RBCs is tested during anemia tests. interface ITestResult { name: string; rbcCount: string; hcgLevel: string; } Each property is defined using its method. Each method must return the builder to allow method chaining. Once, the object is ready, it can be built/returned. class TestResultBuilder { private readonly testResult: ITestResult; constructor() { this.testResult = { name: '', rbcCount: '', hcgLevel: '', }; } name(name: string): TestResultBuilder { this.testResult.name = name; return this; } rbcCount(rbcCount: string): TestResultBuilder { this.testResult.rbcCount = rbcCount; return this; } hcgLevel(hcgLevel: string): TestResultBuilder { this.testResult.hcgLevel = hcgLevel; return this; } build(): ITestResult { return this.testResult; } } You can use the builder pattern to avoid a common issue known as telescoping constructors, which is when you create smaller versions of a big constructor to reduce the amount of logic in the constructor. By using the builder pattern instead of the telescoping constructors’ pattern, you can save yourself the hassle of maintaining multiple constructors. The proxy pattern: The ideal middleman The proxy pattern is an underrated yet powerful design pattern that helps solve some very difficult problems. As the name suggests, the proxy pattern’s goal is to create a substitute for something else so that everything has to go through the substitute first to reach the actual object. Concept The concept behind the proxy design pattern is fairly simple: you have to create a layer above the actual object that everything else has to interact with to get to the actual object. To do this, you must have a reference to the actual object in the proxy object. Implementation Think of a logger that prints some kind of message to the console. You want to include the date and time when each message is printed, but only if the feature is enabled. This logic can be included in the proxy. An interface is created for the logger with a print() method that returns nothing. This interface declares the structure of both the proxy and the actual object. export interface Logger { print(): void; } The proxy has a method called checkEnabled(), which has some logic to determine whether the feature has been enabled. The proxy will have an identical print method that will add the date and time to the message if the feature has been enabled. class Proxy implements Logger { private actualLogger: ActualLogger; private checkEnabled(): boolean { // Some logic to check if // the feature is enabled return true; } public print(message: string): void { if(this.checkEnabled()) { const actualMessage = ` [${new Date().toLocaleString()}]: ${message}`; this.actualLogger.print(actualMessage); } } } The actual logger will have the same print() method without the excess logic to discern whether the feature is enabled or disabled. class ActualLogger implements Logger { public print(message: string): void { console.log(message); } } Proxies are very powerful when used right. You can use a proxy can to perform lazy loading (virtual proxy), implement caching (cache proxy), and control access to objects (security proxy). There are various types of proxies that perform different tasks, but the underlying concept remains consistent. Use the right design pattern in the right situation Design patterns can be classified into three categories based on their intended purpose and the type of problems they solve. Structure-based design patterns describe the logic of the process of putting objects together while ensuring reusability and efficiency (e.g., the proxy pattern) Behavior-based design patterns describe relationships and responsibilities between objects (e.g., the observer pattern) Creation-based design patterns describe the process of making objects while ensuring that code can be reused (e.g., the builder pattern) Knowing how to categorize design patterns directly lends itself to identifying when or when not to use a design pattern. Combining this knowledge with the design pattern itself will empower you to improve the quality of your code. Summary Let’s take a high-level look at everything that we went over in this guide. There are three types of design patterns, classified based on their purpose: structure-based, behaviour-based and creation-based The observer pattern is a behavior-based pattern that allows several objects to be notified of a change in state associated with a particular object The builder pattern is a creation-based pattern that allows you to create a lot of different objects without having to overload constructors or create many subclasses The proxy pattern is a structure-based pattern that allows for a substitute of an object and that everything has to go through to reach the actual object Most importantly, design patterns are language-agnostic and can be implemented in any language to solve the kind of problem that a particular design pattern intends to solve. Check out the following resources to learn more. TypeScript documentation contains resources for JavaScript developers who want to learn TypeScript, as well as a beginner-friendly introduction to TypeScript “JavaScript Design Patterns,” a book by Addy Osmani, explores the design patterns implemented in JavaScript with compelling visuals LogRocket: Full visibility into your web apps LogRocket is a frontend application monitoring solution that lets you replay problems as if they happened in your own browser. Instead of guessing why errors happen, or asking users for screenshots and log dumps, LogRocket lets you replay the session to quickly understand what went wrong. It works perfectly with any app, regardless of framework, and has plugins to log additional context from Redux, Vuex, and @ngrx/store. In addition to logging Redux actions and state, LogRocket records console logs, JavaScript errors, stacktraces, network requests/responses with headers + bodies, browser metadata, and custom logs. It also instruments the DOM to record the HTML and CSS on the page, recreating pixel-perfect videos of even the most complex single-page apps. Try it for free. AI CONTENT END 1 Source: How TypeScript design patterns help you write better code – LogRocket Blog

    Read at 04:27 pm, Jun 13th

  • Aggressive Tactics by National Guard, Ordered to Appease Trump, Wounded the Military, Too - The New York Times

    Some members of the D.C. Guard — comprising more than 60 percent people of color — have not told family they were part of the crackdown. Guard leadership, concerned about public opposition, even warned against buying food from vendors. Video transcript Back transcript Listen: D.C. National Guard General Congratulates Troops on Protest Response Audio from a briefing that National Guard troops received in relation to protests in Washington D.C. The world responded the evangelical guard the eyes of the world were gone. The National Guard. The actions that occurred this past week, were absolutely used to work. And for the United States Armed Forces of the United States Armed Forces communities to have a great credit score. And the d.c. National Guard coupled with the greater gurgaon performed magnificently. I not begin to explain to you those of you on the line know this the risk we have is commanders. Service members out there with ammunition equipment moving in the field everything that everyone else would add to the stress of social battle physical emotional fatigue. It doesn’t go unnoticed. For all intensive purposes, we’re calling that long day. The immediate response day was a night. We want to get out there and joyfully do link analysis to figure out how that happened. Oh, it’s quite obvious how it all happened. If you haven’t heard of Wednesdays consider the Alamo and lobbyist park and the Saturday, which was the six of you was getting. It was a Super Bowl the secretary army was here all week with water in his eyes. On Friday night, June 5 setting conditions for operations on June 6. Audio from a briefing that National Guard troops received in relation to protests in Washington D.C.CreditCredit...Erin Schaff/The New York Times WASHINGTON — A white National Guard commander called the standoff in Lafayette Square “the Alamo,” implying that the White House was under siege. Black members of the D.C. Guard objected to turning on their neighbors. Army leaders told pilots to “flood the box with everything we have” as two helicopters buzzed protesters in the streets. The National Guard is now engaged in an investigation of the havoc a week ago Monday in downtown Washington, similar to after-the-fact examinations more common to battlefields in Iraq and Afghanistan. There will be questions, interviews and competing narratives. But on one point everyone is agreed: The first days of June, a calamitous period for the Trump presidency, have been a debacle for the National Guard. There has been a torrent of criticism from Congress, senior retired military officers and Guard members themselves since more than 5,000 Guard troops — from the District of Columbia and a dozen states — were rushed to the streets of the capital to help in the crackdown on mostly peaceful protesters and occasional looters after the killing of George Floyd in police custody. The D.C. Guard has halted recruiting efforts, and at least four National Guard troops have tested positive for the coronavirus. D.C. Guard members, typically deployed to help after hurricanes, floods and other natural disasters, say they feel demoralized and exhausted. More than 60 percent are people of color, and one soldier said he and some fellow troops were so ashamed in taking part against the protests that they have kept it from family members. “Typically, as the D.C. National Guard, we are viewed as the heroes,” said another soldier, First Lt. Malik Jenkins-Bey, 42, who was the acting commander of the 273rd Military Police Company during the first days of the protests. But last week was different, he said. “It’s a very tough conversation to have when a soldier turns to me and they’re saying, ‘Hey sir, you know my cousin was up there yelling at me, that was my neighbor, my best friend from high school,’” said Lieutenant Jenkins-Bey, who is African-American. Image More than 60 percent of the D.C. National Guard are people of color.Credit...Erin Schaff/The New York Times Interviews with two dozen military officials as well as texts, internet chats, audio recordings, emails and documents obtained by The New York Times also show that: Senior Army leaders — in an effort to prevent what they feared would be a calamitous outcome if President Trump ordered combat troops from the 82nd Airborne Division holding just outside city limits to the streets — leaned heavily on the Guard to carry out aggressive tactics to prove it could do the job without active-duty forces. Guard leaders issued a flurry of ad hoc orders that put thousands of Guard troops in face-to-face conflict with fellow Americans. Some of the Guard troops were just out of basic training, and others had no experience in controlling disturbances in the streets. Troops were allowed to drive heavy vehicles on the streets without the usual licensing. In the next days, the Army is expected to release the results of a preliminary investigation into why the helicopters — a Black Hawk and, in particular, a Lakota with the Red Cross emblem designating it a medical helicopter — came to be used to terrorize protesters in Washington. Ryan McCarthy, the Army secretary, acknowledged that he gave the order for the helicopters to respond, but by the time that order reached the pilots, officials said, it was interpreted as high profile and urgent to disrupt the protests. Officials expect the pilots who flew the helicopters will receive some type of punishment. And when National Guard officials requested written guidance allowing troops without military licenses to drive armored vehicles around Washington, the officer in charge of the task force, Brig. Gen. Robert K. Ryan, said it was a verbal order from the Army’s chief of staff, Gen. James C. McConville. Written confirmation never came, and a Defense Department official with direct knowledge of the situation said General McConville never gave such an order. The D.C. National Guard did not respond to a request for comment. A military Humvee near the White House during protests this month.Credit...Al Drago for The New York Times Around 9:15 a.m. Monday, June 1, more than an hour into Defense Secretary Mark T. Esper’s weekly videoconference staff meeting with officials at the Pentagon, an aide slipped a note to the secretary. “I’ve got to go,” Mr. Esper said, ending the call and summoning top aides for a smaller meeting on security in the capital and in Minnesota. The night before, some demonstrators had hurled projectiles at the police and other law enforcement authorities. The night before that, six National Guard troops had been injured — five hit in the legs with bricks and one hit in the head. Thinly sourced intelligence reports, with no direct corroboration and highlighted in a brief early last week, suggested that fringe groups might try to use car bombs to attack government and law enforcement positions. Mr. Trump himself was enraged by news reports that he had been moved on Friday night, May 29, to a White House bunker because of the protests outside his gates. The president was alarmed and unsettled by the violence, and by Monday, he was threatening to invoke the 1807 Insurrection Act, which would allow him to order active-duty troops into cities across the United States. Gen. Mark A. Milley, the chairman of the Joint Chiefs of Staff, objected, saying it was a terrible idea to have combat troops trained to fight foreign adversaries at war with Americans. A wild scramble ensued to use another option: Summon National Guard troops from other states to reinforce the 1,200 D.C. Guard troops already called up. Unlike other Guard units, the D.C. Guard reports not to a state governor but to the Army secretary, who in turn reports to the defense secretary and the president. Roadblocks operated by the Metropolitan Police, the National Guard and the Drug Enforcement Administration on June 6 in Washington. From the Pentagon and a National Guard operations center on Monday in nearby Northern Virginia, officials held a hastily arranged conference call with all of the commanders of state National Guard forces. The appeal was blunt and urgent: How many troops can you send and when can you send them? Pentagon officials said they preferred troops with previous training in civil disturbances, but they knew they did not have time to be picky. Some states with Republican governors quickly jumped in — Tennessee, South Carolina, Utah. West Virginia’s National Guard sent a reconnaissance plane, typically used for border security and to spot drug smugglers. Along with the troops, National Guard units from other states brought weapons and ammunition. Tens of thousands of rifle and pistol rounds were stored in the D.C. Armory and partitioned in pallets, labeled by their state of origin, to be used on American citizens in case of emergency. Mark T. Esper, the defense secretary, spoke with members of the National Guard on June 1 in Washington.Credit...Jonathan Ernst/Reuters Other states, like California, were dealing with demonstrations of their own and were reluctant to part with any forces. Some Guard commanders, recalling the lessons of the Vietnam War and the Guard shootings that killed four Kent State students in 1970, were deeply concerned about committing their troops to a vaguely defined urban mission that could put their forces in direct contact with American citizens protesting racial injustice. But General Milley and Mr. McCarthy warned the Guard throughout the day that if it could not control the protests, Mr. Trump would most likely call in the 82nd Airborne. The pressure was particularly intense on the D.C. Guard, which had the only sizable military force on the streets. Both Mr. McCarthy and General McConville pressed Maj. Gen. William J. Walker, the commanding general of the D.C. National Guard, to increase his forces’ presence in the city, according to a senior Defense Department official. General Walker likes to call his troops “the President’s Guard” and sometimes even the “Praetorian Guard” because of their unusual chain of command ultimately to the president. He has close ties to the Trump White House: General Walker’s top legal officer, Col. Earl Matthews, once worked as a senior member of the National Security Council and left under the cloud of the Ukraine scandal last year. By 5 p.m. June 1, Lieutenant Jenkins-Bey’s D.C. Guard troops had positioned themselves in a line behind the D.C. police just outside Lafayette Square. The lieutenant had often reminded them that “this isn’t a deployment against the enemy.” A few hours earlier, Mr. Esper had told the nation’s governors in a conference from the White House call with Mr. Trump that troops controlling the protesters needed to dominate the “battle space.” Lieutenant Jenkins-Bey made clear to his troops in the following days where he stood: “We’re not here to dominate any battle spaces or anything like that, our job is simply to stand the line between the police and the citizens so that they can say what they need to say.” Protests on June 1 in Washington were largely peaceful before demonstrators were dispersed using tear gas.Credit...Erin Schaff/The New York Times Mr. McCarthy, who served in the Army’s elite 75th Ranger Regiment during the war in Afghanistan, pored over maps and strategized with Guard and federal officials at a command post set up at the F.B.I.’s Washington field office in the city’s Chinatown district. This micromanagement was a last-ditch attempt to keep active-duty troops outside the city. Military officials scrambled to arrange transport planes to pick Guard members up and fly them to Washington. Most would not start arriving until Tuesday morning, but officials expressed confidence they had enough on hand and en route to tell the president that help was on the way. But the 82nd Airborne, based at Fort Bragg, N.C., along with a military police unit from Fort Drum, N.Y., was still headed to Washington. The question was, where should the Pentagon put the incoming combat troops? Attorney General William P. Barr quickly scuttled one proposal to place them at the Marine Barracks just a mile from the Capitol, saying he did not want the troops in the city. Officials agreed on an alternative plan to deploy them to Fort Belvoir, in suburban Virginia. Thirty minutes before 7 p.m., when Washington’s curfew was to go into effect, U.S. Park Police rushed into a crowd of protesters at Lafayette Square. Lieutenant Jenkins-Bey, in line with his troops behind the police officers, said he was taken by surprise as the assault with tear gas and rubber bullets began. A protester’s face being cleaned after he was sprayed with tear gas on June 1 near Lafayette Square.Credit...Erin Schaff/The New York Times After the assault, General Milley, clad in fatigues, walked across the park behind Mr. Trump and his entourage for a photo opportunity at a nearby church. And, after that, low-flying helicopters sent protesters scattering. “The reason you didn’t see Guardsmen commanded by governors use heavy handed tactics in states is because it devalues them, and increases tension at a delicate moment,” said Jon Soltz, an Iraq war veteran who is the chairman of VoteVets. By Sunday, Mr. Trump — under widespread criticism — ordered the Guard from other states to return home. On Tuesday, during a conference call with commanders on the situation in Washington, General Ryan, the task force commander, likened the defense of Lafayette Square to the “Alamo” and his troops’ response to the huge protests on Saturday to the “Super Bowl.” That military response has already had aftershocks for those in the D.C. Guard. In one mass text sent Sunday, Guard leadership told troops “to be wary of ordering food from outside sources as well as any conversations held while in public places.” “Please be vigilant that some of the DC public does not agree with our mission and may have nefarious intention toward our service members,” the text said. Source: Aggressive Tactics by National Guard, Ordered to Appease Trump, Wounded the Military, Too – The New York Times

    Read at 04:26 pm, Jun 13th

  • Why Are So Many N.Y.P.D. Officers Refusing to Wear Masks at Protests? - The New York Times

    Though the city is recording hundreds of new coronavirus cases each week and some officers have died, many are not heeding instructions to cover their faces. Police officers stood by, unmoved, as protesters shouted “Put on your masks!” during a demonstration in Brooklyn on Saturday.Credit...Demetrius Freeman for The New York Times Riot helmets, ballistic vests, shields, batons — fully decked-out police officers have become staples in New York City as the protests against racism and police brutality approach their third week. But increasingly, one piece of equipment has attracted attention with its absence: the face mask. On any given day, any corner, any group of officers, some or all of them are not wearing masks. Others wear them below their chin. With masks having become as ingrained as shirts and shoes in the vast majority of New Yorkers’ wardrobes, their widespread absence on the police is striking — and to a mayor and governor still fighting the coronavirus pandemic, troubling. “Police officers should be wearing masks,” Gov. Andrew M. Cuomo said during a news conference in Manhattan on Monday. Likewise, Mayor Bill de Blasio, on his call-in appearance on WNYC on Friday, was asked why officers were unmasked. ”I’m frustrated by it, too,” he said. “The policy is police officers are supposed to wear face coverings in public, period.” But he noted that compliance is far from universal: “It has not been happening consistently. I have had this conversation with Commissioner Shea multiple times. It has to be fixed and that bothers me.” While police officers may forgo mask-wearing for any number of reasons, from peer pressure within ranks that are loath to change to a desire to more easily communicate, the images have fueled a perception of the police as arrogant and dismissive of protesters’ health — perhaps even at the peril of their own. And while several officers have conspicuously knelt down with or hugged people at rallies, the widespread failure to use masks is creating a more standoffish look, one that protesters say suggests that the police operate above the rules — one of the very beliefs motivating the nationwide movement. “If you’re out here to protect the public, it starts with you,” said Chaka McKell, 46, a carpenter from Bedford-Stuyvesant who attended a protest in Downtown Brooklyn on Monday. “The head sets the example for the tail.” The official New York Police Department policy is that officers should wear masks when interacting with the public. But in a statement on Wednesday, the department dismissed the criticism about the lack of masks as petty. “Perhaps it was the heat,” Sgt. Jessica McRorie of the department’s press office said in a statement. “Perhaps it was the 15 hour tours, wearing bullet resistant vests in the sun. Perhaps it was the helmets. With everything New York City has been through in the past two weeks and everything we are working toward together, we can put our energy to a better use.” At his daily briefing on Thursday, the mayor responded to the department’s statement, saying that while there may be legitimate reasons for officers to remove their masks, such as to take a drink of water, he reiterated that the city remains “in the middle of a pandemic” and that “overwhelmingly, people need to have face coverings on.” “It is so important that the people of the city see the people they look to to enforce the law actually abiding by the same rules as the rest of us,” the mayor said. “That has to happen to the absolute maximum extent possible among our police officers.” Skipping personal protection may come with a cost. The city is still reporting hundreds of new coronavirus cases each week, and more than 40 members of the Police Department have died of Covid-19, the police said. Just days ago, Commissioner Shea announced the virus-related death of Chief William Morris, who led the transportation division. As of May 29, the most recent date that numbers were made available, 901 uniformed members of the Department — about 2.5 percent of the total number — were out sick, down from 19.8 percent at its peak in April. As of that same date, 5,627 members of the Department had returned to work after testing positive for the coronavirus. Then the protests began, putting the officers, working in large crowds, in the spotlight. The new questions arise during what seems, from the outside, to have been an evolving relationship between officers and protective masks. In the early days of the coronavirus’s arrival in the region, with cases seemingly few and isolated, officers for the most part set the masks aside, with the encouragement of their leaders. On March 20, with the city moving toward a quarantine — bars and restaurants had closed three days earlier — Commissioner Shea was asked at a news conference about officers without masks. “That could very well be a good thing, quite frankly,” he said. “We’re trying to conserve the use of these and use them where appropriate. And I think the medical professionals would tell us that, generally speaking, it’s better to have the masks on the people that are sick as opposed to officers walking around in the street.” Image Police prepared for possible clashes with protesters violating the city’s curfew on June 3. The mayor and governor have chided the police for not wearing masks.Credit...Amr Alfiky for The New York Times At the same news conference, Dr. Oxiris Barbot, the commissioner of the New York City Department of Health and Mental Hygiene, addressed the issue. “The time to use a mask is when someone is symptomatic, when they’re coughing, when they’re sneezing, and it’s to ensure that that individual doesn’t contaminate other folks,” she said. “It gives people who are asymptomatic a false sense of security that if they wear this mask, they don’t have to wash their hands, they don’t have to cover their mouths and their noses when they cough or their sneeze.” Not long after, the governor made masks mandatory for all New Yorkers. Since April 17, anyone visiting an indoor location or unable to maintain social distancing must wear a mask — a striking period of 54 days and counting, perhaps indefinitely for many. And so, the sight of maskless officers, at gatherings that are protesting police behavior nationwide, rankles some. A Twitter account, @nypdmaskwatch, has posted photographs of officers without masks, including their names and badge numbers. At a rally Monday outside Brooklyn’s Borough Hall, 11 of the 13 police officers near one section of the crowd wore masks, with the other two having pulled them down below their chins. But around the corner stood 12 officers, only three wearing masks. At the entrance to the Brooklyn Bridge stood 38 officers and captains. Eight wore masks, some below the nose, while 14 wore them below their chins and 16 wore none. Asked about the masks, officers mostly declined to comment or ignored the question. One officer who was confronted about the matter by a young man in Williamsburg on Saturday responded, “We’ve got more important things to deal with.” One captain who was walking alongside protesters without wearing a mask seemed to suggest the decision falls to the individual officer in the situation at hand. “The focus is staying at peace with the protesters,” said the captain, who declined to give his name since he had no authorization to speak with the news media. “This isn’t the ideal scenario, but we’re doing the best we can. Ideally, officers wear their masks, they take precautions and they stay safe, but our priority right now is the protest and the protesters.” Crista Simiriglia, the manager of the band Sunflower Bean, who was passing out Gatorades from the back of their touring van at a nearby demonstration, was struck by the lack of police masks. “It was very startling and very dangerous,” she said. A musician in the band, Julia Cumming, 24, said she was surprised whenever she sees an officer wearing a mask. “I’ve come to expect them not to,” she said. “It’s just very strange. I’m generally confused. They’re supposed to give this sense of authority.” Nate Schweber, Aaron Randle, Ashley Southall, Luis Ferré Sadurní and Matt Stevens contributed reporting. Source: Why Are So Many N.Y.P.D. Officers Refusing to Wear Masks at Protests? – The New York Times

    Read at 04:18 pm, Jun 13th

  • Building the Woke Web: Web Accessibility, Inclusion & Social Justice – A List Apart

    .entry-header There is no such thing as a single-issue struggle because we do not live single-issue lives. Audre Lorde What would your life be like without the internet? Not if it didn’t exist at all, but if you were locked out of it? Would your days be different? Unrecognizable, even? Keeping your answers to that in mind, do you think access to the internet is a human right? Do we need to be able to access it to fully participate in modern society? To answer “yes” to these questions would have been unthinkable 20 years ago. Article Continues Below Living without internet#section2 Globally, over 40% of people still do not have access to the internet. That lack of access and the issues it creates have helped motivate digital equity initiatives like Tech Goes Home and the Good Things Foundation. Having no access to the internet creates problems in many parts of modern life. In the UK, bank branches are closing, forcing many to do their banking online. Many utilities now require internet access to request or amend services, or get better deals. Civil services, such as registering to vote, are increasingly online. As this continues, people who have no access to broadband or who have limited access to mobile data fall behind—this often includes homeless people, elderly people, and those on low incomes who are already operating at a disadvantage. In the UK, only 37% of people living in social housing are online. Approximately 1 in 5 adults with a disability in the UK have not used the internet recently, and they make up half of the people who have not accessed the internet in the last three months. Globally, the UN target for affordable mobile data is 2% of monthly income for 1GB data, and yet many countries are still nowhere near reaching this goal. Not having access to the internet is expensive, locking you out of essential services and a surfeit of helpful information. Giving people full access to the splendors and knowledge of the online world should be imperative for everyone who works on it. Digital exclusion is when someone is unable or unwilling to access information and services online. In the UK, 10% of the adult population was digitally excluded in 2018. The number of people in the UK lacking basic digital skills is decreasing, but in 2018, 8% of adults in the UK (4.3 million people) were estimated to have zero basic digital skills, which means they are unable to do things like buy items online, verify information, or send an email. Women are more likely to have no basic digital skills.  Being unable to send an email, submit an application online, or use a government site is a huge barrier to civic and societal engagement. Shopping in person, rather than online, can mean you are consistently overcharged for your purchase by as much as 13%. Not knowing how to use computers can mean you earn less in the first place. Not being able to use the internet can mean that you spend more time doing tasks such as registering to vote, paying council tax in the UK, or researching your next holiday.  Being able to access the internet has social and psychological ramifications too. Loneliness is well documented as a risk factor for a number of health issues, as well as early death. Being online can help you feel less alone. Half of all people with disabilities surveyed report feeling lonely in the UK, and a quarter of them are lonely every day. People with disabilities are more likely to be a captive audience to apps and websites using their data inappropriately or engaging in other unethical practices. This may be because they rely on a particular site to interact with other people with disabilities, because they lack the tools to visit other sites, or lack other suitable websites or apps to use. Richer households are more likely to have full basic digital skills. The UK Office for National Statistics found that people without basic digital skills are three times as likely to be in low-income bands. In 2018, 12% of 11-to-18-year-olds had no broadband access on a tablet or computer, which 68% of them said made it difficult to do homework. Further, households in which one or more of their members have a disability make up half of those living in poverty in the UK. Provide non-online options for vital services#section3 If you work in government, food supply, healthcare, or utilities, there is no excuse for not providing offline options. In doing so you are excluding some of the most marginalized people. The internet is amazing, but it is not the only way to share information. A non-exhaustive list of other barriers#section4 Having access to the internet in the first place is one issue, and feeling welcome, or even safe is quite another. Even when your broadband connection is as good as can be hoped for, there are many other ways you can be discouraged or stopped from using the internet. Trolling and threats#section5 Online harassment is one of many barriers stopping people from accessing the internet. Diane Abbott, the first black woman Member of Parliament (MPs) in the UK, received almost half (45.14%) of all abusive tweets sent to female MPs in the run-up to the 2017 General Election that decided how voters would be represented in Parliament and which party would govern. Black and Asian women MPs got 35% more abusive tweets than white women MPs. The abuse directed at Dianne Abott amounted to 10 times as much as was received by any other female MP, according to an Amnesty International study. Mermaids is a charity that supports transgender children and their parents in the UK. Their CEO Susie Green—herself the parent of a transgender child—has been targeted with abuse and threats. The rise in abusive and threatening comments led to Mermaids’ Twitter account having to block up to 20 accounts a day. Trolling isn’t an easy problem to fix. Allowing users to block certain words and hide certain replies on Twitter is a start, but listening to people from marginalized backgrounds and their complaints and ideas would be another critical place to begin.  We need to think long and hard about what good moderation looks like and what guidelines work in online spaces to ensure those accessing them don’t have to wade through a tide of bigotry. Sidelining and hiding certain groups#section6 Information and support online are vital for at-risk LGBT people, whether to help them escape dangerous situations, access support, or find community. Yet in schools, words relating to LGBT issues are often blocked. On YouTube, videos relating to LGBT issues are demonetized, age-restricted, or even removed. This isn’t because the content is sexually explicit or not safe for work. It’s just discrimination. TikTok recently admitted it actively discriminates against certain kinds of users—namely the fat, queer, disabled, low-income, and “ugly”—in certain feeds, under the guise of paternalistic protection from bullying. Exclusionary design#section7 People with disabilities are the original life hackers because our motivation is so high. If we don’t hack we often go without. Liz Jackson, “Designing for Inclusivity” Many people with disabilities rely on screen readers and screen reader compatible sites to use the internet. Screen readers can be prohibitively expensive; while there are free options, one of the most popular screen readers at the time of writing costs nearly $1200 for a professional license. Even with incredible innovation coming from within the disabled community, there’s more that everyone else can do. In their February 2020 evaluation, WebAIM found that 98.1% of the top million websites had detectable WCAG (Web Content Accessibility Guidelines) 2 errors. The most common WCAG 2 failures—such as missing alt text for images, having empty links, and missing form labels—would be relatively simple to fix. Because they’re shared among most websites, concentrating on fixing them would have a huge overall benefit for the internet. But as long as web accessibility standards are applied without rigor, aspects of a vast number of sites remain inaccessible even once users have a screen reader or other assistive technology. Hostile conditions#section8 Inclusion is just as pertinent as accessibility, and tackling only one side of the equation will leave some people just as locked out. Accessibility without inclusion is not real accessibility. The curb cut effect, wherein improving access for people with disabilities improves access for all, isn’t the only reason to increase web accessibility. We have a moral responsibility as tech workers to use any privilege we may have to facilitate, respond to, and support the efforts of marginalized people who are working to carve out accessible spaces for themselves. Hostile conditions, created or reinforced by engineering and design choices, make being on the internet harder for people who are queer, of color, or disabled. They make it more difficult to access life-saving spaces, social spaces, and civic spaces—both on and offline. Thorough accessibility and real inclusion are the solutions to these problems. To survive, marginalized people must work both against and through the abuse and accessibility issues they face on online platforms, whereas everyone else gets to use the internet as they wish. This replicates the injustices of offline in the online world. An incomplete list of solutions#section9 Center the voices and experiences of the marginalized#section10 There isn’t one easy solution but to start finding the solutions that are possible we need to center the voices and experiences of the marginalized. Marginalized people with insights to share aren’t hard to find when you start listening. They are your next users, your future developers, your fledgling marketing team. Excluding them reduces your options, your appeal, and your breadth of ideas. Hire teams that are diverse on every axis#section11 Hiring inclusively creates teams full of people who aren’t like you or each other. And those kinds of teams build better products, bring better ideas to the table, and better reflect the user base of the majority of products. It is important to remember that diversity isn’t just about race or hiring women; there are neurodiverse people, people with physical disabilities, people of other genders, people from various backgrounds, and many other marginalizations than could be listed here. Proactively promote inclusion and harness your team’s diversity#section12 Help disabled and otherwise marginalized people both develop and enforce policies and practices that protect them and allow them to thrive. If there are no disabled people, or otherwise marginalized or underrepresented people on your team, take a hard look at your hiring practices, your work culture, even the layout of your office. If you can’t find these problems, hire experts. Pay specialist consultants and recruiters to root out the problems. This is an investment that makes moral, logical, and business sense. The inclusive team you build will be able to spot potential issues in a way that a squad of people who pattern match to narrow ideas of what a tech worker should look and behave like never would. Create a culture where the marginalized members of your team feel supported, feel heard, and are buoyed through their work with a sense of safety in their workplace. Avoid legal issues preemptively#section13 Beyonce and Domino’s Pizza were both sued under the Americans with Disabilities Act, which contains provisions to force the companies involved to change their websites. Beyonce’s case is still in progress, but Domino’s both lost their suit and had their appeal tossed out. Both cases were about visually impaired people being unable to access their sites and complete purchases. Accessibility is often seen as a costly detour from the “real work” of building projects, but that has never and will never be true. You want users, and users of all stripes want to use your products. The banks HSBC, Metro Bank, and Halifax made it hard for visually impaired users to access all of their services online. When HSBC was told they had made it difficult for a user with visual impairments to access bank statements, they replied, “don’t worry, we’ll send you a video.” The Equality Act 2010 in the UK means that these users can sue. In addition to serving the far more important goal of providing people with disabilities equal access, embracing inclusive design from the outset would have saved these companies time while enhancing their trust among the public rather than putting it at risk. Fixing the content is usually much cheaper for the organization than fighting the matter in court. Advocate for accessibility and inclusivity in any way you can, be it big or small#section14 Caption your videos, Instagram content, Facebook photos, Twitter photos, conference and meetup talks, etc. Make information needed to access your product or service available in multiple formats. Speak up against problems in your workplace; if an internal hiring tool is hard for you to use, it is hard for others. If one of your websites has errors from WCAG 2’s list, advocate for taking time to fix it. If the gender options available on forms are “man,” “woman,” and “other,” speak up yourself, tell your manager, question whether you need to collect gender information at all. Don’t stay silent. Test your website with tools, devices, and real end users#section15 Run tools like axe, ChromeLens, and Lighthouse during your build processes. Do manual testing with the actual devices that are used by your end-users, and test with real users with access requirements. If you’re a team of one or a few, ensure that you run these tools from MVP to finished product—the errors that are the easiest to catch and fix will mostly be caught by automated tools, and they are a great start for learning more about accessibility. Websites such as The A11y Project compile resources, and there are other websites, Slack groups, Twitter accounts, and newsletters that are also incredibly helpful for answering any questions. The automated tools will give you the keywords to search for. Working towards an accessible, inclusive internet#section16 Web accessibility is not an optional extra. What inclusion looks like in practice will depend on your products, your users, and what you intend to achieve, but for it to be real and meaningful in any context, it cannot be an afterthought. Engineering that makes inclusion an afterthought is engineering that operates without morality and in doing so actively enacts harm. The fact that this kind of engineering is commonplace on the internet doesn’t make it OK. It just highlights that the way we have built the web is fundamentally broken. We can do better. “Wokeness,” at least as conceived by those divorced from the black experience and AAVE, isn’t a great concept. The way it is used in popular culture makes it sound as if being a good person is a switch you flip on and off; you’re woke or ’sleep. But wokeness is not the end state, it’s the beginning of a journey. All the tenets of intersectional feminism, web accessibility, and diversity and inclusion are inextricably tied up in making the web a better place, for all and by all. Access to the internet is essential. Staying woke, and acting on that wokeness, is what will lead us to a better internet for everyone. .entry-content Source: Building the Woke Web: Web Accessibility, Inclusion & Social Justice – A List Apart

    Read at 04:09 pm, Jun 13th

  • I was a police chief stopped by my own officer. After Floyd, we need change at all levels.

    George Floyd could have been me. That was my first thought when I saw the video of Minneapolis police officer Derek Chauvin choking the life out of George Floyd.

    Read at 03:02 pm, Jun 13th

  • Here are the indigenous people Christopher Columbus and his men could not annihilate

    The Lucayan did not know it was Oct. 12, 1492. They did not know that their island, in what would become the Bahamas, had been spotted by Spanish explorers led by a Genoese man named Christopher Columbus.

    Read at 02:55 pm, Jun 13th

  • America Is Giving Up on the Pandemic

    After months of deserted public spaces and empty roads, Americans have returned to the streets. But they have come not for a joyous reopening to celebrate the country’s victory over the coronavirus.

    Read at 02:48 pm, Jun 13th

  • Animal Crossing’s massive popularity has made it less like paradise and more like Wall Street

    With hours of extra time on their hands because of social distancing and quarantine, new players to Nintendo’s “Animal Crossing: New Horizons” like Ash Wolf, also known on Twitter as Ninji, have been drawn to the slow, laid-back life simulator that allows them to build idyllic islands, decorat

    Read at 02:27 pm, Jun 13th

  • Trump’s most loyal media ally promised a pro-Trump poll. It didn’t deliver — and then pulled its story.

    President Trump speaks in Charlotte on March 2. (Brendan Smialowski/AFP/Getty Images)June 11, 2020 at 6:42 PM EDTCNN’s release of a poll this week showing President Trump trailing former vice president Joe Biden by 14 points nationally clearly rattled the president and his reelection campaign.

    Read at 02:08 pm, Jun 13th

  • As Public Opinion Shifts on Racism, Trump Digs In - The New York Times

    With much of the country acknowledging that protesters’ frustrations are justified, the president increasingly sounds detached from many voters in the political middle and even some of his allies. President Trump has suggested siccing dogs on protesters and has defended the Confederate names of military installations. Credit...Gabriella Demczuk for The New York Times WASHINGTON — NASCAR is demanding that its fans no longer fly Confederate flags at races. The Pentagon and some Republican senators are open to renaming military bases that bear the names of Confederate soldiers. Corporate America is taking stances against racial injustice. A majority of Americans say the police show racial bias in their use of force, and a majority of self-described conservatives acknowledge protesters’ frustrations are at least somewhat justified. Yet with public opinion shifting quickly on racism in America, and even some of the most cautious leaders and institutions talking openly about discrimination and reconciliation, there is still one glaring outlier: President Trump. Whether it is suggesting shooting protesters or siccing dogs on them, pre-emptively defending the Confederate names of military installations or arguing that his supporters “love the black people,” Mr. Trump increasingly sounds like a cultural relic, detached from not just the left-leaning protesters in the streets but also the country’s political middle and even some Republican allies and his own military leaders. While Mr. Trump has a long history of making insensitive and tone-deaf comments on race, including remarks widely seen as racist, he has never appeared more isolated on a dominant social and political moment in the country, hunkered down at the White House tweeting conspiracy theories about injured protesters and describing demonstrators as “THUGS.” He regularly uses harsh and violent language that no other American leader employs, vocally supporting the views of white nationalists and even defenders of white supremacy rather than the views expressed by majorities of Americans in polls. “He’s talking as if this is a country in the 1950s and not 2020,” said Levar Stoney, the mayor of Richmond, Va., where a multiracial group of protesters has prompted the city and state to take down Confederate statues. At a time when the country is confronting three overlapping crises — the coronavirus, an economic collapse and a reckoning with racism and injustice — Mr. Trump’s inability to demonstrate empathy illustrates the limitations of his political arsenal. He is well equipped to compete in a campaign where slashing negative attacks are the order of the day, and few salesmen speak in superlatives like the former hotel magnate. Yet when the moment calls for neither pugilism nor promotion, he has little to say. Reinforcing Mr. Trump’s instincts and decisions are a small group of advisers, like those who arranged for the president to hold a campaign rally on June 19 in Tulsa, Okla. — on a day dedicated to honoring black emancipation, Juneteenth, and in a city that saw one of the worst episodes of racial violence in the country’s history a century ago. Even if that choice of timing was unintentional, it’s hard to overlook the insensitivity over race when the president’s campaign is selling “Baby Lives Matter” onesies on its website. Image “We are still wrestling with America’s original sin,” said Mitch McConnell, the Senate majority leader, who has praised peaceful protesters. Credit...Erin Schaff/The New York Times On Thursday, in remarks in Dallas, Mr. Trump tried to highlight how black unemployment had fallen before the coronavirus, and noted his administration’s work on criminal justice reform. But he also falsely suggested that the protest movement seeking to “defund the police” would lead to eliminating emergency phone lines. “I heard they want to close up all police forces,” Mr. Trump said. “It’s not like they want to sort of bring a little money into something else. They want it actually closed. I’m thinking, what happens late at night when you make that call to 911 and there’s nobody there?” That remark drew some applause, yet the substance and tone emphasized fear-mongering at a time when many Americans are grappling with how to address police violence. The president sounds even more out of step because of the comments of some of his Republican contemporaries, who have not focused on racial justice during the Black Lives Matter era. “We are still wrestling with America’s original sin,” said Mitch McConnell, the Senate majority leader, who has praised the peaceful protests taking place in, as he noted, his state’s cities and small towns while lamenting “the obvious racial discrimination that we’ve seen on full display on our television screens over the last two weeks.” It is too soon to know whether Republicans like Mr. McConnell — or even large numbers of Americans — will support real action that curbs racial inequality. Mr. Trump’s allies and supporters have rallied around him, time and again. And recent polling shows that many Republicans continue to view some claims of racial discrimination with suspicion. But this week, Democrats have introduced law enforcement overhaul legislation that goes far beyond what they have pushed before. And Mr. McConnell, recognizing the country is demanding action, tapped Senator Tim Scott of South Carolina, the only black Senate Republican, to lead an effort on how to address police misconduct. As the G.O.P. confronts an increasingly forbidding political climate this year, the party is responding to fast-moving polling, which indicates that an overwhelming number of independents and even about half of Republican voters believe George Floyd’s killing represents a broad problem with policing. Yet nearly five years since Mr. Trump announced his presidential campaign with the inflammatory accusation that Mexico was sending rapist migrants across the border, he is still conducting himself as if there’s a vast audience for a hard-line tone on race. And it’s wearing on even some of his most steadfast allies. “We need to have this president and both parties say, ‘We feel your pain,’” said Bishop Harry Jackson, a black pastor who is one of Mr. Trump’s evangelical advisers. “There needs to be a discussion to African-Americans and other minorities that the loss of life historically matters. Everybody’s got to feel that from him.” Politically speaking, Mr. Trump has long sought to align himself with law enforcement and cultural traditionalists. But if he has the support of many of them, his hostility toward the protesters has left him out of sync with many other Americans at a time when his re-election prospects are sagging. “When I saw some of those people breaking into stores, I said, ‘Damn, stop that,’” said former Gov. James B. Hunt of North Carolina, explaining that he was worried the looting would only prompt a moderate white backlash. “But that hasn’t become the story this time. People are seeing things differently today.” Mr. Trump has never had most Americans’ trust on matters of race, helping to explain why he’s struggled to stem the tide of a protest movement demanding racial justice. A peaceful demonstration at the Seattle Opera office last week.Credit...Ruth Fremson/The New York Times Mr. Trump has portrayed protesters as “terrorists” and extremists while praising most law enforcement officers as “great people.” Yet in a Monmouth University poll released last week, 57 percent of Americans — including a majority of white people — said the anger that led to the protests was completely justified. Even among self-described conservatives, 65 percent said the protesters’ frustrations were at least somewhat justified. The data is even more striking among younger people. In a new Washington Post-Schar School survey, 41 percent of Republicans over 55 said they believed the killing of Mr. Floyd reflected a broader problem. That figure grew to 52 percent among Republicans under 55, however. There is a similar generational gap among independent voters. Part of the difference owes to the experience of millennial Christians, who grew up in schools and churches that were integrated, enjoy a more diverse set of friends and are appalled by the police violence against black men they are seeing on their screens. “Younger Republicans want to see racial disparities fixed,” said Wesley Donehue, a South Carolina-based G.O.P. strategist. “If Republicans don’t address these issues now, we will lose the next generation of young voters, just as we have minorities.” What’s remarkable to a number of people across the political spectrum is that Mr. Trump seems to be missing what is all but screaming in neon — clear in everything from the diverse makeup of the protesters to the legions of people sending anti-racist books to the top of best seller lists. “It wasn’t just black people,” DeJuana Thompson, an Alabama-based activist who just returned home from marching in Minneapolis and Louisville, said of her experience. “This is a clarifying moment for our country, and people are being asked to come out of our comfort zones.” Eleanor Holmes Norton, who represents Washington, D.C., in Congress and was active in the 1960s civil rights movement, said she had been struck by how many of the protesters in her hometown have been white. “So many white people have taken this to heart,” Ms. Holmes Norton said. Paul Finebaum, a popular college football talk show host, is detecting that every day on his ESPN call-in show. Mr. Finebaum has had a series of candid and at times awkward conversations about race with callers and coaches, black and white alike, in recent weeks. “This is a watershed moment,” he said, remarking that the white people calling into his show were watching the protests “more open-mindedly than I’ve ever heard before.” Yet on Wednesday, there was Mr. Trump, a native New Yorker, extolling the virtues of Southern heritage in making the case against changing the names of the military bases. His argument seemed even more jarring that night, when a 26-year-old black NASCAR driver, Bubba Wallace, wore a T-shirt that said “I Can’t Breathe” and drove a Chevy with “Black Lives Matter” emblazoned on the side around the Martinsville, Va., track. Randall Woodfin, the mayor of Birmingham, Ala., is seeing changing attitudes in another conservative institution. “C.E.O.s and leaders across corporate Birmingham are engaging their employees and saying, ‘Look, we can’t ignore this conversation, let’s make sure our values are not only in line, but let’s make sure we act on our values,’” Mr. Woodfin said. Mr. Trump is often stilted in such discussions. And he has harbored offensive attitudes on race for years, including his searing attacks on the Central Park Five and his idea, on “The Apprentice,” for an all-white team competing against an all-black team. As Mitch Landrieu, the former New Orleans mayor, put it: “America is grabbing white people’s faces and saying, ‘Look at this, do not turn away’ — and they’re not.” But the most powerful white person in America is averting his gaze, and it appears more discordant by the day. Giovanni Russonello contributed reporting, and Kitty Bennett and Isabella Grullón Paz contributed research. Source: As Public Opinion Shifts on Racism, Trump Digs In – The New York Times

    Read at 02:01 pm, Jun 13th

  • Anger and Demand for Answers as Cops Seem to ‘Deputize’ Inwood Anti-Looting Posse

    The commander of an Inwood police precinct was seen on video unofficially deputizing a group of at least 100 people in a Duane Reade parking lot last week — complete with color-coded armbands — and some residents and elected officials are furious.

    Read at 01:27 pm, Jun 13th

Day of Jun 12th, 2020

  • Generation X and Trans Lives – Whatever

    .entry-header So, I’m going to preface this thing I’m about to write by being as clear as I can be about this, so there’s no confusion or ambiguity on this score: Trans women are women, trans men are men, trans non-binary folks are non-binary folks, and trans rights are human rights. I’m non-squishy on this. I know, like and care for too many trans people to feel otherwise, but even if I didn’t know, like and care for any trans people, I would like to think I would say the same, because the validity of their lives should not be dependent on whether I know them. Moreover, and fully acknowledging my outsider status on this as a straight, cis man, it seems that any attempt to carve out trans people from queer culture runs smack into the fact that arguably there wouldn’t be a modern queer movement without Marsha P. Johnson throwing that shot glass (or brick, depending on who is telling the tale) at Stonewall. Trans people — and trans people of color — were present at the birth of the gay rights struggle in the United States. It’s their story as much as anyone else’s, as far as I can see. They can’t be separated out, nor should they be. With that as preamble: In the last year especially, I have noticed that a not-small number of my contemporaries, some who I like, some who I love, and some whose work has meant so much to me that I find it difficult to express my admiration for it in non-gushy terms, have settled themselves on an essentialist view of who gets to call themselves a man or a woman. Usually there’s some biological component to this, but however it gets put together in their heads, at the end of it is trans people being othered, and estranged from their proper identities. And while one does not have to be in one’s mid-40s to mid-50s to have this essentialism as part of one’s worldview, I certainly notice it the most in that group of people — in Gen-Xers, that slice of the population curve that I’m part of. There are Gen-Xers who I otherwise find myself in alignment with in terms of issues of the rights of women, with (cis) gays and lesbians and with people of color, but then have a sharp break on matter of the rights and identities of trans people. It might be that I notice this schism because I’m a Gen-Xer, and so statistically speaking more of the people I know are of my generation. But I don’t think it’s just that. I think it’s possible that — in very general terms — every group identified as a “generation” has a group that it, for whatever reason, still sees as an “other” in some significant way, and for cis Gen-X people, it’s trans people. It’s certainly true enough that trans jokes other cultural othering were still acceptable in the media Gen-Xers grew up with: the plot of Ace Ventura, Pet Detective, of all movies, hinged on it (as did the plot of Soapdish, pitched to a different demographic). The Crying Game relied on its protagonist being surprised at someone’s trans identity. There was the recurring gag of Chandler’s trans parent in Friends. These are the obvious examples, which is why I name them, but there are a whole bunch of other examples one can name. This isn’t to excuse cis Gen-Xers denying trans identity as valid, nor is it to make a facile argument that Gen-X trans othering is the fault of popular culture. We can’t blame it all on Friends. There’s a lot going on in the culture, and how we have built our identities as people, that I’m not touching on here, primarily for brevity. But it is to make the point that even as Gen-X had (arguably, and depending heavily on political/social background) understood itself to be racially diverse, and (again arguably and depending on political/social background) made the cause of gay rights its own civil rights struggle, there was still a culture frontier — an other, for its cis members: Trans people. Millennials seem to me to be far less likely to exclude trans people from their cohort, and from what I see of Generation Z to date, they simply assume gender identity is fluid to a greater or lesser degree. It’s the cis members of Generation X who, it seems, have to do the real work of digging into their own biases and assumptions about gender — and their own discomfort with trans identity — and make the effort to change a worldview that implicitly and explicitly on the outside of it. And it is work for us — look, folks, I’m gonna be honest with you: I didn’t get to being able to say “trans rights are human rights” and actually meaning it without some real work and effort. As (just) two examples, fifteen years ago, I’m pretty sure I wouldn’t have seen what the big deal was with deadnaming people, and it literally wasn’t until I saw a friend on Twitter being taken to task for it that I understood that “tr***y” was an actual and genuine slur. I can’t think of a time when I was actively transphobic, but I certainly sucked in a lot of passive transphobia over the years, and I wouldn’t be surprised if somewhere along the line some of it came out of me, too. (If somehow you find something out there where I’ve been transphobic: sorry. There’s no excuse for it. I’m not going to say I’m a better person now, but I will say that I’ve done work on myself to do better. And if I fuck up now, well, Jesus. Call me on it, please, and I’ll keep trying to be better from here on out.) Some time ago I talked about sexism and I made the observation that if one’s understanding of what sexism is stopped in the 1970s, the 21st century was gonna be a real rough ride. Well, guess what: If your understanding of what sex and gender mean is stuck at the turn of the century, 2020 is going to come for you, and it’s not going to be nice about it (2020 isn’t nice about anything). Understanding one’s own sexism, or racism, or homophobia, or transphobia, isn’t about reaching some plateau and getting to stop. You have to keep working at it. Which can be fucking tiring, you know? Now I get why so many people who were 20 or 30 years older than I was would tell me proudly that they marched with MLK or protested in the 60s: Because it was a way of saying “here’s my resume, I’m on the side of angels.” But the 60s were the 60s, and now is now. The fight’s not the same and sooner or later, generationally speaking, there’s always something to trip over. I will tell you how it makes me feel seeing people in my age cohort — people I like, people I love, and people whose work I respect and admire — trip over trans rights and identity: It makes me feel old. It makes me feel like my generation has joined all the other generations who had a blind spot in their vision of who gets to be “really real” in the culture. And just as Gen-X looked at older generations and thought smugly to themselves “well, we’ll just wait for them to die off, and that problem will be solved,” now we’re the generation that younger generations will look at, shrug off, and wait to be launched into eternity. And, yes, #NotAllGen-Xers, but you know what? Enough of us Gen-Xers to be noticable. The Gen-Xers I like, love and admire who are struggling (to charitably put it) with trans issues are all over the board. Some are rich, some are not. Some are educated, others aren’t. Some are famous, some are known only to friends and family. Some are white and some are people of color. Some, I think, might eventually get it. And some of them, well, won’t — either just because, or because eventually too much of one’s identity is tied up into their position on trans identity, and there’s no easy way back from that. I don’t think it’s the responsibility of Millennials or Gen-Z folk to do anything about Gen-Xers who trip over trans issues or who can’t or won’t listen. Those Gen-Xers (usually) aren’t your parents; you don’t don’t owe them that service. I don’t think it’s the responsibility of the Gen-Xers who are better about trans issues either — but I do think there might be a better chance that the former might listen to the latter better than to anyone else, when it comes time to talk about these things. Because it’s often easier to listen to friends and to members of one’s own cohort, with whom you otherwise have things in common, and some lived experience. So I come back again to the issue of the Gen-Xers who I like, and who I love, and whose work I honor, who resist the idea that trans women are women, and that trans men are men, and that trans lives are valid as they are. They’re wrong about that, and if it turns out they will listen to me say that — and then explain why, as patiently and with as much kindness as I can provide, to the extent that I as a cis, straight man can — then I will count myself lucky to be able to tell them, and to hope that they will think about what I have to say. It’s not my responsibility, but I remember the times when friends, with patience and kindness, explained to me how and why I was wrong on something important. It helped me then. Maybe I can pay that forward. Until that time, and again: Trans women are women. Trans men are men. Trans non-binary folks are non-binary folks. Trans rights are human rights. .entry-content .entry-footer #post-## Post navigation .nav-links .navigation #comments Source: Generation X and Trans Lives – Whatever

    Read at 11:47 pm, Jun 12th

  • Is Dark Mode Such A Good Idea? - Kev Quirk

    Is Dark Mode Such A Good Idea? .entry-meta I’ve decided to stop using dark mode across all of my devices, because research suggests that going to the dark side ain’t all that. The darkness is everywhere. In fact, this very site that you’re on right now automagically flips to dark mode if you’re that way inclined. There’s lots of hyperbole flying around about why the darkness is better than basking in the warm glow of light mode. You know what, I really love using dark mode because it’s easier to read, doesn’t strain my eyes and saves my battery. Techbros everywhere I was one of these techbros. I’ve used those very excuses in the past to justify my use of the darkness. But after doing some research on dark vs light, I’ve made the decision to stop using dark mode everywhere. Here’s why… It’s Easier To Read A nice dark screen with light text is easier to read, right? Well, according to multiple studies, that’s wrong apparently. The Nielson Norman Group, sum this up well in their post about dark mode, saying: Results showed that light mode won across all dimensions: irrespective of age [of the individual], the positive contrast polarity [light mode] was better for both visual-acuity tasks and for proofreading tasks. Humans have evolved to hunt during the day. On a biological level, our eyes prefer the contrast between a light background and dark foreground. When I was in the military, a key tactic of camouflage was to never, under any circumstances, expose yourself on a hilltop or similar, where your silhouette could be easily identified. A dark blob on a light background is far easier for the human eye to see, than the reverse. Eye Strain Many people quote light mode as being a contributory factor to eye strain. Based on the reading I’ve done, this doesn’t appear to be true. The NN Group also cover eye strain in their post: The human pupil is the gateway to the retina: through it, light reaches the eye. By default, the human pupil changes size depending on the amount of light in the environment: when there is a lot of light, it contracts and becomes narrower, and when it’s dark, it dilates to allow more light to get in. Smaller pupil sizes make the eyes less susceptible to spherical aberrations (in which the image appears unfocused) and increase the depth of field, so people don’t have to work so hard to focus on the text, which, in turn, means that their eyes are less likely to get tired. Many people perceive light mode as the cause of eye strain. But blue light, among other things, is actually the cause of it most of the time. This is covered in more detail by Vice, where they say: A 2018 study published in BMJ Open Ophthalmology notes that blue light could be a factor in eye tiredness, but cites dry eyes from not blinking for long periods as a more serious cause of eye strain, as well as too-small fonts, and conditions like uncorrected astigmatism. That’s part of the reason why I use nice large fonts on this website. I hate it when a website loads with a 12px serif font that just looks like a blur, even when I have my glasses on. A better remedy for eye strain would be to enable night light on your operating system, which will reduce the your screen’s blue light output. Also, take regular breaks and make sure you’re blinking often enough! If headaches and eye strain persist, go see an optician. I had the same problem about a year ago; it turns out I am long-sighted and require glasses. Since then, my headaches and eye strain have pretty much stopped. Dark Mode Saves Battery Unless you’re using an OLED or AMOLED screen and your dark mode is truly black – not dark grey, not dark blue, BLACK. There is no difference in power consumption. How many dark sites or applications actually use true black for their dark background? Not many. Most use either a dark grey, or dark blue. This site included. MakeTechEasier elaborate on the whole OLED/AMOLED vs standard LCD argument. When an OLED/AMOLED pixel is black, it’s turned off, so no power is used. Yet power is still required for LCD to display black pixels. Android Authority carried out tests using dark mode on a device with an AMOLED screen. The results showed a reduction in battery consumption by around 41%. Credit: Android Authority So although this argument holds some water, the majority of phones on the market are LCD. Around 30% of devices had AMOLED/OLED screens in 2019, and they are not projected to hit a majority market share until 2023 (source). Conserving my device’s battery is the least of my concerns though. My health is far more important. Besides, I spend the vast majority of my time on my laptop or desktop, both of which have LCD screens. AMOLED/OLED is still rare in the laptop/desktop space. Conclusion According to the reading I’ve done, dark mode isn’t easier to read and it doesn’t prevent eye strain. However, in very specific circumstances it can improve battery life. I’m sure there are people out there who genuinely need dark mode for a specific health condition. For that reason, there will continue to be a dark mode on this site. But if you’re like me, and just prefer dark mode, you may be making things more difficult for yourself and actually damaging your eyes in the long run. This post is day 04 of my #100DaysToOffload challenge. If you want to get involved, you can get more info from https://100daystooffload.com. Posted in: 100 Days Opinion Tech Source: Is Dark Mode Such A Good Idea? – Kev Quirk

    Read at 10:15 pm, Jun 12th

  • Eugene's Coding Blog | Rate Limiting An Express App

    Rate Limiting An Express App Imagine we have an API with multiple end-points written in NodeJS and using Express. And we want to implement a rate limit on this API for each user (pretty common for any API). The general code-structure of that would look like something this: 1import * as express from 'express'; 2 3 4const router = express.Router(); 5 6router.all('*', (req, res, next) => { 7 8}); 9 10 11 12 13 14export default router; linkNaive Solution To apply a global 10 seconds rate limit, we could write the middleware code like this: 1import * as express from 'express'; 2 3 4const router = express.Router(); 5 6let lastReq; 7 8router.all('*', (req, res, next) => { 9 const now = new Date(); 10 if (!lastReq || (lastReq - now) > 10000) { 11 lastReq = now; 12 next(); 13 } else { 14 res.status(429).send(); 15 } 16}); 17 18 19 20 21 22export default router; This looks a bit hacky, since there is a global variable that is being updated by a middleware function. We could of-course clean this up a bit by writing a custom middleware function: 1export function rateLimit(duration) { 2 let last; 3 4 return (req, res, next) => { 5 const now = new Date(); 6 if (!last || (last - now) > duration * 1000) { 7 last = now; 8 next(); 9 } else { 10 res.status(429).send(); 11 } 12 } 13} 1import * as express from 'express'; 2import { rateLimit } from './rate-limit'; 3 4 5const router = express.Router(); 6 7router.all('*', rateLimit(10)); 8 9 10 11 12 13export default router; Now this seems much neater, but what we have implemented is a global rate limit for anyone accessing the API. In other words, if Bob access the API, then Alice cannot access it for 10 seconds after that as well. To fix that, we would need to authenticate the user making each request, and for simplicity lets assume we have an authenticate() function that does exactly that job for us. Also let's assume that authenticate() basically populates req._.user, which has an id, req._.user.id. Now our code would look like this: 1export function rateLimit(duration) { 2 const last = {}; 3 4 return (req, res, next) => { 5 const now = new Date(); 6 if ( 7 !(req._.user.id in last) || 8 (last[req._.user.id] - now) > duration * 1000 9 ) { 10 last[req._.user.id] = now; 11 next(); 12 } else { 13 res.status(429).send(); 14 } 15 } 16} 1import * as express from 'express'; 2import { authenticate } from './auth'; 3import { rateLimit } from './rate-limit'; 4 5 6const router = express.Router(); 7 8router.all('*', authenticate(), rateLimit(10)); 9 10 11 12 13 14export default router; Besides still not being neat, we still have the issue that our rateLimit() middleware requires another authentication middleware that does populate req._.user object. Brushing off that, it has a more pressing and practical problem: the last object that the middleware creates is never cleaned up. There is an entry there for every user that accesses the system, and without a cleanup mechanism it would keep growing in size, leading to potential memory issues (or at least, over-usage). To fix that, we could restructure our middleware to maintain a lock for each user and release it after a while: 1export function rateLimit(duration) { 2 const lock = {}; 3 return (req, res, next) => { 4 if (req._.user.id in lock) { 5 res.status(429).send(); 6 } else { 7 next(); 8 lock[req._.user.id] = true; 9 setTimeout(() => delete lock[req._.user.id], 1000 * duration); 10 } 11 } 12} Now our solution works (and our middleware is also pretty small), but it has the following issues: Our middleware is not generic, as it is bound to the middlewares before that to set some identifier on each request, Our middleware code looks weird and it is not obvious what it does on the first look. A simple thing like rate-limiting surely should be done in a simpler manner. linkStream-Based Solution The main reason our approach bears those issues is that we are looking at one request at a time, using the middleware's closure (i.e. lock or last) as an in-mem way of communicating between those instances when we are making a decision for each request. The nature of rate limiting however has more to do with streams of request than each single request (it is a limit on the stream, not each single request). What we want to do is: Do an authentication on each incoming request (as before) Split the incoming stream of requests per user Throttle each user-request stream by a certain duration (10 seconds) That seems simple enough, but to achieve it we would need to be able to work with streams of requests. Express is however based on handling one request at a time (via a callback), so unfortunately we cannot have a code as neat as this simple description. Or can't we? Well, there is this neat library for working with streams called RxJS. And there is a nice little library that creates a request stream for us based on Express's routers, called RxXpress. Combining the two, our rate limiting code becomes something like this: 1import { Router, next } from 'rxxpress'; 2import { throttleTime, groupBy, mergeMap } from 'rxjs/operators'; 3 4import { authenticate } from './auth'; 5 6const router = new Router(); 7 8router.all('*').pipe( 9 use(authenticate()), 10 groupBy(({req}) => req._.user.id), 11 mergeMap(group => group.pipe(throttleTime(10000))), 12 next() 13).subscribe(); 14 15 16 17 18 19export default router.core; Ok that DOES look like our neat stream-based description, but if you are not familiar with RxJS, thats a lot to unpack in one go. So lets break it down a bit: 1router.all('*').pipe(...).subscribe(); Basically with the RxXpress router, each route is a stream of requests instead of a function accepting a callback. Here we are basically saying that we want the stream of all requests (all methods, any path), and want to pipe it to some operators (each operator is simply a function that is applied on the stream, pretty similar to piping shell commands), and then subscribe to it (so we get those requests). 1router.all('*').pipe( 2 use(authenticate()) 3 4) We simply use our nice authenticate() middleware on each incoming request. 1router.all('*').pipe( 2 3 groupBy(({req}) => req._.user.id) 4 5) The groupBy operator splits our initial stream of our requests based on each user. The end result is a stream of streams, i.e. a master stream, which emits user request streams (a stream of requests by that user). 1router.all('*').pipe( 2 3 mergeMap(group => group.pipe(throttleTime(10000))) 4 5) Ok this is a two-parter, so lets first look at the inner part: 1group => group.pipe(throttleTime(10000)) Remember how groupBy() split our stream? Each split stream ends up here, in the group variable. Each stream is the stream of requests by each user, and we wanted to throttle it 10 seconds, so here is where throttleTime() operator becomes useful. It simply passes on the first emission and drops the rest until given time is passed. Now for the outer part: 1router.all('*').pipe( 2 3 mergeMap(...) 4 5) well the rest of our code doesn't need to be aware that we have split the original stream of requests into separate per-user streams, so we need to merge those streams after throttling them individually. That is where mergeMap() comes into play, as it merges all those streams into a single stream of requests again. 1router.all('*').pipe( 2 3 next() 4) Well every request that gets to this point (and is not dropped by throttling), should be passed to the next request handler in line, and that is precisely what next() does. linkPros & Cons So lets look at our two solutions side by side: 1import { Router, next } from 'rxxpress'; 2import { throttleTime, groupBy, mergeMap } from 'rxjs/operators'; 3 4import { authenticate } from './auth'; 5 6const router = new Router(); 7 8router.all('*').pipe( 9 use(authenticate()), 10 groupBy(({req}) => req._.user.id), 11 mergeMap(group => group.pipe(throttleTime(10000))), 12 next() 13).subscribe(); 14 15 16 17 18 19export default router.core; router code 1import * as express from 'express'; 2import { authenticate } from './auth'; 3import { rateLimit } from './rate-limit'; 4 5 6const router = express.Router(); 7 8router.all('*', authenticate(), rateLimit(10)); 9 10 11 12 13 14export default router; middleware code 1export function rateLimit(duration) { 2 const lock = {}; 3 return (req, res, next) => { 4 if (req._.user.id in lock) { 5 res.status(400).send(); 6 } else { 7 next(); 8 lock[req._.user.id] = true; 9 setTimeout(() => delete lock[req._.user.id], 1000 * duration); 10 } 11 } 12} As you can see, the streaming solution is much more precise and elegant. However, not only it requires more knowledge of a library like RxJS, it generally demands thinking in terms of streams, which is not familiar for us programmers as most of our experience is with problems that we think imparatively about, i.e. in terms of instructions that are executed one after another. This different paradigm of course becomes a serious barrier of entry for a lot of people, causing them to actually prefer the naive solution to the stream-based one. And that is OK. However, I hope seeing whats on the other side of that barrier encourages you to try to overcome that barrier and enjoy the elegance of streams and reactive programming. Hero image by Makarios Tang from Unsplash How to conduct a per-user rate limit on an Express-powered API? Well there is a naive solution, and there is a more elegant one which requires thinking in streams and reactive programming. RxJS, Express, API, Rate Limit, Backend, Service, Stream, Reactive Programming, FRP Source: Eugene’s Coding Blog | Rate Limiting An Express App

    Read at 02:04 pm, Jun 12th

  • Prisma 2.0: Confidence and productivity for your database | Prisma

    Contents The problem: Working with databases is difficult The existing landscape of database access libraries ranges from sending raw SQL strings to higher-level abstractions like SQL query builders and ORMs. Each of these approaches come with their own problems and pitfalls. Overall, there's a lack of best practices for application developers who work with databases in Node.js and TypeScript. The jungle of existing tools and lack of best practices have two main consequences: Developers aren't productive because the existing tools don't fit their needs Developers aren't confident that they're doing the "right thing" The solution: Prisma makes databases easy Prisma is an open source database toolkit. It replaces traditional ORMs and makes database access easy with an auto-generated and type-safe query builder for Node.js and TypeScript. Prisma currently supports PostgreSQL, MySQL and SQLite databases – with more planned. Please create new GitHub issues or subscribe to existing ones (e.g. for MongoDB or DynamoDB) if you'd like to see support for specific databases. After running the Preview and Beta versions of Prisma 2.0 for almost a year and gathering lots of helpful feedback from our community, we are excited to launch Prisma Client for General Availability 🎉 Prisma Client: Modern database access for Node.js and TypeScript Prisma Client provides an entirely new way for developers to access a database with two main goals in mind: Boost productivity by letting developers query data in natural and familiar ways Increase confidence with type-safety, auto-completion and a robust query API How Prisma Client boosts productivity and raises confidence In this section, we'll take a closer look at how Prisma Client enables developers to build applications faster while writing more resilient and robust code. Here's an overview of the benefits you get from Prisma Client: Thinking in objects: A natural and familiar query API One of the biggest benefits of Prisma Client is the level of abstraction it provides. It allows developers to think of their data in objects (instead of SQL), reducing the cognitive and practical overhead of mapping relational to object-oriented data. Although Prisma Client returns data as objects, it's not an ORM and therefore doesn't suffer from common problems often caused by the object-relational impedance mismatch. Prisma doesn't map classes to tables and there are no complex model instances or hidden performance pitfalls (e.g. due to lazy loading) as often seen in traditional ORMs. Prisma Client provides a query API for your database schema with a focus on structural typing and natural querying (in that sense, it gets closest to the data mapper pattern of traditional ORMs). As an example, assume you have these User and Post tables: With Prisma Client, you can formulate queries like the following to read and write data in these tables: const postsByAuthor = await prisma.post.findMany({ where: { author: { id: 42 } }, }) As you can see, the resulting postsByAuthor contains an array of plain JavaScript objects (if you're using TypeScript, these objects will be strongly typed). Note: The author field is a virtual relation field that connects the Post to the User table in the Prisma Client API. Since it's not directly represented in the database, it can be named in any way you like. You can also easily include the relations of a model, in this case, you could also retrieve the information about the "author" of the return posts: const postsByAuthorWithAuthorInfo = await prisma.post.findMany({ where: { author: { id: 42 } }, include: { author: true, } }) Note again that the objects in postsByAuthorWithAuthorInfo are fully typed when using TypeScript, so accessing a non-existing property on the author of a post, in this case, would throw a compiler error. Working intuitively with relations Accessing related data (meaning, data from tables that are connected via foreign keys) can be especially tricky with existing database tools. This is mostly due to the fundamental mismatch of how these relations are represented in relational databases and object-oriented languages: Relational: Data is typically normalized (flat) and uses foreign keys to link across entities. The entities then need to be JOINed to manifest the actual relationships. Object-oriented: Objects can be deeply nested structures where you can traverse relationships simply by using dot notation. Prisma Client lets you intuitively read and write nested data: const result = await prisma.user.findMany({ include: { posts: { select: { id: true, title: true } } } }) Note again that in all of the above cases, the result will be fully typed if you're using TypeScript! A declarative and human-readable database schema Reading definitions of tables and other database structures using SQL (e.g. CREATE TABLE User, ALTER TABLE User ADD COLUMN email) can feel noisy. Prisma introduces a declarative version of your database schema known as the Prisma schema. The Prisma schema is generated by introspecting your database and serves as the foundation for the query API of Prisma Client. As an example, this is the equivalent version of the above User and Post definitions: model User { id Int @default(autoincrement()) @id email String @unique name String? posts Post[] } model Post { id Int @default(autoincrement()) @id title String content String? author User @relation(fields: [authorId], references: [id]) authorId Int } Note: We are also working on a tool for database migrations called Prisma Migrate. With Prisma Migrate, the introspection-based workflow is "reversed" and you can map your declarative Prisma schema to the database; Prisma Migrate will generate the required SQL statements and execute them against the database. Auto-completion for database queries Auto-completion is an immensely powerful feature that enables developers to explore an API in their editors instead of looking up reference docs. Because Prisma Client is generated from your database schema, the query API will feel very familiar to you. Having auto-completion available largely contributes to greater productivity because you can "learn the API as you use it". Auto-completion also increases confidence because you can be sure that the suggested API operations will work. Fully type-safe database queries Prisma Client guarantees full type-safety for all database queries, even when only a subset of a model's properties are retrieved or relations are loaded using include. Consider again the User and Post tables from the example before, Prisma generates the following TypeScript types to represent the data from these tables in your application: type User = { id: number email: string name: string | null } type Post = { id: number authorId: number | null title: string | null content: string | null } Any plain CRUD query sent by Prisma Client will return a response of objects that are typed accordingly. However, consider again the query from above where include was used to fetch a relation: const postsByAuthorWithAuthorInfo = await prisma.post.findMany({ where: { author: { id: 42 } }, include: { author: true, } }) The objects inside postsByAuthorWithAuthorInfo don't match the generated Post type because they carry the additional author object. In that case, Prisma Client still provides full type-safety and is able to statically type the result! Here's what the type looks like: const postsByAuthorWithAuthorInfo: (Post & { author: User | null; })[] Thanks to this, the TypeScript compiler will catch cases where you're accessing properties that don't exist. For example, this would be illegal: postsByAuthorWithAuthorInfo[0].author.firstName A single source of truth for database and application models Database tools often have the problem of needing to synchronize changes that are made to data models between application code and the database. For example, after having changed a database table, developers often need to manually adjust the respective model in their application code and scan the codebase for usages of the table to update it. This makes database schema migrations and code refactorings scary because there's no guarantee the two layers remain in sync after the change! Prisma Client takes a different approach to this problem. Instead of manually synchronizing changes between application code and database, Prisma Client's query API is generated based on your database schema. With that approach, you can simply re-generate Prisma Client after a database schema change and the changes will automatically be synchronized to your Prisma Client query API. Thanks to auto-completion and type-safety, updating your application code to the new queries will be a lot faster than with any other approach. What you can build with Prisma The main use case for Prisma is building server-side applications that need to persist data in a database. Since the Preview phase of Prisma 2.0, we have seen developers build a wide range of applications, from social networking apps to e-commerce shops, to productivity tools and marketplaces. We are excited to see what you're building with Prisma! This is the fastest I’ve developed in my career, by far. Prisma has dramatically reduced implementation time, while increasing confidence in my code. I’ve also been able to say yes to a lot of new incremental features; it now takes half a day to implement something that used to take two or three. REST, GraphQL, Thrift, gRPC and more Server-side applications typically expose an API that's consumed by frontend (e.g. web or mobile) or other apps. Prisma Client is compatible with all existing API technologies, such as REST, GraphQL, Thrift, or gRPC. Prisma works with various deployment models Prisma Client can be used in traditional monolithic servers, microservice architectures, and serverless deployments. Read the docs page about deployment to learn more. A strong ecosystem growing around Prisma Despite Prisma's young age, we are very proud and excited about the emerging ecosystem and a variety of tools we see growing around it. The next generation of fullstack frameworks is based on Prisma The Node.js ecosystem is known for lots of different frameworks that try to streamline workflows and prescribe certain conventions. We are extremely humbled that many framework authors decide to use Prisma as their data layer of choice. The new RedwoodJS framework by GitHub co-founder Tom Preston-Werner seeks to become the "Ruby on Rails" equivalent for Node.js. RedwoodJS is based on React and GraphQL and comes with a baked-in deployment model for serverless functions. Another framework with increasing anticipation and excitement in the community is Blitz.js. Blitz is build on top of Next.js and takes a fundamentally different approach compared to Redwood. Its goal is to completely eliminate the API server and "bring back the simplicity of server rendered frameworks". Build type safe GraphQL servers with Nexus and the Prisma plugin At Prisma, we're huge fans of GraphQL and believe in its bright future. That's why we founded the Prisma Labs team which dedicates its time to work on open source tools in the GraphQL ecosystem. It is currently focused on building Nexus, a delightful application framework for developing GraphQL servers. As opposed to Redwood, Nexus is a backend-only GraphQL framework and has no opinions on how you access the GraphQL API from the frontend. Using the Prisma plugin for Nexus, you can expose Prisma models in your GraphQL API without the overhead of implementing the typical CRUD boilerplate that's needed when connecting GraphQL resolvers to a database. model User { id Int @default(autoincrement()) @id email String @unique name String? posts Post[] } model Post { id Int @default(autoincrement()) @id title String content String? author User @relation(fields: [authorId], references: [id]) authorId Int } Thanks to that plugin, there's almost no boilerplate needed to expose full CRUD operations, including filters, pagination, and ordering capabilities, for Prisma models. Getting started with Prisma There are various ways for getting started with Prisma: Quickstart (5 min) Explore how to send database queries with Prisma Client against a demo SQLite database – no setup required! We've been overwhelmed by the positive response to the Beta release in March and are excited to share today's General Availability with everyone! A huge thank you to everyone who has accompanied us on this journey! Share what you are building on Slack and awesome-prisma If you're new to Prisma, we'd love to see you around in our Slack! In case you're already using Prisma, let everyone know by posting what you build in the #showcase channel. We're proud of our community of content creators who created lots of awesome articles and videos about Prisma! For an overview of the best Prisma resources, check out the awesome-prisma repo. And don't forget to create a PR with anything that's missing! Join us at Prisma Day on June 25th and 26th for workshops and talks After the successful premiere last year, we are excited to host another edition of Prisma Day on June 25th (workshops) and 26th (talks). This year, we are going remote and are inviting everyone to join us for amazing talks around modern application development, best practices for database workflows and everything Prisma! Prisma Day will be livestreamed on June 25th & 26th Join us Source: Prisma 2.0: Confidence and productivity for your database | Prisma

    Read at 01:34 pm, Jun 12th

Day of Jun 11th, 2020

  • Web Platform News

    Read at 03:19 am, Jun 12th

  • Martin Gugino, condemned by Trump tweet, is a Catholic peace activist, not a 'Antifa provocateur' friends say

    Or a beloved Catholic peace activist who was the victim of police brutality in Buffalo, New York? The incident, captured on video, went viral and has become symbolic of the kind of police brutality that has sparked calls for fundamental reforms to American policing.

    Read at 03:17 am, Jun 12th

  • React Error Handling And Reporting With Error Boundary And Sentry

    14 min read React, JavaScript, Tools Share on Twitter or LinkedIn In this article, we’ll explore the concept of error boundaries in a React application. We’ll work through an example app to see how we can use error boundaries to deliver a better app experience.

    Read at 03:05 am, Jun 12th

  • ECMAScript proposal: Logical assignment operators

    Before we can examine the proposed operators, we have to take a brief detour and learn about short-circuiting. The logical operator ||, &&, ?? all short-circuit – their second operands are only evaluated if their first operands don’t already determine the result:

    Read at 02:27 am, Jun 12th

  • Police Are the Problem, Not the Solution

    Alex S. Vitale, The End of Policing. Verso Books, October 2017. 272 pp. Do we need the police?

    Read at 02:24 am, Jun 12th

  • Unbundle the Police - The Atlantic

    Rosa Brooks: Stop training the police like they’re joining the military The roles of cop and counselor are hopelessly intertwined. Once again: Unbundle it. Some cities are already doing so. In Austin, Texas, 911 operators redirect callers to one of several departments, including police, fire, and a mental-health service that recently saw its budget increase by millions of dollars. The celebrated CAHOOTS program in Eugene, Oregon, dispatches medics and mental-health counselors to homeless people or others in distress. Both of these services solve a paradox of modern policing, which is that police are highly trained to be warriors at a time of historically low crime but undertrained to be mental-health interventionists at a time when our streets need just that. “Two questions that could guide the reform movement are ‘What is it that police actually do?’ and ‘Why do we need armed police to do it?’” says Patrick Sharkey, a Princeton sociologist. Sharkey is no police-hating radical. He has worked with commissioners across the country, and his research has shown that targeted policing can be effective in reducing crime, especially in the most violent neighborhoods. But he thinks communities ought to experiment with alternative models to policing. “Police presence can reduce violence, but there are lots of other things that reduce violence, too. Business improvement districts reduce violence. University security organizations reduce violence. It’s possible that relying on police isn’t as necessary as we once thought, and that we might even have safer communities without many of them.” Disentangling police services alone will not suffice to end police brutality. We also need behavioral reform such as de-escalation training; and legal reforms such as an end to qualified-immunity laws, which shield departments’ “bad apples” from appropriate punishment. The criminalization of drugs drives too many bloody encounters between police officers and citizens, like the tragic shooting of Breonna Taylor. But legal overkill goes beyond drug laws. From 2006 to 2016, bans on sitting, lying down, and camping on city property increased by 52 percent; prohibitions on “loitering” and “loafing” rose by 88 percent; and laws against living in vehicles rose 143 percent. We have too many laws for civilians, and too few laws for police. That said, if cities move forward with unbundling their police forces, they might realize that some entanglement makes sense. They might discover, for instance, that it still makes sense to have a standing fleet of cops on the road for efficient dispatching, and that such a fleet might as well be used to intervene during major traffic violations. What’s more, state and local governments may be entering a period of austerity that precludes shifting spending toward the sort of community investments that make cities safer and less violent. In a cash-strapped environment, a bit of social-service bundling is simply inevitable. Source: Unbundle the Police – The Atlantic

    Read at 10:45 pm, Jun 11th

  • Starbucks Prohibits Employees From Wearing Clothes Supporting Black Lives Matter | Politics | US News

    Source: Starbucks Prohibits Employees From Wearing Clothes Supporting Black Lives Matter | Politics | US News

    Read at 10:30 pm, Jun 11th

  • Web Security 101: An Interactive Cross-Site Request Forgery (CSRF) Demo - victorzhou.com

    Web Security 101: An Interactive Cross-Site Request Forgery (CSRF) Demo A hands-on beginner's guide to what CSRF attacks are and how to prevent them. Looking for an introduction to Cross-Site Request Forgery (CSRF)? This post will be a little different - instead of telling you what it is, I’m going to show you. Ready? Setting the Scene You’re a responsible, hardworking person. You’ve saved up your money over the years at Definitely Secure Bank®. The Definitely Secure Bank logo. You love Definitely Secure Bank - they’ve always been good to you, plus they make it easy to transfer money via their website. Sweet, right? To get in character, let’s have you open up your online banking portal and look around. Click here to open Definitely Secure Bank’s website and login. Use any username and any password you want (don’t worry - it’s definitely secure). Keep that tab open for the rest of this post. Once you’ve logged in, you should see a landing page that looks something like this: Nice! You’ve got $20,000 saved up! It’d be a shame if someone stole it… Notice also the ”Make Transfer” button. That’s a nice feature the Definitely Secure Bank website offers - you can send money online with just one click! If you want to give it a go, try sending a dollar to see what happens: One Fateful Day… …you get an email titled: ⚠️ Limited Time Offer! 🎁 Get a $100 Visa Gift Card Now!! ⚠️ Woah, you think to yourself, I could use a free $100 gift card! What could go wrong? You open the email and click the link: Yes, I actually want you to click this button. Do it for the purposes of the demo. Little do you know, there’s no $100 gift card (what?!?!) - in fact, you’ve just lost $10,000. Don’t believe me? Go check your Definitely Secure Bank tab (the one I told you to keep open for this post). It should look something like this: No!!!!!!!!, you scream (silently in your head). Impossible! How could this happen?? We’ll get to that in a second. First, let’s take a step back: that was a CSRF attack. In short, Cross-Site Request Forgery is a web security exploit where an attacker induces a victim to perform an action they didn’t mean to. In this case, the attacker tricked you into unintentionally transferring them money. How It Happened The first step was that you logged in, which means you have a session cookie set. You might be thinking, Wait, what? 🍪🍪🍪 Cookie?. In case you are, we’re going pause momentarily for: A crash course on [web] cookies Feel free to skip this part if you don’t need a refresher. Cookies are data sent from a web server that gets stored by the user’s browser and subsequently included on future requests to that server. For example, when logging into a site, something like this happens: Your browser sends your username/password to the server. The server verifies your username/password. Upon success, the server responds with a custom cookie for you, often referred to as a session cookie. On future requests, your browser includes the session cookie. The server checks your session cookie each time and now knows who you’re logged-in as. This is why you can login to Facebook, close it, re-open it later, and still be logged in - your session cookie was saved by your browser! More reading on web cookies: MDN, Wikipedia. Now, back to… How It Happened Okay, so we’ve established that your session cookie was set because you’d already logged in. Let’s get to the juicy part. Here’s the Javascript that ran when you clicked that button: Uses the Fetch API. This sends an HTTP POST request to the Definitely Secure Bank’s (DSB) /transfer endpoint with these parameters: Parameter Value amount 10000 description Gotcha! to Evil-Scammers Coincidentally, that happens to be exactly how the DSB website’s nifty “Make Transfer” feature works! You can see the code the DSB website runs when you click “Submit Transfer” and compare for yourself. But how did this code manage to steal your money while including neither your username nor password? Because you’re logged in. Browsers can send cookies to one origin (the DSB site) even when the request originates from a different origin (the attacker’s site they tricked you into visiting). A recap of what happened, in order: You logged into DSB, so your browser had your session cookie stored. You visited a link (simulated by clicking that button in this post) controlled by the attacker. The attacker’s site sent a request to the DSB server in the exact format that the actual DSB website would’ve used. The DSB server receives a completely legitimate looking request and processes the transaction. There it is. Cross-Site Request Forgery. Wait, what about CORS? A common misconception is that Cross-Origin Resource Sharing (CORS) is a CSRF prevention mechanism. Let’s clarify a few things here. First: CORS relaxes the Same-Origin Policy (SOP), a critical security measure that prevents scripts on one site (e.g. the attacker’s site) from accessing sensitive data on another site (e.g. the Definitely Secure Bank portal). If something was protecting you from CSRF, it would be the SOP. However, in our case the SOP allows the POST request to be sent and only blocks the attacker from reading the response, which doesn’t matter! As long as the POST request to make the transfer goes through, the damage is done. So how do you prevent CSRF, then? The most common method of preventing CSRF is by generating a secret random string, known as a CSRF token, on the server, and checking for that token when the client performs a write. For example, here’s one way the DSB site could protect against CSRF: Generate Token (server): when a user visits the “Make a Transfer” page, generate a CSRF token on the server and include it as a hidden field in the transfer form. Submit Token (client): when the user submits the form, the CSRF token is automatically included in the request. Verify Token (server): the server verifies that the CSRF token matches the one it originally sent to the user. The data this user would send in their legitimate request might look like this: Parameter Value amount 100 description This is a real transfer. to The intended recipient csrf_token K2JY9JjZqF77Yil8 A legitimate transfer request.As long as the CSRF token isn’t transmitted using cookies, an attacker would have no way of including it in a forged request: Parameter Value amount 999999 description You got hacked! to Evil-Scammers csrf_token ?????????? An attacker's transfer request, which would fail because the CSRF token is invalid. Note: Many web frameworks already have CSRF prevention built-in. Be sure to check for existing solutions before you implement it yourself! While CSRF tokens work well, they’re just the tip of the CSRF prevention iceberg. If you’re interested in reading more, I recommend this CSRF Prevention Cheat Sheet. Alternatively, if you want to learn more about another dangerous web security hole, check out my introduction to Cross-Site Scripting (XSS). Thanks for reading, and stay safe! Source: Web Security 101: An Interactive Cross-Site Request Forgery (CSRF) Demo – victorzhou.com

    Read at 08:09 pm, Jun 11th

  • How to write good Git commit messages - AltCampus Blog

    One of the things a lot of newbie developers overlook often is the format of their commit messages. Properly formatted commit messages can do so much more than just looking neat, such as - Provide context to the code reviewer Source: How to write good Git commit messages – AltCampus Blog

    Read at 08:06 pm, Jun 11th

  • GUEST COMMENTARY: Socialists are hijacking progressivism | Guest Commentary | nwitimes.com

    During an Income Movement forum in the basement of 3333 Broadway here in West Harlem, a small brunette woman with a bright pink sweater that read #LockHimUp stood up to Source: GUEST COMMENTARY: Socialists are hijacking progressivism | Guest Commentary | nwitimes.com

    Read at 05:04 pm, Jun 11th

  • React Native's re-architecture in 2020 - The Startup - Medium

    Web server is returning an unknown error There is an unknown connection issue between Cloudflare and the origin web server. As a result, the web page can not be displayed. Ray ID: 5a1c8bff4df4c5c0 Your IP address: Error reference number: 520 Cloudflare Location: Newark Source: React Native’s re-architecture in 2020 – The Startup – Medium

    Read at 04:01 pm, Jun 11th

  • If We Defund the Police, Whose Goddamn Helicopters Am I Going to Steal?

    If We Defund the Police, Whose Goddamn Helicopters Am I Going to Steal? By Mark Roebuck | June 10, 2020 ")} function e(o){return(o+"").replace(/(d)(?=(d{3})+$)/g,"$1,")}var t="https://thehardtimes.net/harddrive/if-we-defund-the-police-whose-goddamn-helicopters-am-i-going-to-steal/";console.log("first url is "+t);var a="//thehardtimes.net/2020/06/10/if-we-defund-the-police-whose-goddamn-helicopters-am-i-going-to-steal/";console.log("second url is "+a),axios.all([axios.get("http://graph.facebook.com/?id="+t),axios.get("http://graph.facebook.com/?id="+a)]).then(axios.spread(function(e,t){console.log("share count one is "+e.data.share.share_count),console.log("share count two is "+t.data.share.share_count),o(e.data.share.share_count+t.data.share.share_count)}))}(); Hey you ugly motherfuckers! I’ve been watching your pissy little protests and I have just one little bitty question for you. WHERE THE FUCK AM I GOING TO GET MILITARY GRADE WEAPONRY BEING OPERATED AND SUPERVISED BY UNEDUCATED LUNKHEADS IF WE DEFUND THE FUCKING POLICE, YOU STUPID BASTARDS?! You motherfuckers are going to ruin everything! The one thing you can count on in this asshole of a city is that the pigs are going to have the best and most expensive equipment at all times, no matter how underfunded the local schools and hospitals are. So while our communities crumble, the ones who enforce the rules drive tanks and helicopters. This puts a greater social emphasis on conformity than harmony and growth, and it PISSES ME THE FUCK OFF! The one goddamned silver lining to this bullshit police state we live in is that at least if I need to secure a helicopter or armored car on short notice to make my day go a little easier, I know where to find one. If we start funding everything proportionately, how am I going to run meth in and out of Los Santos? With an improved public transit system?! Use your fucking heads, people! And before one of you judgemental ball lickers goes telling me I don’t understand what these protests are all about, just back the fuck off! I may look like your average Fox-News-watching, boot-fucking middle American, but I’m more like you weird ass kids than you realize. Hell, I was throwing molotov cocktails at cops while your dad was pounding you into your mother. All I’m saying is, think of the long con on this one. Without proper funding, the criminals of Liberty City won’t be equipped to do their jobs.  Oh, and as a guy that doesn’t know what exactly I’ll feel like stickin’ my dick into from one particular day to the next, let me wish you all a HAPPY FUCKING PRIDE MONTH! — Trevor Phillips, Entrepreneur Want to support Hard Times? Buy a shirt. We’ll use the money to write more articles. Source: If We Defund the Police, Whose Goddamn Helicopters Am I Going to Steal?

    Read at 02:57 pm, Jun 11th

  • Lorenz Weiß · Five common mistakes writing react components (with hooks) in 2020

    Five common mistakes writing react components (with hooks) in 2020 The most common mistakes I found writing react components, why they are mistakes and how to avoid or fix them. React as a framework React has been out in the world of web development for quite some time now and its position as a tool for agile web development has steadily strengthened in recent years. Especially after the announcement and release of the new hook api/concept, writing components has never been easier. Although the team behind react and the huge community have tried to train and explain the concepts of the framework in an impressive way, I still see some pitfalls and common mistakes that were made while working with it. I kept a list of all the mistakes I saw over the last years related to react especially with using hooks. In this article I want to show you the most common ones and I will also try to explain in detail, why I think they are mistakes and a suggestion for doing it in a cleaner way. Disclaimer Before we start with the list, I have to say that most of the following things are not fundamental mistakes or don't look wrong at first glance, and also most of them are unlikely to affect the performance or apperance of the application. Probably nobody would notice, except for the developers working on the product, that something is wrong here, but I still believe that good quality code can lead to a better developer experience and thus to a better product. As with any software framework or library, there are millions of different opinions about it. Everything you see here is based on my personal opinion and should not be considered a general rule. If you have a different opinion about her, I would love to hear it 🌟 1. Using useState when no rerender is needed One of the core concepts of react is dealing with state. You can control your entire data flow and rendering through the state. Each time the tree is rendered again, it is most likely tied to a change in the state. With the useState hook you can now also define your state in function components, which is a really neat and easy way how to handle states in react. But it can also be misused as we see in the following example. For the next example we need a bit of explanation, suppose we have two buttons, one button is a counter and the other button sends a request or triggers an action with the current count. However, the current number is never displayed within the component. It is only required for the request when you click the second button. This is dangerous ❌ function ClickButton(props) { const [count, setCount] = useState(0); const onClickCount = () => { setCount((c) => c + 1); }; const onClickRequest = () => { apiCall(count); }; return ( <div> <button onClick={onClickCount}>Counter</button> <button onClick={onClickRequest}>Submit</button> </div> ); } The problem ⚡ At the first sight, you might ask what is exactly the problem with that? Isn't what what the state was made for? Sure you are right, this will work just fine and probably there will be never a problem with that, however in react every state change will force a rerender for that component and most likely its children, but in the above example since we never use that state in our render part, this will end up being an unnecessary render every time we set the counter, which can impact the performance or could have unexpected side effects. The solution ✅ If you want to use a variable inside your component which should keep its value between rendering but also don't force a rerender, you can use the useRef hook. It will keep the value, but doesn't force the component to rerender. function ClickButton(props) { const count = useRef(0); const onClickCount = () => { count.current++; }; const onClickRequest = () => { apiCall(count.current); }; return ( <div> <button onClick={onClickCount}>Counter</button> <button onClick={onClickRequest}>Submit</button> </div> ); } Get Content, helpful articles and links. Usually I sent out 1-2 mails per months. No spam or ads I promise 🤞 2. Using router.push instead of a link This might be a very easy and obvious one and not really related to react itself, but I still see it quite a lot when people writing react components. Let's say you will write a button and with clicking the button the user should be redirected to another page. Since its a SPA, this action will be a client-side routing mechanism. So you will need some kind of library for doing that. In react the most popular one is react-router and the following example will use that library. So adding a click listener will redirect the user to the desired page right? This is dangerous ❌ function ClickButton(props) { const history = useHistory(); const onClick = () => { history.push('/next-page'); }; return <button onClick={onClick}>Go to next page</button>; } The problem ⚡ Even though this would work just fine for most of the users, there is huge problem when it comes to accessibility here. The button will not be marked as linking to another page at all, which makes it nearly impossible to be identified by screen readers. Also could you open that in a new tab or window? Most likely not. The solution ✅ Linking to other pages with any user interaction should as far as possible be handled by the <Link> component or a normal <a> tag. function ClickButton(props) { return ( <Link to="/next-page"> <span>Go to next page</span> </Link> ); } Bonus points: it also makes the code a lot more readable and shorter! 3. Handling actions via useEffect One of the best and most thoughtful hooks introduced by React is the "useEffect" hook. It enables the processing of actions related to prop or state changes. Despite its helpful functionality, it is also often used in places where it may not be needed. Imagine a component that fetches a list of items and render them to the dom. In addition, if the request is successful, we would like to call the "onSuccess" function, which is passed on to the component as a prop This is dangerous ❌ function DataList({ onSuccess }) { const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [data, setData] = useState(null); const fetchData = useCallback(() => { setLoading(true); callApi() .then((res) => setData(res)) .catch((err) => setError(err)) .finally(() => setLoading(false)); }, []); useEffect(() => { fetchData(); }, [fetchData]); useEffect(() => { if (!loading && !error && data) { onSuccess(); } }, [loading, error, data, onSuccess]); return <div>Data: {data}</div>; } The problem ⚡ There are two useEffect hooks, the first one is handling the api call on the initial render and the second one will call the onSuccess function, by assuming when there is no loading, no error, but data in the state, it must have been a successful call. Make sense right? Sure for the first call this is true and probably will never fail. But you also loose the direct connection between the action and the function that needs to be called. Also there is no 100% guarantee that this case will only happen if the fetch action has succeeded and this is something we as developers really don't like. The solution ✅ A straight forward solution would be to set the "onSuccess" function to the actual place where the call was successful: function DataList({ onSuccess }) { const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [data, setData] = useState(null); const fetchData = useCallback(() => { setLoading(true); callApi() .then((fetchedData) => { setData(fetchedData); onSuccess(); }) .catch((err) => setError(err)) .finally(() => setLoading(false)); }, [onSuccess]); useEffect(() => { fetchData(); }, [fetchData]); return <div>{data}</div>; } Now it is quite clear at the first sight when the onSuccess is called, exactly in the success case of the api call. 4. Single responsibility components Composing components can be hard. When is it time to split a component into several smaller components? How do you structure the component tree? All of these questions arise every day when working with a component-based framework. However, a common mistake in designing your components is to combine two use cases into a single component. Let's take an example of a header that shows either a burger button on mobile devices or tabs on desktop screens. (The condition will be handled the the magical isMobile function, which is not part of this example 🧙‍) This is dangerous ❌ function Header(props) { return ( <header> <HeaderInner menuItems={menuItems} /> </header> ); } function HeaderInner({ menuItems }) { return isMobile() ? <BurgerButton menuItems={menuItems} /> : <Tabs tabData={menuItems} />; } The problem ⚡ With this approach the component HeaderInner is trying to be two different things at once and we all learned from Mr. Jekyll, being more than one thing at a time isn't really ideal. Also it makes it even hard to test or to reuse the component at other places. The solution ✅ Bringing the condition one level up, makes it easier to see what the components are made for and that they only have one responsibility, being a Header, Tabs or a BurgerButton and not trying to be two things at once. function Header(props) { return ( <header>{isMobile() ? <BurgerButton menuItems={menuItems} /> : <Tabs tabData={menuItems} />}</header> ); } 5. Single responsibility useEffects Remember the times, where we only had the componentWillReceiveProps or componentDidUpdate methods to hook into the rendering process of a react component? It is bringing back dark memories and also realizing the beauty of using the useEffect hook and especially that you can have as much as you want of them. But sometimes forgetting and using a "useEffect" for several things brings back those dark memories. For example, imagine you have a component that fetches some data from the backend in some way, and also displays breadcrumbs depending on the current location. (Using again react-router for getting the current location.) This is dangerous ❌ function Example(props) { const location = useLocation(); const fetchData = useCallback(() => { /* Calling the api */ }, []); const updateBreadcrumbs = useCallback(() => { /* Updating the breadcrumbs*/ }, []); useEffect(() => { fetchData(); updateBreadcrumbs(); }, [location.pathname, fetchData, updateBreadcrumbs]); return ( <div> <BreadCrumbs /> </div> ); } The problem ⚡ There are two use cases, the "data-fetching" and "displaying breadcrumbs". Both are updated with an useEffect hook. This single useEffect hooks will run when the fetchData and updateBreadcrumbs functions or the location changes. The main problem is now, we also call the fetchData function when the location changes. This might be a side effect we haven't thought of. The solution ✅ Splitting up the effect makes sure, they only are used for one effect and the unexpected side effects are gone. function Example(props) { const location = useLocation(); const updateBreadcrumbs = useCallback(() => { /* Updating the breadcrumbs*/ }, []); useEffect(() => { updateBreadcrumbs(); }, [location.pathname, updateBreadcrumbs]); const fetchData = useCallback(() => { /* Calling the api */ }, []); useEffect(() => { fetchData(); }, [fetchData]); return ( <div> <BreadCrumbs /> </div> ); } Bonus Points, the use cases are now also logically sorted within the component. Conclusion There are many pitfalls when writing components in react. It is never 100% possible to understand the whole mechanism and to avoid every little or even big mistake. But making mistakes is also important when learning a framework or programming language and probably nobody is 100% free of these mistakes. I think sharing your experience with that can be very helpful for others or prevent them from making them. If you have any questions or wait, I don't think this is a mistake, please write to me, I would love to hear your opinion. Hey! Thank you for reading! You liked, hated or even loved this post? Let the world know about your feelings and share it on twitter Just hit the little bird: Source: Lorenz Weiß · Five common mistakes writing react components (with hooks) in 2020

    Read at 01:17 pm, Jun 11th

Day of Jun 10th, 2020

  • Meet The "Outside Agitator" Whose Bronx March Was Violently Crushed By The NYPD - Gothamist

    According to the NYPD, the protest in the South Bronx on Thursday was led by violent extremists intent on injuring police officers and destroying the community. Their intent was “to cause mayhem,” Police Commissioner Dermot Shea explained, which justified a premeditated operation to trap, pepper-spray, bludgeon, and arrest marchers en masse at the stroke of curfew. “This was about tearing down society,” Shea said of the demonstrators on Friday morning. “We had a firearm recovered, gasoline recovered, numerous weapons recovered.” As he has done since the death of George Floyd first ignited fierce protests against racist police brutality in New York City, Mayor Bill de Blasio sided with his police boss. “Sometimes there’s more than meets the eye,” the mayor said, dismissing firsthand reports that the group of nonviolent marchers, legal observers and journalists were viciously brutalized on the corner of 136th Street and Brook Avenue without warning or provocation. “I believe the information Commissioner Shea is putting forward is based on fact,” he added. If the NYPD has facts to back up their account, they haven’t yet shared them. The firearm was recovered by police hours before the protest began, several blocks away, in the car of an individual with no apparent link to the demonstration. Gasoline was not found at the scene, police officials later conceded. A photo shared by the NYPD of items allegedly taken from protesters included a mallet, gloves, a pocket knife, and a flat-changing kit. The NYPD has also declined to provide evidence for Shea’s assertion that protest leaders were “outside agitators.” Contrary to that claim, the march was led by two veteran Bronx-based activists: Shannon Jones, the co-founder of Bronxites for NYPD Accountability (aka Why Accountability); and Shellyne Rodriguez of Take Back the Bronx. At exactly 8 p.m. on Thursday, Rodriguez and Jones were arrested, along with more than 250 others, in the NYPD’s most aggressive show of force to date. Both women said the department's targeting of their march stemmed not from credible threats of community destruction, but because of longstanding tensions with the South Bronx organizers and their role in the broader Fuck The Police (#FTP) coalition. In a phone conversation on Tuesday, Jones, 44, spoke to Gothamist about her violent arrest at the hands of the NYPD’s highest-ranking uniformed officer, as well as her radical ambitions, and deep apprehensions, for the direction of the current movement. (Disclaimer: This interview features the use of the n-word.) Commissioner Shea claimed Thursday’s march was being led by “outside agitators” and that the protesters weren’t people who “actually live in the Bronx.” What’s your response to that? I believe he knows exactly who we are. But he's not speaking to us. He's speaking to the gentrifier, to the white property owner. He's laying the foundation for our messaging and work to be suppressed. There's no way that Dermot Shea and the mayor don't know who I am after six years of speaking at CCRB meetings, ambushing them at Gracie Mansion and City Hall. It's important to know that the cross section of organizations that make up the FTP formation have a demonstrated body of community work. So we called the action for 6:30 p.m., but we were actually doing a mutual aid food drive before the action. We passed out masks to the community, medical supplies, food, sandwiches, et cetera. We're not outsiders. We know full well that the Hub is home to many marginalized people. We know that it's necessary to continue to support that community. And as we were doing that, we saw the police pulling up and assembling themselves in riot gear along Melrose Avenue at 6:00 p.m. Heavily-armored officers with the NYPD's Strategic Response Group blocking the Willis Avenue Bridge on Thursday night C.S. Muncy/Gothamist It was clearly a heavy police presence from the start. There were officers on rooftops, cops in riot gear assembling on every corner. Did that surprise you? This is our FTP4 — we had 1, 2, 3, so that type of presence was expected. I think it was to send a specific message to the South Bronx community, again, because we have a completely different message from the status quo, Democratic Party run, orchestrated protests that have been happening since the election of Donald Trump. But this extreme display of militarization we had not seen before. Bronxites for NYPD Accountability was born out of the chokehold of Eric Garner in 2014. We’ve called quite a few protests. We're one of the anchor groups of the #SwipeItForward campaign. We’ve seen riot gear before, batons before. The suits that they wore, we know now that those were the Strategic Response Group officers, but those police were completely unidentifiable. It was completely militaristic. So if you were brutalized in any way, there's no way to specifically identify who it is. They were completely covered from head to toe. And the only thing you could see were their eyes. That's it. What happened once the march began? We moved off around 7:15 p.m. Our action went into the public housing developments in the South Bronx, where we had people supporting us, lining up with water and supplies. We stopped at La Morada Restaurant, which is run by an undocumented family that faces plenty of police repression in the community. They're constantly surveilled and harassed. Once we approached 137th Street and Willis Avenue there were the police on bikes forming a line maybe four deep across the Willis Avenue Bridge, which was ridiculous. Why would a Bronx action go into Harlem? That was a misstep on their part. As we're proceeding down the hill from 136th to Brook Avenue, I look at my phone. It's 7:53 and the first bike lines form in front of us. But it took a second for them to get into formation. So myself and some other folks were able to wiggle around that because they weren’t tight yet. The melee proceeded at precisely 8:00. It was like a Pavlov situation. I was on the other side of the street being protected by organizers, protesters and people from the Mill Brook community and out of nowhere pops out [NYPD Chief of Department] Terence Monahan. He comes up and gestures to me. I told him, “Yo, don't touch me.” He gives the order to SRG who gave the order to a white shirt who begins to charge at me and put me in a chokehold and flip me face down on the ground. (Jones’s arrest begins at the 1:00 mark) And then I was arrested, placed in very tight zip ties and taken to the 40th Precinct. I sat in the pen at the 40th Precinct for about six hours. More and more people kept coming into the pen. Other folks had head injuries that required medical attention. There were about eleven of us in a tiny pen, which is highly dangerous. I was charged with resisting arrest, a solo charge. A note to your readers and listeners: When you're in the pen, don't say a word. Don’t talk. While you were being arrested on Brook Avenue, there were hundreds of people that were trapped on either side by officers, who fired pepper spray and beat them with batons as they begged to leave. I personally didn’t see anything resembling provocation from protesters. Was there something that caused this? People were walking. That’s what it was. People walking. Asked on Tuesday whether he agreed with Shea's characterization of this as "nearly flawlessly executed," the mayor declined to criticize the department, but said an investigation into the arrests would be undertaken. What would you like to see happen next? I think there should be relentless pressure for Shea and Monahan to resign. I mean, this should be relentless. These ideas of them getting tips and "credible information" and trying to gaslight us by saying we had gasoline and putting propaganda out about obvious construction sites in Gravesend. What kind of integrity is that for the citizens of the city of New York? That's a serious problem. What happened on Brook Avenue — this is not a 40th Precinct problem, this is not a 48th Precinct problem. The highest level of uniformed police were present on the ground right there. And the very next morning, the mayor feigned ignorance. When your own Chief of Department was there...I could hear people screaming, “I want to go home” as they continued to kettle and pepper spray, beat and brutalize people. That is not the way that you preside over an entire city, by lying to the public. So that’s the first thing that needs to happen: Shea and Monahan must be pressured to resign. Looking at these protests more broadly, where do you think the movement goes from here? Bronxites for NYPD Accountability is a Black-led abolitionist organization, so we're predicated on the liberation of African people. We don't speak anything less than that. We’re a reparations organization. We believe in the full restoration of land to the indigenous people that was stolen by European terrorists. Reformism and incremental politics defers our liberation. We don’t speak on the terms of defunding and all of this nonsense. The way New York City operates its agency budgets, I take $600 million from the NYPD and add it to [the Department of Youth and Community Development], get up on TV and say we added $600 million to DYCD, but that’s to fund the police program. Come on, people. We have to be smarter. As someone who’s spent years doing this work, how does it feel to watch this mass movement suddenly catch fire in the streets? You don’t think New Yorkers are being radicalized to the cause you’ve long devoted yourself to? Yes and no. I think people are incensed, but not necessarily radicalized. I was incensed in 2014, but didn’t have the proper Black political education to be radicalized the way I am now. What’s happening with George Floyd is literally a mirror to Eric Garner. People are incensed, but white supremacy is very crafty. You see the way you were kettled, right? There's also the kettling of a radical movement and turning it into something else that's more palatable. It's a matter of: Can radical education reach people in order to give them what they need to be clear about who their enemy is and how the enemy functions in this society? White supremacy has no business dictating what our righteous anger looks like. You see all these white folks are kneeling down. Congress is wearing kente cloth. Really? Who says to them, "I think we should do this"? This is what lets you know that the African person in this country is still not viewed as human. Congress doesn't even have the wherewithal to say, "These niggas are going to interpret this as pandering, maybe we shouldn't do that." They're confident that we'll interpret this as relief. Bronxites for NYPD Accountability Co-Founder Shannon Jones says @NYCMayor is culpable: “These are Democrats fucking up your lives. We already got bamboozled by the biracial kid. We fucked up on that one....but fool me once.” pic.twitter.com/Xr3pgUyCe6 — Jake Offenhartz (@jangelooff) June 4, 2020 De Blasio has laid some of the blame for the protests on President Trump. You were very critical of the Democratic leaders in the rally ahead of the march. What would you say to those hopeful things will go back to normal if Trump is removed from office? White people want to go back to subtle racism. Remember that racism isn't limited to calling you a nigga in the store. It contains red-lining, employment discrimination, different interest rates based on your zip code. There are all of these components that create a racist society. Folks are more comfortable with the more covert manifestations of that racism than Trump's more overt version. What happened on Thursday night happened under de Blasio, a Democrat, and Governor Cuomo, a Democrat. Eric Garner was murdered with a Democrat mayor, a Democrat governor, and a Democrat president. So what does Trump have to do with Black people? That's the binary that white people set up to keep us entranced in their system. Our situation is way more nuanced than that. We're not doing this garbage anymore with “vote blue all the way down” or "Jim Crow Joe Biden." Nobody is falling for that anymore. What’s your alternative? What needs to happen is Black people need to coalesce among themselves without the interjection of white saviorism. We have a principle of unity that governs our formation. One of the main things I can encourage Black people to do is to form your own organized body that does not contain white saviorism. We're building on the shoulders of giants. When Sean Bell was murdered, mothers pulled together and formed an organization called Beware. We're building off the Black Panther Party, we're building off Beware, we're building off all these individuals with a revolutionary mindset. I want to make sure that it's not about me. We need people politically educated enough to know what it is. Don't wait for Miss Jones to do something because you'll be oppressed in the meantime. For those curious, what does Miss Jones do when she’s not organizing against police brutality? You wanna hear the gag? I work for the City of New York. Ha! I call the mayor a "bozo" and he signs my paycheck. I work for social services — we'll leave it at that. These are conundrums and contradictions that we have to confront when we do this work. One of the chief ways we've been able to escape the cycle of poverty is taking employment through the oppressive apparatus. That's why you have a lot of Black people who are cops, work for social services, work for NYCHA. But if you look at any city agency, the top levels of city agencies are white people. A protester raises a fist in Mott Haven, flanked by Shannon Jones (right) and Shellyne Rodriguez (left) C.S. Muncy/Gothamist When did you get involved in abolition organizing — and what do you think has changed since then? We formed after Eric Garner. It was similar to what you see now with George Floyd. We were going to protests three to four nights a week, especially after the grand jury. As background, I’d attended A. Philip Randolph High School in Harlem. We had all of these expressions of Black culture and Black radicalism when I was a young teen. Those things were embedded in the back of my mind. So during the Garner protests, we go to this thing at Barclays. Remember when everyone was doing die-ins? It's December. I'm laying on the ground on Atlantic Avenue. I could feel the cold from the pavement going up my ass. That's when the light bulb went off. Laying on the pavement in the middle of Atlantic Avenue surrounded by a racist police force that wants to oppress us. Nope. It didn't add up. That's when I started looking into who is who, who are these organizations, what are they calling for. What are they predicated on? What is our organization predicated on? What is justice, what is equality, what does it mean in real time? What does it look like? I had to start questioning all of that. You think organizers who call for protesters to kneel or lie down are hurting the cause? I'll put it this way: Whoever's got you marching with politicians and kneeling down, why are you kneeling in 2020? Whoever has you kneeling, hugging cops — ugh. They may talk a good motivational speech game about Black people this, Black people that, but then there's the bait and switch back to special prosecutors, legislation, and police reform. Any organizer who says anything like that is gaming you. There's a race in the Democratic party for who can be the misleader to round up the most niggers — yeah I said it. This is why [Public Advocate] Jumaane Williams has his own separate protests, it's why the lawyers have their own separate protests. They're trying to provide a different tactic than 2014 when it was 75,000 marching [down] 14th Street. What happened after that? Remember that Saturday. It was December 13th, 2014, when 75,000 marched on 14th Street. By February of 2015 when NYC Shut It Down started their protest in Grand Central, six weeks later, you couldn't get 600 people out. What happened to those organizers? What work did they do to radicalize those people? Nothing. That's the point. What happened on Brook Avenue is a metaphor for the United States. It's about kettling the anger to do the bait and switch. Now Mr. Floyd is buried, so as far as white people are concerned, they're kneeling. "Please don't destroy the front facing business corporations that give us campaign donations. We'll even put on kente cloth, please.” I would like people to build off what we already learned. Why should you be doing a kneel or a sit-in in 2020? We're trying to build scaffolds, not be in a perpetual Groundhog Day that defers Black liberation and maintains white supremacy. This interview has been edited and condensed. Source: Meet The “Outside Agitator” Whose Bronx March Was Violently Crushed By The NYPD – Gothamist

    Read at 10:03 pm, Jun 10th

  • Metal Has a White Supremacy Problem

    Metal Has a White Supremacy Problem Facebook Pixel Code DO NOT MODIFY End Facebook Pixel Code In 2016, former Pantera frontman Phil Anselmo gave the Nazi salute before yelling “White Power!” to an audience in California. Shortly after, he put out a statement attempting to excuse his behaviour by saying it was all just a big joke. A few days after that, he issued a more serious apology pleading with fans to forgive him. The reactions were mixed. The incident and subsequent apology were widely covered on most music sites, but there was no move to ‘cancel’ him or his music. As time passed, it seemed he emerged relatively unscathed from what was unequivocally an unredeemable act. That is, until this week, when Anselmo’s two New Zealand shows with his current band, The Illegals, were cancelled after the white supremacist terror attack in Christchurch. What at first began as a quick Google search on Anselmo quickly turned into a days-long research project into the grotesquely racist, bigoted, anti-semitic and homophobic views held by some highly successful metal bands, both past and present. I also find it shocking that it took me less than 30 minutes (and some mind-numbing scrolling through a few highly questionable metal forums) to find YouTube videos of Anselmo spewing similar white supremacist rhetoric in the past—all while fronting one of the biggest metal bands in the world. In March of 1995, there is video evidence of Anselmo delivering a race-fuelled speech at a Pantera show, lambasting the ‘stop black on black crime’ movement and repositioning it as an anti-white ideology, before saying, ‘All you white kids out there, let me tell you something that no other motherfucking white band in the world has any guts to say: when you wake up in the motherfucking morning and you look at yourself in the goddamn mirror, have all the fucking pride in the world, man. It’s your world.’ In a separate video, Anselmo tells another crowd, ‘If you’re here tonight, and you feel proud, and you’re white…’ before raising a fist to the air and clapping. In both videos, his words are met with rapturous applause. Six years later, in 2001, there is recorded evidence of Anselmo yelling ‘White Power’ at a Pantera show in Seoul. That same year, Pantera was nominated for a Grammy. After a bit of digging, it’s easy to come to the conclusion that Anselmo isn’t an anomaly in the metal music scene. Nor is he the norm. But it’s impossible to ignore that there is something deeply unsettling going on—a celebration of white-nationalist rhetoric delivered under the guise of shock value and artistic expression. The Black Metal scene seems to be the worst affected. There’s even a subgenre called National Socialist Black Metal (NSBM), which is pretty self-explanatory. Nope. Due to its growing popularity (especially in Eastern Europe), there’s even an NSBM festival held every year in Kiev, Ukraine, called Asgardsrei. Its claim to fame is being ‘the largest militant black metal festival in the world’, and last year boasted a lineup of 14 neo-nazi bands, including Russia’s М8Л8ТХ and Finnish national-socialist band, Goatmoon. I’m trying to just relay the facts here without letting my disdain muddy the truth, but some opportunities to mock these xenophobes are too good to pass up. Allow me this one indulgence. In a review of Asgardsrei 2018, I found this glorious description of the venue that hosted the festival’s “sealed political conference”, Pact of Steel. ‘Pact of Steel took place in the Reconquista Club which is a venue run by people connected with the wider Ukrainian Azov movement. Reconquista is a combination of restaurant and a bar, which has a fighting space where MMA fights (but also pole dancing and stand-up comedy) are regularly organized.’ Moving along. I loathe to give all these losers the attention they so desperately crave, but I think it’s important to highlight just how prevalent these white supremacist bands and their fans are. In France, the anti-immigration band Peste Noire (French for ‘The Black Plague’) just released their latest record, Split. Unsurprisingly, the music is shit. But the cover features an image of the charmingly named singer, Famine, in blackface with a chain around his neck. Further in the booklet, he appears again dressed as a member of the KKK.  The album stream, uploaded to Youtube, has over 136,000 views, whilst their previous album has double that. The worst album art in the world. Over in Norway, the white-nationalist metal scene has been thriving for decades. Two of its biggest exports, Burzum and Emperor, are deeply problematic. Burzum is the project of Varg Vikernes, a member of the White Aryan Resistance and convicted murderer with 89k Instagram followers. Emperor, touted one of the most legendary black metal groups of all time, also count a convicted murderer among its members. Their drummer, Bård Guldvik “Faust” Eithun, recently rejoined the band after serving a 15-year prison sentence for stabbing a gay man to death in a hate crime. Other members of Emperor also lent their bigotry to a side project in the early ’90s called Zyklon-B, named after the poison used in the gas chambers at Auschwitz-Birkenau. Bewilderingly, Emperor is booked to play the Metro Theatre in Sydney on April 2. Anybody have Egg Boy’s number? But wait, unfortunately, there’s more. Arguably the biggest black metal band ever, Norway’s Mayhem, toured Australia successfully only last year. Mayhem’s drummer, Jan Axel “Hellhammer” Blomberg, is a known racist who is quoted in 1998’s black metal biography, Lords of Chaos, as saying, ‘I’ll put it this way, we don’t like black people here. Black metal is for white people… I’m pretty convinced that there are differences between races as well as everything else. I think that like animals, some races are more … you know, like a cat is much more intelligent than a bird or a cow, or even a dog, and I think that’s also the case with different races.’ Even Slayer, who headlined Download festival at the beginning of this month, deserve a harder line of questioning. Over the years, the band has strongly denied any allegiance to Nazi-ideology. Known for their obsession with Nazi paraphernalia and aesthetics (their band font logo is modelled off the SS lightning bolts), they’ve also recorded two songs about notorious Nazis. ‘Angel of Death’ recounts the hideous atrocities committed on Jewish prisoners by Nazi physician Josef Mengele, while ‘SS-3’ is a song about senior SS commander Reinhard Heydrich. Both tracks were written by guitarist Jeff Hanneman, who died of alcohol-related cirrhosis in 2013. Here he is heiling Hitler in an old photo that resurfaced online. Hanneman is on the left. Both Hanneman and Slayer have long defended their use of Nazi imagery and Nazi references in the band’s songwriting, citing their keen interest in German WWII history. But, like, did you guys have to name your fan club ‘the Slaytanic Wehrmacht’ after the Nazi armed forces? I get that there’s an element of shock value in there, too, but where do you draw the line between extremism as an art form and art that actively promotes extremism? The results are in, and it’s time to face the music. Metal is a predominantly white phenomenon and it’s harbouring white supremacists. The question is, are we going to keep ignoring it? Sign up for the Monster Children Newsletter Erin Bromhead /.post Source: Metal Has a White Supremacy Problem

    Read at 09:47 pm, Jun 10th

  • AOC Grafts Gun Onto Arm, Demands You Hear the Planet’s Cries of Pain

    AOC Grafts Gun Onto Arm, Demands You Hear the Planet’s Cries of Pain By Jay Miller | June 8, 2020 ")} function e(o){return(o+"").replace(/(d)(?=(d{3})+$)/g,"$1,")}var t="https://thehardtimes.net/harddrive/aoc-grafts-gun-onto-arm-demands-you-hear-the-planets-cries-of-pain/";console.log("first url is "+t);var a="//thehardtimes.net/2020/06/08/aoc-grafts-gun-onto-arm-demands-you-hear-the-planets-cries-of-pain/";console.log("second url is "+a),axios.all([axios.get("http://graph.facebook.com/?id="+t),axios.get("http://graph.facebook.com/?id="+a)]).then(axios.spread(function(e,t){console.log("share count one is "+e.data.share.share_count),console.log("share count two is "+t.data.share.share_count),o(e.data.share.share_count+t.data.share.share_count)}))}(); NEW YORK, N.Y. — Gesturing wildly with the large machine gun that had been recently surgically grafted onto her right arm, U.S. Representative Alexandria Ocasio-Cortez urged her colleagues and constituents to hear the planet’s cries of pain in a prepared statement last week, sources say. “Companies like Murray Coal and Chevron are bleeding the Earth dry,” said Cortez while addressing other members of Congress moments after shooting hundreds of bullet holes in the wall behind her to get their attention. “The Green New Deal is the first step to protecting the planet’s dwindling lifeblood. That lifeblood is in your veins, too! Can you feel it? The planet feeds off of all of our energy, and these companies need to pay for what they’ve done!” Sources say that Cortez’s speech went uninterrupted even as she went over the balance of time granted to her by Speaker of the House Nancy Pelosi, partly due to the intimidating appearance of the enormous gatling gun arm. “What were we supposed to do, interrupt her?” said House Minority Leader Kevin McCarthy during a midday recess. “She’s got a gun for an arm, are you insane? I spoke up once and she blew a hole in the ceiling. No thank you.” While her sudden change in appearance and attitude shocked many of her constituents and political rivals, the effectiveness of Cortez’s new strategy cannot be understated. “The planet bleeds green like you and I bleed red,” shouted Cortez at her fellow members of Congress regarding the planet’s deteriorating natural resources. “The hell you think is gonna happen when it’s all gone, huh? Answer me! You gonna stand there and pretend you can’t hear the planet crying out in pain? I know you can!” At press time, Representatives Ilhan Omar, Ayana Pressley and Rashida Tlaib had donned metallic armor and red bandanas, declaring themselves members of Cortez’s recently established Avalanche Party.  Want to support Hard Times? Buy a shirt. We’ll use the money to write more articles. Source: AOC Grafts Gun Onto Arm, Demands You Hear the Planet’s Cries of Pain

    Read at 07:17 pm, Jun 10th

  • Michigan man goes viral after telling Rage Against the Machine's Tom Morello to stay out of politics | City Slang

    click to enlarge Milan Risky, Shutterstock In the hellscape that is Twitter, where the worst ideas routinely rise to the top, you can tell if a tweet is truly awful thanks to a phenomenon known (to people like us who spend way too much on that site) as "The Ratio." Esquire's Luke O'Neil defines The Ratio thusly: "If the number of replies to a tweet vastly outpaces its engagement in terms of likes and retweets, then something has gone horribly wrong." A Twitter user named Scott Castaneda of Rochester Hills achieved an impressive Ratio on Tuesday when he tweeted at Tom Morello, guitarist of political rap-rock band Rage Against the Machine, telling him to stay out of politics. "I use to be a fan until your political opinions come out," Castaneda tweeted. "Music is my sanctuary and the last thing I want to hear is political bs when i’m listening to music. As far as i’m concerned you and Pink are completely done. Keep running your mouth and ruining your fan base." Look at this beaut. Ten thousand-and-a-half replies to 1,300 likes. Textbook Ratio. Aside from having... eclectic musical tastes (Rage and Pink? In this economy?!), Castaneda's tweet is remarkable because, well, what machine did he think Rage Against the Machine were raging against exactly? The tweet was so uncanny that it led some to speculate that Castaneda could not possibly be real, and maybe was even a bot. Indeed, Castaneda tweeted rarely, had few followers, and posted pro-Trump tweets. Pretty sure the guy that was supposedly upset about Rage Against the Machine being political is a bot, nothing about his profile seems real, or maybe I'm just triggered because his bio (probably made up) pins him as being from my hometown — Adam Graham (@grahamorama) June 10, 2020 So we put on our detective hat and did some sleuthing (aka we kept scrolling down his twitter feed). His very first post, from 2015, linked to a Facebook business page that had a 586 area code. We called it. Incredibly, Castaneda picked up. When told his tweet went viral, Castaneda says he was unaware. "I'm just tired of hearing political stuff from these bands, even Pink, everybody else," he says. "It's one of those things where, can we just listen to music and we just enjoy life? EDM, techno, rock, I get all kinds of different stuff and that's my safe haven. I don't want to listen to political stuff. And once someone taints that for me, it just kills the mood." We asked when exactly he was a fan of Rage Against the Machine — whose searing 1992 debut single "Killing in the Name" takes on police brutality, and whose debut album famously features a photo of a Buddhist monk lighting himself on fire as an act of political protest. "I understand they've always been political, but it's getting worse and worse and worse," says Castaneda. "That's where I'm trying to get at. The whole thing is to the point where I'm ready to cancel out Facebook, Twitter, everything else. I don't even want to listen to this stuff anymore. So, no, I haven't checked my Twitter account. I rarely go on Twitter." We advised he check his Twitter. By the time we finished this blog post, Castaneda had made his account private. Morello had the last word, confirming that his music is, in fact, political, and always has been. Scott!! What music of mine were you a fan of that DIDN’T contain “political BS”? I need to know so I can delete it from the catalog. https://t.co/AMpmjx6540 — Tom Morello (@tmorello) June 9, 2020 We have a new events newsletter! Find out the best things to do in the area every Thursday morning in your inbox. Source: Michigan man goes viral after telling Rage Against the Machine’s Tom Morello to stay out of politics | City Slang

    Read at 01:51 pm, Jun 10th

Day of Jun 9th, 2020

  • COVID-19 Can Last for Several Months

    The disease’s “long-haulers” have endured relentless waves of debilitating symptoms—and disbelief from doctors and friends. For Vonny LeClerc, day one was March 16.

    Read at 02:58 am, Jun 10th

  • A Joe Biden Presidency Will Require Mass Protests, Too

    Donald Trump’s dangerous and unhinged response to the George Floyd protests shows why he must be defeated in November. But Joe Biden’s long, disturbing record on criminal justice suggests the era of resistance will have to continue with Biden in the White House.

    Read at 02:40 am, Jun 10th

  • Don’t Lose the Thread. The Economy Is Experiencing an Epic Collapse of Demand.

    Despite it all — a nation on edge, with an untamed pandemic and convulsive protests over police brutality — for the first time in three months there is a scent of economic optimism in the air.

    Read at 02:21 am, Jun 10th

  • Qualified Immunity: Explained

    In our Explainer series, Justice Collaborative lawyers and other legal experts help unpack some of the most complicated issues in the criminal justice system.

    Read at 10:48 pm, Jun 9th

  • This city disbanded its police department 7 years ago. Here's what happened next - CNN

    It's not the first locale to break up a department, but no cities as populous have ever attempted it. Minneapolis City Council members haven't specified what or who will replace it if the department disbands. Camden, New Jersey, may be the closest thing to a case study they can get. The city, home to a population about 17% of Minneapolis' size, dissolved its police department in 2012 and replaced it with an entirely new one after corruption rendered the existing agency unfixable. Before its police reforms, Camden was routinely named one of the most violent cities in the US. Now, seven years after the old department was booted (though around 100 officers were rehired), the city's crime has dropped by close to half. Officers host outdoor parties for residents and knock on doors to introduce themselves. It's a radically different Camden than it was even a decade ago. Here's how they did it. Why departments dissolve police A city's decision to dissolve its police department is often a matter of money -- and the cities that chose to do so are often quite small. Camden comes closest to Minneapolis in its size and history of misconduct. Earlier this year, the village of Deposit, New York, dissolved its department because it cost $200,000 per year. Now, a single sheriff's deputy is assigned to the village, CNN affiliate WICZ reported. Garden City, Missouri, laid off all of its officers and suspended its police chief because, as its mayor said in 2018, the city couldn't afford to keep them employed. In a bizarre move, Rio Vista police leadership abruptly left the department, and half of the remaining officers left for other jobs, so the California city's department could no longer go on, CNN affiliate KCRA reported in January. Camden dissolved its police department to root out corruption. The city's crime rate was among the worst in the US. Within nine square miles and among nearly 75,000 residents, there were over 170 open-air drug markets reported in 2013, county officials told CNN. Violent crime abounded. Police corruption was at the core. Lawsuits filed against the department uncovered that officers routinely planted evidence on suspects, fabricated reports and committed perjury. After the corruption was exposed, courts overturned the convictions of 88 people, the ACLU reported in 2013. So in 2012, officials voted to completely disband the department -- it was beyond reform. And in 2013, the Camden County Police Department officially began its tenure. No other city of Camden's size has done anything quite like it. How the new Camden police changed its approach City officials had two objectives in remaking Camden's police: reduce crippling violent crime and make residents feel safer. Louis Cappelli, Camden County freeholder director (another term for a county-level public official), said the department still has a ways to go, but its efforts over the last seven years have been largely successful. "Back then residents of Camden city absolutely feared the police department and members of the department," he told CNN. "They (the residents) wanted that to change." Violent crimes have dropped 42% in seven years, according to city crime data provided by the department. The crime rate has dropped from 79 per 1,000 to 44 per 1,000, the data shows. Cappelli credits the improvement to new "community-oriented policing," which prizes partnership and problem-solving over violence and punishment. It starts from an officer's first day: When a new recruit joins the force, they're required to knock on the doors of homes in the neighborhood they're assigned to patrol, he said. They introduce themselves and ask neighbors what needs improving. Training emphasizes deescalation, he said, and the department's use of force policy makes clear that deadly force is the last option. Now, police host pop-up barbecues and pull up in Mister Softee trucks to get to know residents, Cappelli said. They host drive-in movie nights -- recently, the movie of choice was "The Lion King" -- along what used to be known as the city's "Heroin Highway." The community-first initiative has made improving diversity within the force a priority, too. Whites are the minority in Camden, so Cappelli said the new department has hired more black and brown officers to serve black and brown residents. (Cappelli didn't have exact numbers for the increase, but said it's improved.) Cappelli said the new department also hired over 100 officers who previously served the dissolved Camden Police Department. They joined the department, which now employs over 400. "We want to make sure residents of the city know these streets are theirs," he said. "They need to claim these streets as their own, not let drug dealers and criminals claim them." What Minneapolis can learn from criticism of Camden Camden and Minneapolis aren't perfect mirrors. The Midwestern metropolis is predominantly white -- 63% of the population -- and less than 19% black. In Camden, less than a quarter of all residents are white, but 42% of the population is black and over 50% is Latino. Camden also has about 356,000 fewer residents. The criticisms lodged at Camden, though, may inform how Minneapolis goes about its restructuring. Ojii BaBa Madi, a lifelong resident of Camden and Justice Minister at Asbury Community Church, said he's felt no improvement in his relationship with police because many of the new officers don't live in Camden or know the community well. Additionally, the department's racial makeup isn't entirely reflective of the city it serves, he told CNN in an email. "The demographics of the city do not reflect these demographics," he said. "With a white chief, as thoughtful and progressive as he is, and only one African American captain out of seven, both the dynamics and optics of race are a problem." What has improved, he said, is officers' willingness to have a "productive dialogue" between police and community leaders like him. And the city "does feel much safer at the neighborhood level" since police started shuttering open-air drug markets. As for abolishing police entirely, Ojii said the city is "far away from any practical de-policed reality" partly because of the crime that still exists there. "I would prefer to nail some best practices for policing as it should be," he said, as the city -- and society -- figures out how to change law enforcement as it exists now. Nyeema Watson, also a lifelong Camden resident who's the associate chancellor for civic engagement at Rutgers University -- Camden, said she thinks the restructuring has had a largely positive impact. Officers are more visible now, and they're building trust and welcoming feedback. Camden County Police Chief Joseph Wysocki marched with Camden residents in a "Black Lives Matter" protest in May. Hearing him acknowledge the "rightful pain, anger and frustration" black residents feel about police brutality was powerful, Watson said. Watson and Ojii agreed the city's problems remain unsolved. Those require more work than a shift in law enforcement alone can provide. "We can't police our way out of social issues, unemployment, disproportionate health issues, economic challenges -- these are things that drive crime," Watson said. When the city improves access to education for its residents, they'll better understand systemic racism within law enforcement and how to dismantle it, she said. "There are so many issues in our city, outside of policing, that promote a constant level of tension," Ojii said, naming gentrification, poverty and addiction among them. "In essence, Camden remains a tale of two cities." Source: This city disbanded its police department 7 years ago. Here’s what happened next – CNN

    Read at 10:21 pm, Jun 9th

  • New York senate lawmakers repeal 50-A law shielding police records - New York Daily News

    “We, as professionals, are under assault,” Pat Lynch, the president of the Patrolmen’s Benevolent Association, representing rank-and-file NYPD officers, said during a press conference earlier Tuesday. “And this in a backdrop of a night when we had seven shootings (in Brooklyn) in seven minutes.” Source: New York senate lawmakers repeal 50-A law shielding police records – New York Daily News

    Read at 09:52 pm, Jun 9th

  • TypeScript: narrowing types via type guards and assertion functions

    In TypeScript, a value can have a type that is too general for some operations – for example, a union type. This blog answers the following questions: What is narrowing of types? (Spoiler: focusing on a subset of an overly general type, in a specific region of a program) What are type guards and assertion functions and how can we use them to narrow types? more Table of contents: When are static types too general?   To see how a static type can be too general, consider the following function getScore(): assert.equal( getScore(), ); assert.equal( getScore(), ); The skeleton of getScore() looks as follows: { } Inside the body of getScore(), we don’t know if the type of value number or string. Before we do, we can’t really work with value. Narrowing via if   The solution is to check the type of value at runtime, via typeof (line A and line B): { ( value === ) { value; value; } ( value === ) { value; value.length; } ( + value); } In this blog post, we interpret types as sets of values. (For more information on this interpretation and another one, see “What is a type in TypeScript? Two perspectives”.) Inside the then-blocks starting in line A and line B, the static type of value changes, due to the checks we performed. We are now working with subsets of the original type number|string. This way of reducing the size of a type is called narrowing. Checking the result of typeof and similar runtime operations are called type guards. Note that narrowing does not change the original type of value, it only makes it more specific as we pass more checks. Narrowing via switch   Narrowing also works if we use switch instead of if: { ( value) { : value; value; : value; value.length; : ( + value); } } More cases of types being too general   These are more examples of types being too general: Nullable types: {} {} Discriminated unions: Teacher = { kind: , teacherId: }; Student = { kind: , studentId: }; Attendee = Teacher | Student; {} Types of optional parameters: {} Note that these types are all union types! The type unknown   If a value has the type unknown, we can do almost nothing with it and have to narrow its type first (line A): { result: unknown = .parse(stringLiteral); ( result === ) { result; } ( + stringLiteral); } In other words: The type unknown is too general and we must narrow it. In a way, unknown is also a union type (the union of all types). Narrowing via built-in type guards   As we have seen, a type guard is an operation that returns either true or false – depending on whether its operand meets certain criteria at runtime. TypeScript’s type inference supports type guards by narrowing the static type of an operand when the result is true. Strict equality (===)   Strict equality works as a type guard: { (value === ) { value; } } We can also use === to differentiate between the components of a union type: Book { title: | ; isbn: ; } { (book.title !== ) { book.title; book.title; } { book.title; ; } } typeof, instanceof, Array.isArray   These are three common built-in type guards: { ( value === ) { value; } (value ) { value; } (.isArray(value)) { value; } } Note how the static type of value is narrowed inside the then-blocks. Checking for distinct properties via the operator in   If used to check for distinct properties, the operator in is a type guard: FirstOrSecond = | {first: } | {second: }; { ( firstOrSecond) { firstOrSecond; } } Note that the following check would not have worked: { (firstOrSecond.second !== ) { } } The problem in this case is that, without narrowing, we can’t access property .second of a value whose type is FirstOrSecond. The operator in doesn’t narrow non-union types   Alas, in only helps us with union types: { ( obj) { obj; obj.name; } } Checking the value of a shared property (discriminated unions)   In a discriminated union, the components of a union type have one or more properties in common whose values are different for each component. As a consequence, checking the value of one of those properties is a type guard: Teacher = { kind: , teacherId: }; Student = { kind: , studentId: }; Attendee = Teacher | Student; { (attendee.kind) { : attendee; attendee.teacherId; : attendee; attendee.studentId; : (); } } In the previous example, .kind is a so-called discriminating property: All components of the union type Attendee have it and it has a different value in each one. An if statement and equality checks work similarly to a switch statement: { (attendee.kind === ) { attendee; attendee.teacherId; } (attendee.kind === ) { attendee; attendee.studentId; } { (); } } Narrowing dotted names   We can also narrow the types of properties (even of nested ones that we access via chains of property names): MyType = { prop?: | , }; { ( arg.prop === ) { arg.prop; [].forEach( { arg.prop; }); arg.prop; arg = {}; arg.prop; } } Let’s take a look at several locations in the previous code: Line A: We narrowed the type of arg.prop via a type guard. Line B: Callbacks may be executed much later (think of asynchronous code), which is why TypeScript undoes narrowing inside callbacks. Line C: The preceding assignment also undid narrowing. Narrowing Array element types   The Array method .every() does not narrow   If we use .every() to check that all Array elements are non-nullish, TypeScript does not narrow the type of mixedValues (line A): mixedValues: ReadonlyArray<||> = [, , , ]; (mixedValues.every(isNotNullish)) { mixedValues; } Note that mixedValues has to be read-only. If it weren’t, another reference to it would statically allow us to push null into mixedValues inside the if statement. But that renders the narrowed type of mixedValues incorrect. The previous code uses the following user-defined type guard (more on what that is soon): { value !== && value !== ; } NonNullable<Union> (line A) is a utility type that removes the types undefined and null from union types Union. The Array method .filter() produces Arrays with narrower types   .filter() produces Arrays that have narrower types (i.e., it doesn’t really narrow existing types): mixedValues: ReadonlyArray<||> = [, , , ]; numbers = mixedValues.filter(isNotNullish); (isNotNullish() is defined in the previous subsection.) Alas, even here, we must use a type guard function directly – an arrow function with a type guard is not enough: stillMixed1 = mixedValues.filter( x !== && x !== ); stillMixed2 = mixedValues.filter( x === ); User-defined type guards   TypeScript lets us define our own type guards – for example: The return type value is Function is a type predicate. It is part of the type signature of isFunction(): isFunction; A user-defined type guard must always return booleans. If isFunction(x) returns true, TypeScript can narrow the type of the actual argument x to Function: { (isFunction(arg)) { arg; } } Note that TypeScript doesn’t care how we compute the result of a user-defined type guard. That gives us a lot of freedom w.r.t. the checks we use. For example, we could have implemented isFunction() as follows: { { value(); ; } { ; } } Alas, the type unknown does not let us make the function call in line A. Therefore, we have to use the type any for the parameter value. Example of a user-defined type guard: isArrayInstanceof()   { arr; (!.isArray(arr)) { ; } arr; (!arr.every( elem Class)) { ; } arr; ; } This is how this function is used: value: unknown = {}; (isArrayInstanceof(value, )) { value; } Example of a user-defined type guard: isTypeof()   A first attempt   This is a first attempt to implement typeof in TypeScript: { (prim === ) { value === ; } value !== && ( prim) === ( value); } Because it is difficult to turn an expected result of typeof (such as 'boolean' or 'number') into a type T, we opted to specify T via an example value. This is not ideal, but it works: value: unknown = {}; (isTypeof(value, )) { value; } Using overloading   A better solution is to use overloading (several cases are omitted): ; ; ; { value === typeString; } value: unknown = {}; (isTypeof(value, )) { value; } (This approach is an idea by Nick Fisher.) Using an interface as a type map   An alternative is to use an interface as a map from strings to types (several cases are omitted): TypeMap { : ; : ; : ; } { value === typeString; } value: unknown = {}; (isTypeof(value, )) { value; } (This approach is an idea by Ran Lottem.) Assertion functions   An assertion function checks if its parameter fulfills certain criteria and throws an exception if it doesn’t. For example, one assertion function supported by many languages, is assert(). assert(cond) throws an exception if the boolean condition cond is false. On Node.js, assert() is supported via the built-in module assert. The following code uses it in line A: assert ; { dotIndex = filename.lastIndexOf(); assert(dotIndex >= ); filename.slice(, dotIndex); } TypeScript’s support for assertion functions   TypeScript’s type inference provides special support for assertion functions, if we mark such functions with assertion signatures as return types. W.r.t. how and what we can return from a function, an assertion signature is equivalent to void. However, it additionally triggers narrowing. There are two kinds of assertion signatures: Asserting a boolean argument: asserts «cond» Asserting the type of an argument: asserts «arg» is «type» Asserting a boolean argument: asserts «cond»   In the following example, the assertion signature asserts condition states that the parameter condition must be true. Otherwise, an exception is thrown. { (!condition) { (); } } This is how assertTrue() causes narrowing: { assertTrue(value Set); value; } The invocation of the assertion function assertTrue() in line A influenced the static type of value in line B (in a manner similar to type guards). Asserting the type of an argument: asserts «arg» is «type»   In the following example, the assertion signature asserts value is number states that the parameter value must have the type number. Otherwise, an exception is thrown. { ( value !== ) { (); } } This time, calling the assertion function, narrows the type of its argument: { assertIsNumber(value); value; } Example assertion function: adding properties to an object   The function addXY() adds properties to existing objects and updates their types accordingly: { .assign(obj, {x, y}); } obj = { color: }; addXY(obj, , ); obj; An intersection type S & T produces a type that has the properties of both S and T. Quick reference: user-defined type guards and assertion functions   User-defined type guards   { value === ; } Type predicate: value is string Result: boolean Assertion functions   Assertion signature: asserts «cond»   { (!condition) { (); } } Assertion signature: asserts condition Result: void, exception Assertion signature: asserts «arg» is «type»   { ( value !== ) { (); } } Assertion signature: asserts value is string Result: void, exception Alternatives to assertion functions   Technique: forced conversion   An assertion function narrows the type of an existing value. A forced conversion function returns an existing value with a new type – for example: { ( value === ) { value; } (); } value1a: unknown = ; value1b = forceNumber(value1a); value2: unknown = ; assert.throws( forceNumber(value2)); The corresponding assertion function looks as follows: { ( value !== ) { (); } } value1: unknown = ; assertIsNumber(value1); value1; value2: unknown = ; assert.throws( assertIsNumber(value2)); Forced conversion is a versatile technique with uses beyond being an alternative to assertion functions. For example, you can convert an input format (think JSON schema) that is easy to write into an output format that is easy to work with in code. Technique: throwing an exception   Consider the following code: { (strMap.has(key)) { value = strMap.get(key); value; (value === ) { (); } value; value.length; } ; } Instead of the if statement that starts in line A, we also could have used an assertion function: assertNotUndefined(value); Throwing an exception is quick alternative if we don’t want to write such a function. Similarly to calling an assertion function, this technique also updates the static type. @hqoss/guards: library with type guards   The library @hqoss/guards provides a collection of type guards for TypeScript – for example: Primitives: isBoolean(), isNumber(), etc. Specific types: isObject(), isNull(), isFunction(), etc. Various checks: isNonEmptyArray(), isInteger(), etc. Source: TypeScript: narrowing types via type guards and assertion functions

    Read at 02:01 pm, Jun 9th

  • Battleship Newspaper - PressThink

    Battleship Newspaper Dean Baquet has a phrase for it: We are not the resistance. But if that were entirely true, James Bennet would still have a job. 8 Jun 2020 2:27 am 36 Comments → It was 2005 when Bob Sipchen, then an editor at the Los Angeles Times, said at a public forum about bloggers and journalists that he had always thought of the LA Times as “a heavy battleship under steam, regarding its critics as no more important than swimmers in the water throwing dead fish at it.” I begin with this almost surreal image from 15 years ago — newspaper as giant battleship moving slowly out of harbor, critics so impotent they can only toss dead fish at it — because it shows how much has changed for the people formerly known as newspaper journalists, and especially for the editors who try to steer these organizations. They have suffered a massive loss in power as the media and political worlds have changed around them. To whom has this power gone? To the tech platforms that have a stronger hold on the audience for news; they do a better job and charge a fairer price for targeted advertising. To the internet itself, which continues to disassemble the newspaper “bundle” into specialist sites that satisfy niche audiences. To the faux-populists preaching resentment politics who have turned the “liberal media” into their always-on hate object, accelerating a loss of trust in the journalism that big city newspapers once practiced with impunity. Power has been lost to Fox News. And to the trolls, including the one in the White House. And to sources who can find a following without playing ball with the press. Battleship Newspaper was built for a world that has largely vanished. That means a lot of ideas have to come down that are still standing, like statues from an earlier era. This is my primary takeaway from the events at the New York Times last week that resulted in the resignation of editorial page editor James Bennet, who was thought to be one of the favorities to replace executive editor Dean Baquet when Baquet retires. (He is 63.) Bennet left because his opinion section published “Send in the Troops” by Republican Senator Tom Cotton. It argued for intervention by the U.S. military in response to a nationwide protest movement that has taken up the Black Lives Matter cause. “Rioters have plunged many American cities into anarchy, recalling the widespread violence of the 1960s,” Cotton wrote. “One thing above all else will restore order to our streets: an overwhelming show of force to disperse, detain and ultimately deter lawbreakers.” “Send in the Troops” went online Wednesday afternoon, June 3. It drew intense criticism that evening, including unprecedented resistance from Times journalists who took to Twitter to say, “Running this puts Black @nytimes staff in danger.” But James Bennet defended the decision to publish it. His logic: I don’t agree with it myself, but we have to be open to opposing points of view. (“Times Opinion owes it to our readers to show them counter-arguments, particularly those made by people in a position to set policy.”) Publisher A.G. Sulzberger also supported the decision in a memo he later called a “placeholder” pending further review. By Thursday night June 4 that review had come to a startling conclusion: “A rushed editorial process led to the publication of an Op-Ed that did not meet our standards.” On Friday Bennett apologized to his colleagues in a tense staff meeting. An editor’s note was then attached to Cotton’s Op Ed: After publication, this essay met strong criticism from many readers (and many Times colleagues), prompting editors to review the piece and the editing process. Based on that review, we have concluded that the essay fell short of our standards and should not have been published… For example, the published piece presents as facts assertions about the role of “cadres of left-wing radicals like antifa”; in fact, those allegations have not been substantiated and have been widely questioned. Two days later James Bennet resigned. Where to begin in interpreting these events? Where I begin is with the opening paragraphs of Michelle Goldberg’s outstanding column in the Times on June 4. Before Donald Trump became president, most newspaper op-ed pages sought to present a spectrum of politically significant opinion and argument, which they could largely do while walling off extremist propaganda and incitement. The Trump presidency has undermined that model, because there’s generally no way to defend the administration without being either bigoted or dishonest. In normal times, editors pick and choose among critics and defenders of the people in power in order to create a lively mix of plausible views. That’s what opinion journalism is at daily newspapers… in normal times. But what if times change? The Trump presidency is demagogic and mostly fact-free. What if there is no way to defend the government without practicing bigotry or demagoguery— or just making stuff up? This is the kind of question editors at the New York Times have tried to avoid. They want to declare it impossible. And by trying to avoid it, by declaring it impossible, James Bennet lost his way, then lost his job. Michelle Goldberg again: Opinion sections, eager to maintain ideological diversity without publishing lies or stuff that belongs in Breitbart, have therefore filled up with anti-Trump conservatives. As a result, newspapers like this one have often been criticized for elevating an intellectual clique that has little mass base or political influence. Tom Cotton’s “Send In the Troops” was supposed to be provocative. A joint product of Cotton’s staff and Times editors, it was designed to challenge core readers with a point of view they were likely to reject, but still ought to hear. That was the idea, anyway. Rather than construct a “both sides” world out of liberals and conservatives who share a common opposition to Trump, the Times went to a Trump backer and rising star who could provide more friction than, say, Charlie Sykes. Cotton delivered on his end. The editors could not deliver on theirs. This we learn by returning to the web address where “Send In the Troops” was first published. With the editor’s note attached that page now says, absurdly: here we bring you an essay we should never have brought you. The New York Times was unable to sustain an act of publishing that was supposed to challenge its audience. Why? Because it lacks courage and can’t stand the heat? That’s what Cotton, Trump and their allies would say. (And this episode is a huge propaganda win for them, a successful troll.) My answer is different. Battleship Newspaper lives on, intellectually, but the costs are mounting. Ideas born in that era have refused to die, and their continuation is proving more and more costly. Debate club democracy — where people of good will share a common world of fact but disagree on what should be done — is an expensive illusion to maintain during a presidency that tries to undermine every independent and factual check there is on the executive’s power, not just a free press and its journalism, but the intelligence community, the diplomatic corps, the civil service, government scientists, inspectors general, and Congress in its oversight function. Stories about the Trump government undermining all of these have appeared in the New York Times. They are ably reported. But at some point the light bulb has to flick on. This isn’t debate club. It’s an attack on the institutions of American democracy. Just as police work in our cities isn’t law enforcement constrained by the Constitution. It’s systemized suspicion of Black people, free of Constitutional constraint, and it frequently ends in violence. The idea that the New York Times can never reach conclusions like this, and build them into its core values, because it has to remain neutral in order to be trusted as a news source by the very people who reject those values  — an idea I have called the view from nowhere — might have been a mistaken-but-survivable construct in the era of Battleship Newspaper. That is no longer the case. Many decades ago, the leadership class in big league journalism accepted the argument that racial integration had to come to their newsrooms, or the journalism would suffer. Or at least, this is what they said to themselves. But what they also said (without quite realizing it) is: We can have all that, a more diverse and multi-colored newsroom, and maintain the view from nowhere. They never faced up to the contradiction: minority journalists who are supposed to simultaneously supply a missing perspective and suppress that perspective in order to establish their objectivity. Appearing on CNN the same day that James Bennet resigned, Times reporter Nikole Hannah-Jones, who is African American and a Pulitzer Prize winner, made the connection explicit: “This adherence to even-handedness, both-sidism, the ‘view from nowhere’ doesn’t actually work in the political circumstances that we’re in.” A few days earlier it was Wesley Lowery, formerly of the Washington Post, and now at 60 Minutes: American view-from-nowhere, “objectivity”-obsessed, both-sides journalism is a failed experiment. We need to fundamentally reset the norms of our field. The old way must go. We need to rebuild our industry as one that operates from a place of moral clarity — Wesley (@WesleyLowery) June 4, 2020 Lowery also told Ben Smith, media columnist of the Times, that the “core value needs to be the truth, not the perception of objectivity.” Elite newsrooms badly need people like Wesley Lowery and Nikole Hannah-Jones. But these people have no need for detritus from the age of Fortress Journalism. They aren’t going to shut up. And they aren’t throwing dead fish. Their moral clarity is a rebuke and wake-up call to an older generation of journalists. In November of 2019, Ben Smith, then at Buzzfeed, published a long article on the succession drama at the New York Times. Who will replace Dean Baquet? He also checked in with some of the arguments made in this post. Smith concludes his piece this way: And what about the Times that Sulzberger and Baquet hear so much about from critics on Twitter, from grumbling subscribers, and from much of the young generation of their own newsroom? The one that stops trying to be perceived as fair by Trumpian critics whose beef is with journalism itself, and shakes off the old obsession with political neutrality? Sorry. The phrase I heard to dismiss that again and again: “It’s just not in our DNA.” Dean Baquet and his lieutenants have another phrase: We are not the resistance. But if that were entirely true, James Bennet would still have a job. The Times has evolved a lot since 2005. But now it has to update its pressthink; it has to evolve politically. That’s not in the newsroom’s DNA. But it is the call of the times. Source: Battleship Newspaper – PressThink

    Read at 01:42 pm, Jun 9th

  • Minneapolis City Council Members Announce Intent To Disband The Police Department, Invest In Proven Community-Led Public Safety - The Appeal

    FEATURED HEADLINES Minneapolis City Council Members Announce Intent To Disband The Police Department, Invest In Proven Community-Led Public Safety The move follows the police killing of George Floyd and more than a week of uprisings, where hundreds of thousands of people around the world have protested against police violence, and abusive police responses to the protests. IF FEATURED IMAGE AUTHOR, DATE & SOCIAL SHARE IN LARGE SCREENS Jay Willis Jun 07, 2020 Share Minneapolis City Council Members Announce Intent To Disband The Police Department, Invest In Proven Community-Led Public Safety The move follows the police killing of George Floyd and more than a week of uprisings, where hundreds of thousands of people around the world have protested against police violence, and abusive police responses to the protests. AUTHOR, DATE & SOCIAL SHARE IN LARGE SCREENS content_sections: On Sunday afternoon, a veto-proof majority of Minneapolis City Council members announced their commitment to disbanding the city’s embattled police department, which has endured relentless criticism in the wake of the police killing of George Floyd, an unarmed Black man, on May 25.  “We’re here because we hear you. We are here today because George Floyd was killed by the Minneapolis Police. We are here because here in Minneapolis and in cities across the United States it is clear that our existing system of policing and public safety is not keeping our communities safe,” Minneapolis City Council President Lisa Bender said Sunday. “Our efforts at incremental reform have failed. Period.” The City Council’s decision follows those of several other high-profile partners, including Minneapolis Public Schools, and the University of Minnesota, and Minneapolis Parks and Recreation, to sever longstanding ties with the MPD.  The announcement today also arrives after several members of the Council have expressed a complete loss of confidence in the Minneapolis Police Department. “We are going to dismantle the Minneapolis Police Department,” tweeted Council Member Jeremiah Ellison on June 4, pledging to “dramatically rethink” the city’s approach to emergency response. In a TIME op-ed published the next day, Council Member Steve Fletcher cited the MPD’s lengthy track record of misconduct and “decades-long history of violence and discrimination”—all of which are subjects of an ongoing Minnesota Department of Human Rights investigation—as compelling justifications for the department’s disbandment. “We can resolve confusion over a $20 grocery transaction without drawing a weapon or pulling out handcuffs,” Fletcher wrote.  Minneapolis Mayor Jacob Frey said last night that he opposed disbanding the police department at a protest organized and led by Black Visions Collective against police violence in the city. That answer earned him a thundering chorus of boos and chants of “Shame!” and “Go home, Jacob, go home!” The New York Times called the scene a “humiliation on a scale almost unimaginable outside of cinema or nightmare.” “The last Democratic mayor, Betsy Hodges, handled the murder of Jamar [Clark] poorly. We told her she was going to lose her job. And she did,” Miski Noor, a Black Visions Collective organizer, said on Frey’s refusal to support disbanding the Minneapolis Police Department. Since taking office in January 2018, Frey has overseen reforms to the MPD’s body camera policy that impose harsher discipline on officers who fail to comply, and barred officers from participating in so-called “Bulletproof Warrior” training, which encourages law enforcement to use deadly force if they feel their lives are in jeopardy. The officer who shot and killed Philando Castile during a 2016 traffic stop had attended a seminar two years earlier.   More recently, however, Frey has faced criticism from community groups for supporting increases to the MPD’s budget, and for the city’s failure to invest significantly in community-based public safety programs during his tenure.  For years, activists have argued that MPD has failed to actually keep the city safe, and City Councilmembers echoed that sentiment today during their announcement. MPD’s record for solving serious crimes in the city is consistently low. For example, in 2019, Minneapolis police only cleared 56 percent of cases in which a person was killed. For rapes, the police department’s solve rate is abysmally low. In 2016, their clearance rate for rape was just 22 percent. In other words, four out of every five rapes go unsolved in Minneapolis. Further casting doubt on the department’s commitment to solving sexual assaults, MPD announced last year the discovery of 1,700 untested rape kits spanning 30 years, which officials said had been misplaced.  The Council’s move is consistent with rapidly-shifting public opinion regarding the urgency of overhauling the American model of law enforcement. Since Floyd’s killing and the protests that ensued, officials in Los Angeles and New York City have called for making deep cuts to swollen police budgets and reallocating those funds for education, affordable housing, and other social services. Law enforcement officers are not equipped to be experts in responding to mental health crises, often leading to tragic results—nationally, about half of police killings involve someone living with mental illness or disability. As a result, public health experts have long advocated for dispatching medical professionals and/or social workers, not armed police, to respond to calls related to substance use and mental health. Polling from Data for Progress indicates that more than two-thirds of voters—68 percent—support the creation of such programs, versions of which are already in place in other cities such as, Eugene, Oregon; Austin, Texas; and Denver, Colorado.  “Our commitment is to do what is necessary to keep every single member of our community safe and to tell the truth that the Minneapolis Police are not doing that,” Bender said Sunday. “Our commitment is to end our city’s toxic relationship with the Minneapolis Police Department, to end policing as we know it, and to recreate systems of public safety that actually keep us safe.” CORRECTION: Rape clearance data cited in story is from 2016, not 2018. Source: Minneapolis City Council Members Announce Intent To Disband The Police Department, Invest In Proven Community-Led Public Safety – The Appeal

    Read at 01:20 pm, Jun 9th

  • NYC Experiments With Routing 911 Calls To Mental Health Experts - Gothamist

    NYC Experiments With Routing 911 Calls To Mental Health Experts In a Staten Island pilot program, only 3 percent of calls to 911 involving emotionally disturbed persons were routed to NYC Well. Courtesy NYPD From the moment Mayor Bill de Blasio took office in 2014, he’s been convening task forces and announcing initiatives to improve the way people with mental health issues interact with the criminal justice system. "For far too long, our city's jails have acted as de facto mental health facilities,” he said in announcing his Mayor’s Task Force on Behavioral Health and the Criminal Justice System in June of that year. Yet, for the most part, the new mental health resources the administration has invested in are not currently linked to 911—the number most people call in case of an emergency. As a result, in the nearly 180,000 cases in which someone called 911 last year to report an “emotionally disturbed person,” police and/or Emergency Medical Services (EMS) remained the default first responders, with no guarantee they had special mental health training. For New Yorkers who live with a mental illness, that’s a problem: They say it can be humiliating to have police cars and ambulances show up at their homes, they complain that too often the only response available is a trip to the emergency room or the police precinct, and—most disturbingly—they fear they will be added to the growing tally of people with mental illnesses who have been fatally shot by police officers. When a mental health–related call comes in to 911, for example, the dispatcher does not specifically send out police officers who have gone through the city’s crisis intervention training, which teaches officers how to de-escalate situations involving someone in a mental health crisis (although each precinct can opt to send out a trained officer for backup). Nor can the 911 dispatcher send a mobile crisis team staffed by mental health professionals. Those teams—as well as the city’s co-response teams, which pair police officers with a mental health professional—can be sent out in response to calls to the city’s dedicated mental health hotline, NYC Well, but not via 911. But all that may be poised to change. The city is beginning to experiment with creating more options for triaging mental health calls that come through 911; it’s just moving very cautiously. Between late July 2018 and April 2019, the NYPD and FDNY quietly conducted a pilot on Staten Island in which some calls to 911 were rerouted to NYC Well. The hotline can provide phone counseling and referrals to treatment, in addition to sending out teams of mental health professionals to check on someone in person (although these can take up to two days to arrive). During the pilot, approximately 4,500 calls were made to 911 involving emotionally disturbed persons on Staten Island. Of those, the EMS operators determining referrals decided that some 150—just 3 percent—could be handled by NYC Well. The low number of calls that were redirected appears to be largely by design. “The factors for connecting callers to NYC Well included that they be indoors, in a quiet place, in a private location conducive to important conversations,” explained an NYPD spokesperson via email. He added that for a call to be redirected, the person in need of assistance—not just the person calling on their behalf—had to be able to speak directly to an NYC Well counselor. “For inherently dangerous events located outside, in public areas, or involving violence, weapons, or touching on the issue of suicide, the NYPD and EMS responded,” the spokesperson said. It’s possible that more calls could be directed to NYC Well if the pilot is expanded. “My understanding is that conversations are ongoing about what types of calls should be diverted,” says Susan Herman, director of the city’s ThriveNYC office, which was familiar with but not directly involved in the pilot. As the city explores more options for triaging mental health-related 911 calls, it will be a test of how willing the de Blasio administration is to heed the pleas of those in the mental health community who have called for minimizing the role of police and empowering alternative mental health responders. The Crisis Prevention and Response Task Force the mayor convened last year is, after a months-long delay, now scheduled to release its recommendations in the coming weeks. One of the task force’s recommendations, according to Herman, will be to have co-response teams composed of both police officers and mental health professionals respond to mental health situations that are deemed to be emergencies, rather than police alone. Before considering a change citywide, the city will roll out pilot programs in one or two precincts in which 911 will be able to directly deploy co-response teams to respond to mental health calls. “One goal of co-response responding to 911 calls would be more voluntary compliance on the part of the person you're responding to,” Herman tells Gothamist. “And if they're already in treatment or have been to a particular hospital, it would be more likely they would be connected to their health care provider.” In the three years since the city created its co-response program, it has been used sparingly. Since co-response teams are not currently linked to 911, they are instead referred to cases by other police officers, or less commonly, NYC Well. “In some cases, teams were able to connect people to housing, re-connect them to family, or connect to ongoing treatment, leading to many fewer interactions with police and increasing stability in their lives,” a spokesperson for the health department told Gothamist in an email. Much of the existing literature that exists on co-response teams focuses on describing how the model works in different cities, rather than measuring results. However, the research that is available suggests that co-response teams can reduce arrests and emergency room visits as well as repeat calls for service. But mental health advocates in New York are seeking to move the needle on what’s considered progressive. In supporting co-response teams as first responders, the de Blasio administration is set to clash with Communities for Crisis Intervention Teams in NYC, a coalition of about 70 organizations serving people with behavioral health issues. The group previously pushed for the city to adopt crisis intervention training and supported co-response teams, but has recently shifted its platform to reject any response involving police. “The fact is that just the sight of a police officer scares some people in the mental health community,” says Carla Rabinowitz, advocacy coordinator at the mental health nonprofit Community Access and an organizer with CCITNYC. When the NYPD was facing scrutiny from the city council in 2017 over a rash of incidents in which police fatally shot people with mental illnesses, Herman pointed out that only about one percent of mental health-related 911 calls resulted in any use of force. But those incidents have demonstrated the extent to which police can escalate an already tense situation, and have put many people with mental illnesses and their families on edge. Moving forward, Herman says, the city is aiming to build up its capacity for “health-only” responses to mental health calls. But she adds that certain types of situations will always trigger a police response. "If a person is deemed to be in an emergency situation in which they are likely to hurt themselves or someone else, it's very likely there will be a police officer involved in that,” Herman says. “If it's not an emergency situation, but it's urgent and not violent, then it's likely we will have more calls answered by health-only teams [in the future].” There’s no agreed-upon definition of what constitutes an emergency situation in which someone is “likely to hurt themselves or someone else.” Even among those within the mental health community who acknowledge that police officers are generally not the best equipped to handle mental health situations, there is little consensus about when it’s appropriate for them to get involved. Some say the authority officers wield makes it possible for them to defuse situations that non-police responders might not be able to. Alice, a peer specialist in a community center for people with mental illnesses, says that her colleagues have called police on rare occasions when they’re unable to de-escalate a disruptive situation. “Mostly, the police get called when somebody is belligerent or breaking things or screaming and cursing,” she said. “We don’t have those situations so often, because most people have been in recovery for a long time. But if someone presents as being a danger and we’re not able to get the situation under control, we definitely would call 911.” Alice, who declined to use her real name because she isn’t authorized to speak to press, added, “We can’t put our hands on anyone and force them to leave, so the police have more authority in that respect. People will listen to them more because people are scared of police and scared of getting arrested.” Still, Alice, who has bipolar disorder, says she agrees that police shouldn’t be the go-to response for mental health situations. When her mom called 911 a few years ago to have police check on Alice at home because she sounded suicidal, “it was really humiliating,” she says. “I went outside with them and we talked on a street corner, but everyone in the building is so nosy,” Alice recalls. Police officers, she says, are “not equipped to assess someone’s mental health.” In seeking out a model that does more to empower non-police responders, CCITNYC has pointed to CAHOOTS (Crisis Assistance Helping Out on the Street), a program that has operated in Eugene, Oregon, for 30 years. CAHOOTS has gained more national attention of late as cities across the country have sought to reform their responses to mental health calls. Each CAHOOTS team consists of a medic and a mental health counselor, providing more leeway in the types of situations they can handle. (New York’s mobile crisis teams are staffed only by mental health professionals.) CAHOOTS teams travel in a van that’s designed to accommodate a quiet counseling session, or if necessary to transport someone to the hospital or another location—say, a pharmacy to refill a prescription—while mobile crisis has to call 911 if someone needs to go to the hospital. And CAHOOTS teams can be dispatched by 911. CAHOOTS has achieved this level of empowerment not by isolating itself from police, but rather by developing a close working relationship with them over the years, says Chelsea Swift, a crisis worker at the nonhierarchical organization who also does outreach and education on the model to other cities. In fact, the name was originally chosen as a nod to the fact that the self-described “hippies” staffing the vans were willing to collaborate with the cops. CAHOOTS workers are in frequent contact with the police, using earbuds instead of radios in order to appear more approachable. Sometimes, Swift says, a police team will respond to a 911 call first to ensure the situation is not dangerous, calling on a CAHOOTS team to be stationed nearby so they can take over once the scene is cleared. Swift says she understands some activists’ desire to create a mental health response system that’s totally separate from police. “But because we’re embedded like we are, that lets us limit the scope of police work,” she says. There is no magic bullet, though. CAHOOTS, for its part, has not completely eliminated fatal encounters between police and people with mental illnesses in the communities in which it operates. The best any mental health team can do, says Swift, is try to divert as many calls for help as possible. NYC news never sleeps. Get the Gothamist Daily newsletter and don't miss a moment. Source: NYC Experiments With Routing 911 Calls To Mental Health Experts – Gothamist

    Read at 01:11 pm, Jun 9th

  • Alternatives to the Police

    “Asking the question ‘what are alternatives to policing?’ is to ask the question ‘what are alternatives to capitalism?’” said Luis Fernandez, Professor of Criminology and Criminal Justice at Northern Arizona University, in a phone interview with The Daily. By definition, policing is the regulation and control of a community – “the role of the police is to maintain the capitalist social order,” Fernandez said. “A lot of [the] time the role of police is to maintain the social order so that those particular people who have power can do their business with the least amount of disruption...possible.” Part of maintaining the current social order means that the police force does not treat everyone on a level playing field. “Capitalism develops very specific kinds of social arrangements, that for the most part require a very strong stratification of people. You need police to maintain that particular kind of order…[the actions of the police are] not equally distributed – it’s not equal opportunity policing,” Fernandez said. This leads to higher rates of police brutality and incarceration in less privileged populations. Activities such as watching, recording, and noting police activities – promoted by activist networks such as Copwatch – can occasionally work to counteract the aggressive actions of the police by changing the power dynamic in favour of the people who may otherwise be harmed by the police. “[Copwatch] has a certain kind of Foucauldian power where the police officers, if they think they are going to be watched, they are much less likely to abuse people,” Fernandez said. Imagining a world without police, however, is daunting – without police, who would respond to emergencies? Who would we call when we see a crime being committed? Despite this, Fernandez doesn’t see a society without police to be that far off. “Most of our communities already exist without policing. Most of our human interactions are already outside of the purview of police officers,” he said. “Most of the social relationships between people do not require police intervention,” he added. While a complete abolition of the police system would require a change in social order, some alternatives to the current police system set out to empower people to keep their communities safe, while encouraging everyone to live lives that are free of violence and oppression. A society with little or no policing requires strong community organizations to mediate and react to conflict when it does occur. Restorative justice Restorative justice, as an example of an alternative to police, has a long history in Canada, particularly within Indigenous communities. It traditionally lessens the state’s role in dealing with crime, and focuses on methods like mediation, dialogue, and reconciliation, instead of punishment. Founded on the principle that traditional apparatuses of the criminal justice system typically do not take into account the needs of victims, restorative justice works to include victims in the process. It functions with the voluntary participation of victims, offenders, and community members. Victims typically address how the crime has impacted their lives, and offenders are encouraged to take responsibility. “The collective body of citizens has the ability, in a deliberative, consensus model, to determine with the offender, whether the offender goes to jail or not,” Fernandez explained. “This becomes an alternative to law enforcement and policing because you have the power with the people, collectively,” he added. There are several essential tenets unique to restorative justice: recognition that crime is a violation of one person by another, rather than an act against the state, and that it is harmful to both personal relationships and to communities. The process takes the holistic context of an offence into consideration, including moral, social, economic, political, and religious considerations. Restorative justice has been recognized by the Supreme Court of Canada and is mentioned within the Criminal Code in paragraph 718.2(e). It is often used to try to lessen the large number of Indigenous peoples within the criminal justice and prison systems – Indigenous peoples make up approximately 2 per cent of Canada’s adult population, but made up between 17 and 18.5 per cent of federal prison admissions in 2006. Peacemaking circles, a form of restorative justice seen in some Indigenous communities, focus on non-hierarchical dialogue between community, victim, and offender. These circles focus on looking at larger, structural issues of crime and prevention within the community, as opposed to focusing on crime on an individual basis. Dissatisfied with Canada’s current punitive criminal justice and penal system and concerned that it unfairly targets Indigenous peoples, the Kahnawake Mohawk community, located on the South Shore of the St. Lawrence River, began to use Sken:nen A'onsonton, which means “to become peaceful again,” the traditional restorative justice system reintroduced by the Mohawk in Kahnawake in 2000. These practices provide alternative measures to the federal criminal justice system, and focus largely on preventative measures and interventions. Other restorative justice models include Victim Offender Mediation programs (VOMPs), which originated in Ontario, and focus on problem-solving between victim and offender with the help of a trained mediator. Unfortunately, despite its success, the program was terminated in 2004 due to a lack of funding. Historically, restorative justice has been used for addressing minor crimes, however, some, such as Howard Zehr, a professor of restorative justice at the Eastern Mennonite University, argue that it can be effective in cases of more serious crimes, such as sexual assault or murder. The evidence for this varies, and often depends on multiple variables, such as mediator training or the voluntary participation of all parties involved. Preventative Measures One key shortcoming of the police force is that it reacts to crime more often than it actively prevents crime. Communities that feel underserved by the police have thus had to come up with alternative methods in order to keep safe without police help; however, many of these methods seem to exacerbate the dichotomy between criminal and victim. Anti-crime design is one such method. Groups like Crime Prevention Through Environmental Design (CPTED) Ontario advocate for the creation of public spaces that actively prevent crime. For instance, CPTED suggests high visibility in public spaces – basically, more windows – to decrease secret spaces where crime may occur. With more observers, would-be criminals may be less likely to commit crimes. A crime prevention design technique called “natural access control” also suggests building fences to clearly delineate public and private spaces, or designing spaces so people know precisely where they are allowed and not allowed to go. Instead of constant police patrols or merely reactionary police work, this design-oriented approach physically prevents crime through space. Community-based sexual assault centres have also emerged in the past decades as a valuable alternative to police. Locally, centres like SACOMSS or the Montreal Sexual Assault Centre give non-police aid to survivors of sexual assault. This includes helping survivors immediately after incidents as well as providing crucial long term support and advocacy for them. Community centres are also more likely to keep the survivor’s identity a secret, as they work in total anonymity. These solutions give survivors more support than traditional police work, which does not typically provide support for the survivor past legal action. An organization like Walksafe McGill is a small-scale version of what many neighbourhoods and communities have implemented. The Réseau québécois de Villes et Villages en santé (the healthy communities network) is one program that asks community members to define what they want their community to be and allows them to come up with ways to prevent crime from occurring in the area. Other programs around Quebec include neighbourhood watch programs that encourage communities to police themselves and prevent crime through vigilance and community education. Source: Alternatives to the Police

    Read at 12:55 pm, Jun 9th

  • So Called ‘Landlord’ Can’t Even Earth Bend

    So Called ‘Landlord’ Can’t Even Earth Bend By Stephen Bell | June 7, 2020 ")} function e(o){return(o+"").replace(/(d)(?=(d{3})+$)/g,"$1,")}var t="https://thehardtimes.net/harddrive/so-called-landlord-cant-even-earth-bend/";console.log("first url is "+t);var a="//thehardtimes.net/2020/06/07/so-called-landlord-cant-even-earth-bend/";console.log("second url is "+a),axios.all([axios.get("http://graph.facebook.com/?id="+t),axios.get("http://graph.facebook.com/?id="+a)]).then(axios.spread(function(e,t){console.log("share count one is "+e.data.share.share_count),console.log("share count two is "+t.data.share.share_count),o(e.data.share.share_count+t.data.share.share_count)}))}(); ATHENS, Ohio — A group of local tenants are reportedly disappointed by their landlord’s inability to utilize even the most basic of earth bending techniques despite his title of landlord, sources have confirmed. “When this guy introduced himself as our ‘landlord,’ I expected him to be a badass elemental master who could manipulate the earth beneath his feet,” said tenant Mario Sanders.  “Instead, he’s just some crotchety old Hungarian dude who can’t even turn sand into plate armor or hurl boulders at his enemies. The only thing he seems to be able to do is nag me about how the rent is due on the first of the month.” Other renters expressed similar disappointments with the so-called landlord. “When we moved into this rental, the backyard was an absolute mess, and I foolishly thought that someone called the ‘landlord’ could handle it,” said fellow roommate Bao Pham. “Instead of powerfully striking the ground and contorting the backyard’s soil at will, he just dragged a bag of Miracle-Gro he bought at Home Depot out of the garage and started scattering it everywhere. What a disappointment.” It soon became apparent that, not only could the landlord not bend the earth, but he had made little effort to master the other elements, either. “The roof leaks, the AC is on the fritz, and the furnace constantly fails to ignite during the winter,” complained renter Erin Rodgers. “I was hoping he’d at least be able to bend the water away from the house instead of into my room, but all he did was put in some new shingles that haven’t really helped. Maybe the greedy bastard should try doing some money bending to resolve these issues if he can’t master the elements.” At press time, the tenants of the building were briefly under the impression that the landlord had learned how to fire bend before realizing that one of them had just left something in the oven for too long. Want to support Hard Times? Buy a shirt. We’ll use the money to write more articles. Source: So Called ‘Landlord’ Can’t Even Earth Bend

    Read at 12:30 pm, Jun 9th