Bureau of Programming


Analogue Super NT

Steven Wright, writing for Polygon, on Analogue, a company that specializes in high-end retro hardware, and its founder Christopher Taber:

“When I first started, it was like there was this closed door and I kept knocking on it and knocking on it,” [Taber] says. “And now, maybe the door’s not open, but I’ve got a hell of a lot of people knocking here with me.”

It’s nice to see small-batch electronics and one man’s vision succeed.


You’re (Still) the Product

Parimal Satyal writes about the web’s increasing user-hostility:

We’re quietly replacing an open web that connects and empowers with one that restricts and commoditizes people.

What the author misses is the commercialization of the platform. The web as we know it today is run by professional, profit-seeking organizations. Unless users collectively begin paying for content, and earn the right to a better experience, there’s no upside for publishers to change course.


eBay Tries to Stay Relevant

Chavie Lieber, writing for Racked, on eBay’s existential crisis:

It’s dedicated to remaining an online marketplace—nothing more than a platform on which buyers and sellers can interact—a position that’s hard to justify as it’s become less enticing to both kinds of users. It hasn’t invested in warehouses or inventory; it hasn’t introduced competitive shipping programs. It now needs to both differentiate and elevate itself, and then it must communicate all of that to the customer.


“Desert Train”

“Desert Train” is a one-hour video:

Take a relaxing train ride straight out of this garbage world.

On the plus side, watching this is a more productive use of time than reading productivity articles on Medium. See also: Stephanie Merry’s article on Norway’s “slow TV” from 2015.


Desert Golfing

Blinkbat Games’s Desert Golfing is an addictively simple, endless golfing game ($2) for iOS and Android. It’s a single-player throwback to the 1990s shareware classic Bang! Bang!.


How Not to Muzzle White Supremacists

The EFF writes critically about GoDaddy, Google, and Cloudflare’s decision to drop the Daily Stormer as a customer:

Protecting free speech is not something we do because we agree with all of the speech that gets protected. We do it because we believe that no one—not the government and not private commercial enterprises—should decide who gets to speak and who doesn’t.

What has gone largely without mention during this debate is that GoDaddy, Google, Squarespace, Cloudflare, OkCupid (really), and others are getting credit for making the easy, popular choice. They don’t own claim to the moral high ground by succumbing to public pressure to censor their networks. Cloudflare’s CEO himself wrote that his decision was “arbitrary” and “dangerous”.


Google Fires Employee for Thoughtcrimes

Google fired James Damore yesterday for writing about diversity and the Mountain View campus’s “ideological echo chamber” on a private, internal message board intended for critiques of the company’s policies. The memo’s full text is worth the read. His swift termination reminds me of how dictators welcome dissent with open arms, but only as a tool to sniff out and exterminate any detractors.

With over 70,000 employees, it’s not surprising Google found him disposable. Damore was the sacrificial lamb that allows us to continue to sweep our differences of opinion under the rug.


“Smart People Are Not Ruining America”

Michael O. Church criticizes those who conflate smug intellectuals with pilfering titans:

We have a problem in this country. The economic elite is destroying it, and the intellectual elite is largely powerless to stop the wreckage, and while there are many sources of our powerlessness, one of the main ones is that we get the bulk of the hate. The plebeians lump us all together, because the economic elite has told them to do so. They make no distinction between the magazine columnist, who can barely afford her studio in Brooklyn, and the private-jet billionaire who just fired them by changing numbers in a spreadsheet.


“Is Olive Garden about to hit me with a neverending bowl of lawsuits?”

Vincent “Vino” Malone writes on /r/legaladvice:

Backstory, in brief: For the past three years I’ve run the competitive e-sport pasta blog All of Garden. During the yearly Never Ending Pasta Bowl promotion, I eat Olive Garden for every meal, every day. I take pictures of the food and do little reviews. Here is a post that shows the kind of content I create.

Today I got this email from Darden’s “brand enforcement” department.

And we were just recovering from Zillow’s amateur-hour attempted take-down of McManion Hell.


Houses in California Are Still Expensive

Adam Nagourney and Conor Dougherty, reporting for the New York Times, were assigned this month’s “house prices are crazy!” article:

Heather Lile, a nurse who makes $180,000 a year, commutes two hours from her home in Manteca to the San Francisco hospital where she works, 80 miles away. “I make really good money and it’s frustrating to me that I can’t afford to live close to my job,” said Ms. Lile.

Leave it to the Times to track down the least sympathetic human and place her grievance in the third paragraph. But Ms. Lile does have a point: There’s something very wrong here. No one can be certain of a housing bubble until it pops, but when relatively well-off people decide to commute three or more hours a day, that’s pretty damning. It reminds me of this anecdote from the brink of the last financial meltdown:

A private-equity executive I talked to said that he sensed the jig was up when his cleaning woman—“from Nicaragua or El Salvador or wherever the fuck she’s from”—took out a subprime loan to buy a house in Virginia. She drove down with her husband every weekend from New York, six hours each way, to fix it up for resale. They cleared sixty-five thousand dollars on the deal, in a matter of months. To many, this would have been proof that America is a land of opportunity, but to him it signalled a fatal imbalance between obligation and means.


Glassdoor Is a Cesspool

While working at Glassdoor, my boss was CEO Robert Hohman. He has a mean streak and repeatedly assaulted me during my short tenure as his assistant. If I made a typo in a report or forgot to CC him in an email, he’d sneak up on me and strangle me with Ethernet cables or beat me with a baseball bat.

The company itself is corrupt full-tilt. Helen Girick, the head of the Content & Community team, directed me to side-step the official channels to sell companies the “opportunity” to remove fake reviews. She also compelled me to perform fellatio on her elderly father or risk losing my job.

Before I left the company, Hohman and co-founder Tim Besse had a little “game” to see who could make me quit first. One of them hired professional thugs and put hits out on my wife and children. We all lived in constant fear. My son, Ben, wet the bed every time the phone rang at night.

Glassdoor is a company staffed by depraved and twisted people who will make your life a living hell.

— A fake employee review of Glassdoor

Glassdoor won’t remove fake reviews. Consider me naïve, but I didn’t know this.

You can produce business records that show no one with the reviewer’s job title and tenure ever worked there. You can try to persuade them that the review contains no references to people or teams or clients, or any other specifics, and that this vagueness would strongly suggest the review is fake. But whatever you do, you will not succeed in reasoning with these people, because their so-called moderation team is a monkey with a mouse in its hand repeatedly clicking “post.”

Now, it’s one thing if you own a restaurant, and you get a bad review on Yelp. Even a very unpopular restaurant serves a couple dozen people a day, so any given negative customer review will sink to the bottom of the pile soon enough. But if you own or work for a small business, a review on Glassdoor can linger for a very long time.

The company I work for has its share of positive and negative employee reviews. I’m a curious person, so I read them. Sometimes I have a pretty good idea who the author is. I’ve never questioned the authenticity of a review before, because they seemed genuine. They mentioned real people or real projects. They said nice things that were true, or they made criticisms that felt familiar.

The most recent review lacks all of these things, and its author lists a job title and tenure that don’t match anyone who has ever worked there.

But Glassdoor doesn’t care whether the reviews they publish are real or not. They told me so themselves in an email (not that their actions would indicate otherwise). Which begs the question: Why does Glassdoor have such an ambivalent relationship with the truth? How is this ethical?

Ironically, the only effective means of recourse is sabotage: Write (more) fake company reviews. If Glassdoor becomes so riddled with misinformation and plain lies, the site will succumb to its own self-inflicted wounds. A site more concerned with serving 3¢ worth of ads than maintaining even the thinest veneer of truthfulness doesn’t deserve a better fate.


Welch, WV

Welch is similar to Johnstown, PA (previously) in that it’s dying; the county it sits in has lost 80% of its population over two generations. And the shuttering of the town’s Walmart drained any lingering hope for the town’s survival.

Most of the residents aren’t bitter, but one person interviewed said:

It’s ridiculous. People round here can’t get healthcare, they can’t get jobs and now the good food has gone. We are not getting our basic needs met. People are dying young.

What’s ridiculous is people expecting services airlifted to them in the middle of nowhere. No one would have sympathy for someone today who drove off hours off the main road, set-up camp in the woods, and decried the absence of a good grocery store.

People talk a lot about environmental sustainability, but what about economic sustainability? Putting money into towns like Welch is like subsidizing rotary phones; you may as well be pouring it down the drain. If its residents want a better future, they have to be willing to move.


La Muralla Roja

Jeanette Hägglund photographs architect Ricardo Bofill’s The Red Wall, an apartment complex built in 1973 on Spain’s southeast coast. The building’s distinctive geometry and color may have inspired the designers of the smartphone game Monument Valley.


Can Small Towns Survive Post-Retail?

Rachel Abrams and Robert Gebeloff, reporting for the New York Times, on Johnstown, PA facing an economic era after manufacturing and retail:

But fewer people can afford his products now that the good jobs are long gone, and Mr. Apryle has had to make adjustments.

A cash-for-gold sign hangs in the window. He started selling knickknacks on eBay. Eventually, he stopped wearing a tie.

“I might as well be comfortable,” Mr. Apryle, 46, said, gesturing to his wrinkled T-shirt and tennis shoes. “There’s no one here to impress.”

While local retailers were never going to prevent the decline of small towns, they surely helped stem the economic bleeding. Even in a soon-to-be era of telework, most of these towns seem doomed to die in our generation. The few that will survive will be sufficiently niche—think Marfa, TX or Oxford, MS—to continue to lure tourists, creatives, and the wealthy who bring in outside money.


“Apple’s New Campus Sucks”

Adam Rogers, writing for Wired, on Apple’s new Cupertino campus:

You can’t understand a building without looking at what’s around it—its site, as the architects say. From that angle, Apple’s new HQ is a retrograde, literally inward-looking building with contempt for the city where it lives and cities in general.

The title is clickbait, but it’s impressive to see Wired publish an article contrary to the prevailing unrestrained glorification of Apple’s new headquarters.


Rust by Example

Rust by Example is a great resource for learning Rust. It has a built-in problem sets, and the chapters build up nicely, so you don’t need to understand heavy concepts like lifetimes to start.


Remembering the iPod Hi-Fi

Looking back, it’s been a decade since Apple last produced a home stereo: the iPod Hi-Fi (2006). While most critics were satisfied, if not gushing in their praise (see iLounge’s review), Apple discontinued the speaker 18 months after launch. But judging by product designer Andrew Kim’s photos, the Hi-Fi still looks good all these years later. Working units sell for about $125 on eBay.


“I Could Try Expressing Myself Outside”

“Log Off!” is a comic by Joey Alison Sayers.


Ajit Pai Is A Traitor

Legitimate news sources have to walk a fine line between reporting the news and providing candid assessments of current events. Good media outlets can’t always call it like they see it, because they want to stay above the fray and avoid accusations of bias.

In no recent case is that more clear than with the new FCC chairman Ajit Pai, whose behavior is so self-serving and disgusting that it deserves special attention here. In a nutshell, Pai is not just a corporate shill and a scumbag, he’s a traitor. His systematic and indifferent deference to corporate interests—like those of his former employer Verizon—above the public interest is not just disgusting, it should be criminal.

Most public servants busy themselves with things traditionally thought of in the public good: improving the environment, helping disabled persons, delivering the mail. Pai, on the other hand, accepts a paycheck from the U.S. taxpayer, and enables ISPs to sell your web-browsing history, works on dismantling network neutrality, and guts expanding broadband access.

He’s so completely absorbed with manipulating the political system to help giant telecom companies that he has no plans to strike phony anti-net neutrality comments from dead or impersonated persons. Of course, Pai will argue he’s facilitating the free market:

[By] imposing those heavy-handed economic regulations on Internet service providers big and small, we could end up disincentivizing companies from wanting to build out Internet access to a lot of parts of the country, in low-income, urban and rural areas, for example.

But just what kind of market competition exists when the majority of Americans have access to, at most, two broadband ISPs? And how does allowing Verizon and Comcast to charge tolls to access certain parts of the web fix that?

People have few ISP options not only because the network build-out itself is expensive but because existing providers bribe or manipulate government officials into creating artificial anticompetitive barriers: They outlaw municipal networks. They restrict access to electric poles. Frankly, if a company whose technical and financial resources as extraordinary as Google’s cannot compete in this industry, the system must be rigged.

I pity the mainstream media. They are all but forced to reprint Pai’s bullshit arguments about him caring about low-income people. But the truth is he’s so interested in helping his rich telecom benefactors that he’ll merrily defend his actions on the backs of impersonated dead people. He’s said so himself.


“Kill Google AMP”

Scott Gilbertson, writing for The Register, on Google’s Accelerated Mobile Pages (AMP) project:

What [AMP] is, is a way for Google to obfuscate your website, usurp your content and remove any lingering notions of personal credibility from the web.

AMP is a lousy deal for everyone except Google.



With the non-stop hysteria over Google and Facebook smothering the open Web, you’d think there’d be more promotion of what good people are still writing and cataloging on small, independent sites. The smart way to convince people to leave the walled garden is to showcase all the hidden, unmanicured gems outside of it. Today, we’re doing our part by linking to AINT—BAD.

AINT—BAD is an independent collective and publisher of new photographic art out of Savannah, GA. The site showcases one or two contemporary photographers and their work every day (e.g., Cody Cobb).


PyCon 2017 Videos

PyCon is uploading their 2017 convention to YouTube, 143 videos—over 10,000 minutes of material—and counting.


The Best and Worst of OSCON 2017

I attended OSCON 2017 in Austin last week. For me, it was a great opportunity to learn more about GraphQL, Rust, graph databases (Neo4j), site reliability engineering, and NGINX’s caching features.

My favorite session was led by David Celis and Garen Torikian:

From REST to GraphQL: Why a query language is perfect for writing APIs
For years, REST has been the standard architecture for APIs. But a new technology is emerging, one that’s perfect for developing rich, client-friendly APIs: GraphQL. David Celis and Garen Torikian explain why this query language is being adopted by companies like Shopify, Pinterest, and GitHub and show you how you can leverage GraphQL for your own APIs.

As O’Reilly begins to upload the slides and videos from the respective talks, I thought it’d be useful to have a reference to which events were rated most highly. After the break is a table with each tutorial and session listed by their attendees’ mean rating, as shown on their respective event pages. (Unrated events are not listed.)

Continue reading (9 minutes) • Save to Instapaper

How to Detect User Log-in Across Browser Tabs

Some sites like GitHub prompt users to refresh the page when they sign in using a different browser tab. This feature is useful for users, who can benefit from the additional user-specific page context, and for site operators, who may receive fewer support inquiries.

Here’s how GitHub’s Web Storage-based implementation works:

  1. Ensure the browser supports the Web Storage API (window.localStorage).

  2. Determine if the user is currently logged-in. For example, GitHub adds a meta element to its HTML responses with the user’s username:

     <meta name="user-login" content="bobsmith">

    When a user is not logged-in, the element exists, but the content is empty. (If the element can’t be found, it aborts.)

  3. Set the user’s logged-in status using window.localStorage.setItem.

  4. Monitor storage events by creating an event listener:

     window.addEventListener("storage", function(e){
       // Check for changes to the value of the key that
       // stores the user's logged-in state

    Events fire whenever a change is made to the Storage object, but only when that change is made in a different context (e.g., a different browser tab).

  5. In the listener’s callback, check for changes to the value of the key set in step #3. If e.newValue exists and differs from the initial value retrieved on page load, the user has logged-in or logged-out; prompt the user to reload the page.

GitHub’s developers chose to check and store the length of the username (bobsmith) to determine whether the user’s status has changed. This is a good design decision because not only does it detect log-ins and log-outs, but it will also detect most people who have logged-out and then logged-in again as a different user (so long as the lengths of the usernames differ).

They may have chosen not to store and use the username directly so as to reduce the impact of a browser vulnerability exposing this data to an attacker. For an even more sophisticated implementation, consider storing a one-way hash of user’s username to check against.


“The White Working Class’s Dysfunction”

Kevin D. Williamson, for the National Review, offers a vicious takedown of America’s economically-depressed, bygone towns:

The truth about these dysfunctional, downscale communities is that they deserve to die. Economically, they are negative assets. Morally, they are indefensible.

(Editor’s note: The Bureau is a politics-free space. In keeping with our mission of sharing thoughtful ideas from around the web, we link to this provocative article that touches on economics, libertarianism, and other subjects of interest to our readers.)


“Is It Time to Break Up Google?”

Jonathan Taplin, writing in an op-ed in the New York Times:

We are going to have to decide fairly soon whether Google, Facebook and Amazon are the kinds of natural monopolies that need to be regulated, or whether we allow the status quo to continue, pretending that unfettered monoliths don’t inflict damage on our privacy and democracy.

Ryan Cooper makes a similar argument in The Week.


Patagonia Begins Selling Used Clothing

The outdoor clothier Patagonia has begun selling pre-worn clothing.

Founded in 1973, Patagonia has been well-studied by management and business ethics gurus for its focus on corporate responsibility and environmental awareness (and, you know, financial success). Of course, there’s a certain irony in any brand, whose job it is to sell you more stuff, shrouding themselves in an Earth-first, reduce-reuse-recycle ethos.

Marisa Meltzer, wrote for The Guardian:

[Patagonia] is hyper-aware of these contradictions, perhaps to the point of tying itself in knots. In 2011, on Black Friday, the biggest shopping day of the year in the US, Patagonia ran an ad featuring a photo of a plush blue fleece, and copy that read DON’T BUY THIS JACKET. The advert invited customers to make a commitment to reduce what they buy, repair their gear and recycle the stuff they no longer need. (Patagonia’s campus in Reno, Nevada houses the largest garment repair facility in North America.) But it had the opposite effect: Patagonia’s Black Friday sales increased by 30% over the previous year. The anti-sales message, as they might have expected, made consumers feel better about buying more.

This new “Worn Wear” shop—with most items priced at $40—is the latest in a string of unusual (anti-)business decisions.


User Uninstalls Python, Obliterates System

From Server Fault:

A disaster just occurred to me after I ran the command yum remove python and now I can’t boot the server up anymore.

Never remove Python.


Why I Stopped Attending Programming Meet-ups

I’ve decided I’m no longer attending programming meet-ups. The reason I’m no longer attending is because they’re free.

To be more accurate, it’s because of all the adverse effects of free. “Free” means having no expectations. It means taking what you’re given. It means the value isn’t obvious or measurable. It means, frankly, they’re not sure if anyone would show up if it weren’t free. It also means they can charge you in ways that aren’t monetary.

Some common characteristics of programming meet-ups:

  • The event is mislabeled. You come for X, but learn Y instead.
  • The core material begins late. You don’t expect or want food, but you are told how there would have been pizza, but the pizza got lost in transit, because someone named Peggy signed for it, but no one named Peggy works there.
  • The presenter hasn’t prepared. You squint at poorly-indented code without the benefit of syntax highlighting.
  • The presenter talks down to the audience. You learn how much the presenter enjoyed attending MIT and how many Fortune 500 companies the presenter has worked for.
  • The sponsor’s presence dominates. You are told: “Have you heard about Z? It’s great. There’s a free tier. You’d have to be an idiot not to use Z. I use Z all the time, and I’m very successful. Let’s take five minutes so I can walk you through Z’s dashboard.”
  • The Wi-Fi doesn’t work. You enjoy watching your web browser send packets into oblivion as your OS attempts and fails to demystify the venue’s network capture scheme.

It’s hard to blame the meet-up groups themselves. They’re trying. Their organizers do invest legitimate effort into fielding speakers, promoting their talks, and creating a welcome space. But it’s a really inefficient medium for learning anything.

A few days ago, Smashing Magazine, of all places, published a tremendous article on HTTP/2 Push. It’s great—thorough, well-edited, timely—some things I’d never expect from a meet-up. It’s also free. Plus I can skim it. And if it weren’t good, I could have found a different article or book or talk on the topic.

But the low to zero cost of meet-ups means there’s little incentive to produce quality presentations. The groups attract people who want to show off their pet projects or who are cajoled into speaking by their managers. The speakers simply don’t have the skill or interest or time to captivate a professional audience. Even though presentations can be very effective means of teaching, preparing a talk takes time, far more time than writing an article.

I’m sure meet-ups have value for some people, some of the time. If you want to meet other programmers, go. Or if you want to see what’s new in a related field, go. But otherwise, if you’re looking to learn something, well, there’s a whole world wide web for that.


Twitter Allegedly Hiding Criticism of United Airlines

Dimitar Mihov, writing for The Next Web:

This sort of moderation is more commonly known as “ghost-deleting.” The term is a little misleading since such tweets are technically not deleted, but merely prevented from appearing in users’ feeds. This measure, however, is usually reserved strictly for offensive tweets—and this is hardly the case here.

In other censorship-related news, Reddit’s /r/videos moderators removed the video of the passenger being assaulted on United Flight 3411.


PHP 7 (and 7.1) in a Nutshell

If my day job is any indication, PHP won’t die. You can make the best of it by upgrading to the latest version. Here’s a rundown of the new features in PHP 7.0 and 7.1.

Continue reading (4 minutes) • Save to Instapaper

Drupal Contributor Banished Over Sex Life

Gabriela Barkho, writing for The Outline, ruminates on the departure of Larry Garfield from the Drupal community:

At what point do code of conduct guidelines cease to protect the community, and start to exclude members for their private habits?


Django 1.11 Released

Django 1.11 was released today. It is an LTS release (supported for three years) and is the first version to support Python 3.6. It includes three major new features: class-based model indexes, template-based widget rendering, and subquery expressions.

  • Class-based model indexes: Django now provides an Index class that facilitates the creation of database indexes (example).
  • Template-based widget rendering: Form widget rendering is now template-based. You can override Django’s widgets’ HTML (listed here) to customize how inputs appear.
  • Subquery expressions: You can now perform subqueries and use the SQL EXISTS statement using query expressions (i.e., without writing raw SQL).

The Django team also released 1.10.7, 1.9.13, and 1.8.18 to address two security issues.


“The Case Against Immigration”

From the Trump administration’s (latest) immigration ban from Muslim-majority countries to the tightening of H1-B visas, the U.S. tech sector has found itself at a crossroads with a shifting dynamic on immigration policy. While most tech companies support a pro-immigration policy—mostly in the immigrants-drive-innovation vein—there’s a flip side that’s less familiar but worth understanding.

Steven Camarota, writing for Foreign Affairs, presents a cogent argument against the US’s current immigration system. He argues the costs are too high, that it favors the wrong people, and that it won’t reverse the demographics of an aging nation.


When You Can’t Vote with Your Wallet

Jason Koebler, writing for The Motherboard:

The argument boils down to this: If a corporation is using business practices that are unfair to its customers, its customers should simply spend their money elsewhere. If you don’t like that you can’t repair your John Deere tractor, or your iPhone, or your Playstation 4, just buy from another company. Eventually, big companies will have to treat their customers better or they will lose money.

It’s an argument I’ve heard often enough that I started researching whether voting with your wallet is actually a plausible strategy. What I found is that even the staunchest free market supporters don’t believe that an “informed minority” can change corporate behavior that screws over consumers.


U.S. Drone War? Not in the App Store

Metadata+, an iOS app that tracks the overseas U.S. drone war, has been rejected from the App Store twelve times. The news app was developed by journalist Josh Begley to track the CIA’s ongoing, not-so-covert drone operations in the Middle East and Horn of Africa. Today, three years after the Begley’s initial submission, the app was finally approved. But hours after it was published, Apple removed it.

Apple’s rationale? The app’s content is “excessively objectionable or crude.” Judge for yourself: Here’s Metadata+’s news feed and its map (That’s everything. Metadata+ has just two screens.)

Apple clearly doesn’t find the military operations themselves objectionable. The company profits from games like Reliance Big Entertainment’s Drone: Shadow Strike and the dozens of other drone-bomber games in the App Store. One game’s description reads:

Your Mission: Protect the world from international terrorists—the survival of the free world is at stake!

These games demonstrate none of the moral nuance involved in a military campaign that, most conservatively, kills innocent civilians in a one-to-one ratio with combatants. Whereas Metadata’s most recent news item reads:

Mon., Mar. 6, 2017 (Yemen): Two brothers—Ahmed and Mohammed—were walking down the road. A missile whistled in. They never made 15.

Apple’s walled garden silences not only the voices of journalists but also the thousands of victims, the “collateral damage,” of the global war on terror.

Of course, Apple’s suppression of a news app is chilling but not altogether unsurprising behavior. We may not be living in George Orwell’s dystopian classic 1984 precisely, but, then again, Amazon did erase 1984 from Kindle owners’ ereaders.

The App Store’s censorship is in keeping with the tech oligopolies’ increasing reluctance to become politically engaged, at least on the side of their users. Do you remember when Tumblr fought back against SOPA? Or when Netflix helped publicize network neutrality? Those times are long gone. Now that these start-ups have become dominant players, they’ve lost their interest in fighting for an open Internet. Today, they sit on the sidelines as net neutrality rules get eviscerated by FCC Chairman and telecom shill Ajit Pai, and the GOP gives ISPs the thumbs-up to sell people’s Web browsing histories.

While enough shaming may pressure Apple to reverse course and return Metadata+ to the App Store, what does it say about a society that lets one company play gatekeeper to an independent press?