3646 stories
·
114 followers

‘Ghosts’ of Spotify

1 Comment and 2 Shares

Liz Pelly, Harpers:

According to a source close to the company, Spotify’s own internal research showed that many users were not coming to the platform to listen to specific artists or albums; they just needed something to serve as a soundtrack for their days, like a study playlist or maybe a dinner soundtrack. In the lean-back listening environment that streaming had helped champion, listeners often weren’t even aware of what song or artist they were hearing. As a result, the thinking seemed to be: Why pay full-price royalties if users were only half listening? It was likely from this reasoning that the Perfect Fit Content program was created.

After at least a year of piloting, PFC was presented to Spotify editors in 2017 as one of the company’s new bets to achieve profitability. According to a former employee, just a few months later, a new column appeared on the dashboard editors used to monitor internal playlists. The dashboard was where editors could view various stats: plays, likes, skip rates, saves. And now, right at the top of the page, editors could see how successfully each playlist embraced “music commissioned to fit a certain playlist/mood with improved margins,” as PFC was described internally.

Reading this article made me feel quite sad. The musicians responsible for tracks like these seem quite talented. Browsing the roster of Epidemic Sound — one of the production companies cited in Pelly’s story — indicates many of them are working in multiple genres. I did not hear anything particularly interesting or notable, but I do not want to suggest this is bad; there is a valid place for stock tracks. And, though this article focuses on Spotify, there is no shortage of Epidemic’s music and that of similar production companies in Apple Music playlists, either.

Despite their skill, none of these musicians make very much money from Epidemic Sound, according to Pelly, or in payouts from streaming companies. That is not a unique situation — streaming notoriously pays nearly all artists poorly — though it seems like an ongoing part of the devaluation of music. Filler tracks have long been commonplace, but they used to be confined to production libraries, not placed side-by-side with recognizable artists. For many musicians to earn enough, they become contributors to their own downfall.

(Via Jason Tate.)

⌥ Permalink

Read the whole story
sirshannon
6 hours ago
reply
Share this story
Delete
1 public comment
tpbrisco
49 minutes ago
reply
So... Muzak lives on?

Christmas with Grubbs – an animated holiday special I worked on that you and your kids will love.

1 Share

Christmas with Grubbs is a heartwarming, animated, holiday special that takes a lot of inspiration from the classic cartoons I grew up watching this time of year, especially the Peanuts specials.

Oh, Gen X! Here, this is for us:

Did you feel it? Even now, I feel it.

Okay, so on to Grubbs! It’s adapted from Max Weaver’s comic about a little boy and his imaginary friend who keeps getting him into trouble. I get to voice the imaginary friend, Tyler, and it was even more fun than you think.

This is such a lovely, classic, heartwarming holiday special, that is perfect to watch with your kids. I’ve embedded the YouTube link below, where it’s freely available for everyone to watch and *cough* *cough* share with your friends and family so we have a better chance to be picked up for a full season.

Read the whole story
sirshannon
6 hours ago
reply
Share this story
Delete

The UR Rule Of Civilizations Worth Living In

1 Comment
The UR Rule Of Civilizations Worth Living In

I saw this rather revealing tweet recently:

Andreessen, if you don’t know, made his money during the dot-com boom, at Mozilla. He then formed a venture capital firm, Andreessen-Horowitz.

Now what’s interesting about this tweet is the word “guilt.”

Andreessen doesn’t want to feel guilt. He doesn’t like the idea that one should run society to try and do the most good for the most people.

Understandable, venture capital in the 21st century has mostly created firms which profit from using as few workers as possible and San Francisco, the heart of Silicon Valley, has gone to Hell. Andreessen’s filthy rich, and he has to see homeless people every day. If he felt guilt about being having way more money than he’ll ever need while other people go hungry and live without heat, cooling and a dry place to sleep, he’d feel guilty pretty damn often or would have to spend a lot of his two billion to feel good.

But that’s not the point I want to make.

It is fashionable to go on and on about taking care of family and friends, and that’s a good thing up to a point.

But only up to a point. Societies work best when members care about people they’ll never meet. If we all look out only for those close to us, the actions we take to do so often hurt those who aren’t near us. Private equity buys firms, loads them down with debts and they go bankrupt, destroying the lives of workers. Bankers create asset bubbles which burst. They get bailed out and if they don’t are still worth millions from bonuses based on fraud, but ordinary people lose jobs, homes and healthcare. Insurance companies and pharma overprice their services, deny care and get rich. Ordinary people aren’t blameless either, we NIMBY and care about schools in our neighbourhoods but not in slums, and complain about the homeless and tell the cops to move them out but don’t want to pay for their housing. We look after and we vote for truly evil people and a majority, it seems, would never vote for someone actually good. We want low taxes and cheap goods and segregated housing prices that never go down.

This is… stupid. Society is other people. If other people are sick, we’re more likely to get sick. If other people are poor, they can’t pay for whatever products or services we produce. If people are homeless we find that distasteful and unpleasant to be around. Unhappy people, of course, are not as fun to be around as happy people.

And so on.

The better off everyone is in society, the better it is for you and me, unless we’re rich enough to live in a bubble, rarely seeing anyone but servants and our fellow rich. But even a billionaire will sometimes see a poor person, if only from their limo or looking down from a chopter, and they might feel some guilt. (If Andreessen does feel guilt, well, that’s mildly impressive in a pathetic sort of way. I doubt most billionaires do. But he’s repressing hard.)

And then one day someone flips out and kills a CEO, and others start talking about how wonderful CEO killing is. Perhaps making other people poor and miserable and killing their relatives might be a bad idea even for the masters of the universe. Might just be a good idea to care about people Andreessen doesn’t know, because one of them might get past his security one day.

Or, I guess, we could have assassinations, bombings, riots and civilization collapse.

It really is one or the other. If oil company execs had cared about people they don’t know they wouldn’t have buried climate change and financed denialism. If insurance and pharma and hospital execs cared about people they don’t know, there’d have been no assassination because they’d be trying to make sure as many people as possible got the care they need instead of optimizing to make more money.

It might just be that only looking out after people you know and care about and not giving a damn about anyone else is not just morally right, but pragmatically right.

Or you can bet on your bodyguards and the security of your gated communities, I guess. That’s a good bet, till it isn’t.

SUBSCRIBE OR DONATE

 

 

Read the whole story
sirshannon
6 hours ago
reply
"Society is other people. If other people are sick, we’re more likely to get sick. If other people are poor, they can’t pay for whatever products or services we produce. If people are homeless we find that distasteful and unpleasant to be around. Unhappy people, of course, are not as fun to be around as happy people."
Share this story
Delete

eagletrekkie:supernovafirefly:moonymango:oldearthaccretionist:fis...

6 Shares




















eagletrekkie:

supernovafirefly:

moonymango:

oldearthaccretionist:

fisharescary802:

thekrueg:

rabbitsavestheworld:

the-bluebonnet-bandit:

jackharknessday:

weavemama:

DO NOT SUPPORT SALVATION ARMY 

I can back this up. It isn’t only their shelters.

I have a family friend who worked at our local Salvation Army headquarters as a a secretary. This particular office took all the Christmas donations for children in need, put them in a warehouse, and on a designated day the staff and their friends picked through them all, taking whatever they wanted. She saw people hauling away bikes donated for specific families. Some local children had hundreds of dollars of gifts donated in their name, and on Christmas they received three cheap things, items likely not even from the person who sponsored them.

My friend quit, and I’ve not given them a dime of my money since then.

Do not give to the Salvation Army.

Do Not. Give. To. Salvation. Army

My turn.

I’m a wildfire and disaster logistics specialist.

I deal with a lot of agencies who provide disaster relief.

I used to say the Salvation Army’s disaster services were the one (literally the ONE) good thing they did.

They would come in, set up a canteen trailer, make and pass out hot coffee and donated food in a disaster, usually being one of the first agencies to get there and the last to leave.

Then I found out.

Every time they did this, regardless of if they were actually invited or deployed by the agency in charge (usually FEMA, sometimes others) they would SELF-DEPLOY. Meanjng they would just show up. Ok. That’s not TOO bad, sometimes agencies have to take initiative and get there before the red tape is sorted out. BUT. They, after they left at the end of the incident, they would send FEMA or the host agency a BILL. They used one or two paid employees (usually the driver of the truck and a supervisor); and many VOLUNTEERS, but they would bill for EVERYONE’s Labor at standard federal rates. They would bill for the food they distributed even though it was all donated by another agency or private parties. They would bill for the coffee they made and the supplies. Except they would use electricity from the shelter location, water from donations or from the shelter, and in many cases, they would get the coffee and industrial filters DONATED, but bill for them at retail prices.

Don’t FUCKING give to the Salvation Army.

The Salvation Army is also ass to the workers. A good number of people join it, naively thinking that it’s doing good, and end up leaving cynical and beaten down. The management is hostile, if not outright abusive, and demand some ridiculous hours of it lower to mid-level staff. Don’t support these people.

Unsettling update

Find better local charities and shelters and give to them instead!

Also just for even more horrific context on the original twitter thread?

Salvation Army reached out to Milknmuffins and asked what shelter she’s at with the promise to address the abuse in it. She…ended up saying where she was. She was thrown out onto the street. It’s also all on Twitter.

They invited her to a personal talk so she could explain the situation in person.

And then they threatened her with a screenshot of a rape-threat made supposedly by her:

And then threw her out into the street while claiming she broke house rules that

So yeah, the Salvation Army is a bunch of entitled assholes that will treat the most vulnerable like shit if they dare try to do anything that makes them look bad

The “Fuck Salvation Army” posts are making the rounds again, so conisder this your reminder:

Do. Not. Give. These. Assholes. A. Single. Fucking. Penny.

Do not support them in any way, shape, or form.

‘Tis the season to say FUCK the Salvation Army.

Read the whole story
sirshannon
5 days ago
reply
fxer
13 days ago
reply
Bend, Oregon
Share this story
Delete

Real World Economics: Powers-that-be should heed the warning signs

2 Shares
Edward Lotterman portrait
Edward Lotterman

Divisions are so bitter within a nation that anger, even rage, seem increasingly common.

Such anger is multi-directional, springing from different wounds for different people. Income is distributed more unequally than in decades. Inequities worsen apace.

Differences grow starker in levels of living between a well-off minority, even if a substantial one, and a majority that is mired in unemployment, stagnant incomes, deteriorating communities, substance abuse, poor health outcomes and general hopelessness.

Moreover, politics are dysfunctional. The judicial system allows near-open bribery of elected officials. Electoral political success is possible only with huge amounts of money given by wealthy people, with an expected quid pro quo. This largesse often pursues particular nest-feathering apparent to all. But it breaks no laws.

The legislative branch is devoid of any collaboration across the political spectrum that had facilitated effective governing in the past. Obsolete rules of order hamstring legislating to a point where deadlock seems permanent.

Internationally, there has been no general war for decades. But brushfire conflicts involving one or another of the great powers smolder on. Thunderheads warning of far greater conflict boom louder and higher.

Overall, a sense of dread seems pervasive.

Does any of this sound familiar?

No, it is not 2024, but rather a picture of the United States in the 25 years leading up to World War I as painted by historian Barbara Tuchman in her masterful “The Proud Tower: A Portrait of the World Before the War, 1890-1914.” This was the “gilded age” of ostentatious wealth in North America and Europe coupled with true human suffering on a massive scale.

So after two world wars, a “New Deal” in the U.S. and democratic reforms across Western, and later Eastern, Europe, why does it all seem very familiar? What lessons have we learned, and apparently unlearned, from our troubled past?

Well, consider the public reactions to the assassination on Dec. 4 of UnitedHeathcare CEO Brian Thompson. These reactions show generalized anger over the lack of control people have over their economic lives, exemplified specifically on how health care is provided and paid for in our nation and how that unjust and inefficient system has been allowed, if not openly fostered, by government policy.

Moreover, it is hard to ignore the gulf between the vast police resources — and media attention — focused on finding the killer of one rich white man in New York compared to those spent investigating nearly all other murders, but especially those of poor minorities, that happen daily and in large numbers around our country.

Then the release of a recording of UnitedHealth Group CEO Andrew Witty in which he cravenly argues that his company’s extreme rate of insurance denials are, in fact, a public service, poured gasoline on the fire. Such denials, Witty says, prevent the collapse of the entire health care system because of excessive claims.

It is also clear that monopolistic power in health insurance has been only one cause of drastic rises in overall costs of health provision. The conversion of nonprofit hospitals and clinics into for-profit ones and groups of specialists decamping employment at nonprofits to set up their own profit-making specialty clinics are other factors that drive both costs of medical procedures and the incomes of doctors and clinic managers well above those of any other wealthy nation.

New programs, including drug benefits in Medicare, brought forth pharmacy-benefit managers that were supposed to bring cost-reducing competition. Instead, these PBMs had perverse incentives to beg higher list prices from pharma manufacturers so they could show greater “discounts.”

But health care is only one part of a litany of economic grievances that can spark violence.

Several government policies aiming to maximize free-market forces in meeting people’s needs have perverse outcomes. Consider “The Great Grocery Squeeze,” an article in the December issue of The Atlantic magazine, which details “How a federal policy change in the 1980s created the modern food desert.”

“Food deserts,” defined as areas in which at least “33% of the residents of the community live more than 1 mile from the nearest grocery store in urban areas or 10 miles from the nearest grocery store in rural areas” have become common. These are now widespread not only in urban areas, but across vast swathes of rural Minnesota and the Dakotas.

The change detailed in the article was that the Reagan administration simply stopped enforcing the 1936 Robinson-Patman Act, which prohibited grocery manufacturers from granting price discounts to large retail chains unless justified by actual differences in cost, such as with larger shipments. The act prevented large grocery chains from brazenly using their monopoly power alone to gain competitive advantages. The Reagan administration, with the support of many economists, saw such New Deal-era laws as “excessive regulation” preventing market efficiency.

But the result was that grocery stores started disappearing from urban neighborhoods and rural towns. Some consumer price advantages for the big chains did come from lower actual costs, but much came from the exercise of efficiency-destroying monopolistic power. This soon allowed Walmart, Safeway and Kroger to gobble up smaller competitors, further reducing competition and availability.

Government toleration of the same sorts of exercise of monopoly power by giant nonfood retailers dealt similar blows to independent drug and hardware store chains. Yes, big box stores truly do have lower costs in many areas. But they also have efficiency-destroying pricing power that introductory econ students learn cause “dead-weight losses to society as a whole.”

These examples, of high costs and access denial in health care and of reduced retail availability and higher prices to families, are due in great part to unwise policy choices. The abandonment of virtually all antitrust actions is another. These could be reversed by thoughtful legislation. But that would require a functioning legislative branch of the federal government and an executive branch understanding true challenges in our economy.

That takes leadership.

As the 19th century closed, Republican Speaker of the House Thomas B. Reed of Maine made a valiant effort to overcome House rules of order that paralyzed legislation. His early death in 1902 blunted progress.

But the hyper-activism of GOP President Teddy Roosevelt, who unexpectedly had gained the position due to the assassination of William McKinley, brought active enforcement of antitrust laws and reforms in other areas affecting social well-being. Enraged wealthy corporate moguls and Wall Street financiers saw Roosevelt as a traitor to his party and class.

However, like conservative German Chancellor Otto von Bismarck two decades earlier, Roosevelt understood that if conservatives simply opposed all reform and did nothing to alleviate the very real suffering of a large fraction of the populace, they faced danger. If the oppressed masses had no relief, they would turn to more radical alternatives that would overthrow the governmental and economic structure that enabled the well-off to maintain their comfortable lives. Limits on monopolistic abuses, provision of basic work safety, measures to protect the disabled and survivors, ensure food safety and broaden education were not Socialist threats to market economies but rather reinforced and defended them.

At the same time as Teddy pushed reform from the White House, bright lawyers were able to pry social and business reforms from state and federal judiciaries. Louis Brandeis, who would later shine on the Supreme Court, successfully argued for child labor regulations and laborers’ right to organize collectively. After the 1912 election brought Democrat Woodrow Wilson to the White House, reformers in a long-sclerotic Democratic party would bring legislative fruition to some of these issues.

The effect of the destruction of these market guardrails, when felt en masse, can lead to actions such as the fatal shooting of a health care executive in New York. While Thompson’s assassination in itself may not spark violent class warfare, the cynical public reaction to it should be seen as a warning sign to the powers-that-be that supposed free-market reforms are again crushing people’s well-being.

The tragic dilemma we face now is that there is no Reed, no Roosevelt, no Brandeis, no Wilson on the horizon to heed this warning. Instead, we have rampant cowardice in the Senate that, instead of acting as a counterbalance to Oval Office excesses, seems to be rocketing us away from compromise and reform.

The old saw that, in democracies, voters get the government they deserve seems true. When public attitudes may change is shrouded in uncertainty. Let’s hope it happens without more violence.

St. Paul economist and writer Edward Lotterman can be reached at stpaul@edlotterman.com.



Read the whole story
sarcozona
3 days ago
reply
Epiphyte City
sirshannon
5 days ago
reply
Share this story
Delete

Now we’re all Forked!

1 Share

TLDR; I’m launching a new Swift framework called Forked for working with shared data, both on a single device, and across many.

A few years ago, I was knee-deep developing the collaboration feature of our app Agenda. Agenda is mostly local-first, so it was a challenge. Effectively, Agenda is a decentralized system, and the collaboration feature would allow anyone in a group to edit a shared note at any time — even when they were offline for days. When each copy of a shared note was transferred over to the devices of other members of the group, the result had to be consistent. It would be unacceptable for two people to end up with different versions.

I mentioned that Agenda is a local-first app. That means there is no central server with any understanding of the data model, taking care of conflicts — there is no central truth. Each Agenda client app has to take the data it gets from the cloud, make sense of it, and merge it in such a way that the result is the same as what other devices end up with, even if the data in question is days old.

What I realized back then is that this problem has already been solved very elegantly by a product that is extremely well-known and popular, and right under our noses. It’s called Git.

If you treat each copy of the Agenda data as something akin to the latest commit in the branch of a Git repository, you can use the same approach as Git to merging data. And Git works: developers can go hiking in Alaska, develop code completely offline, come back and merge their changes, and all is good with the world.

Back to Agenda: I decided the solution was a class called BranchedFile. My goals at the time were to create a simplified, embedded version of Git, that would operate on a single file. It would support branching, with main and auxiliary branches that could be used to handle concurrent changes to the file, and merging to reach eventual consistency.

The system should not require a complete history of changes, but keep enough versions of the data to facilitate the 3-way merging used in Git. With 3-way merging, you use the two recent conflicting versions, and compare to a common ancestor. The common ancestor is a copy of the file at the point the two branches diverged.

This approach worked well. I was able to come up with some fairly straightforward rules for which versions of the file I needed to keep around in order to fulfill a merge. All of this is implemented in BranchedFile. Agenda has been using this now for several years whenever two or more people want to collaboratively edit a note.

I hadn’t looked much at that code for several years, but that changed early in 2024. I attended the inaugural Local-First Conf in Berlin. I gave a short talk about Ensembles, which is the Core Data sync framework I have developed for more than 10 years ago, and then I watched the other talks. And I got inspired, and started to wonder: what if I could make my BranchedFile type more generic, and perhaps even turn it into a genuine modeling framework, like a mini version of SwiftData.

I started to dream:

  • It should use structs instead of classes
  • It should track changes in branches, and have 3-way merging
  • It should be possible just to store data with Codable
  • Where merging is an afterthought in many data modeling frameworks, this framework should support advanced merging, employing the latest Conflict-free Replicated Data Types (CRDTs)
  • It should be possible to sync via iCloud and other cloud services with no change to the model
  • It should be useful not only for sync, but even for subsystems within an app on a single device

Today the dream has been fulfilled, at least up to the point of an MVP.

Today, I’m launching Forked, a new approach to working with shared data in Swift. And it has actually worked out better than I expected. I wasn’t even sure it would be possible to build, but with the new Swift macros, I was able to come up with a minimal API that seems to work great. I’m really looking forward to dog fooding it.

Let’s just finish up with a little code, so you can see how simple it turned out to be. Here’s a model from the Forkers sample app, which is basically a basic contacts app:

@ForkedModel
struct Forkers: Codable {
    @Merged(using: .arrayOfIdentifiableMerge) 
    var forkers: [Forker] = []
}

@ForkedModel
struct Forker: Identifiable, Codable, Hashable {
    var id: UUID = .init()
    var firstName: String = ""
    var lastName: String = ""
    var company: String = ""
    var birthday: Date?
    var email: String = ""
    var category: ForkerCategory?
    var color: ForkerColor?
    @Merged var balance: Balance = .init()
    @Merged var notes: String = ""
    @Merged var tags: Set<String> = []
}

What I love the most about Forked models is that they are just simple value types. The @ForkedModel macro doesn’t change the properties at all, it just adds some code in an extension to support 3-way merging. So you can use this on any struct, and the result can do everything your original struct could do, from encoding to JSON, to jumping seamlessly between isolation domains in Swift 6.

The merging that @ForkedModel provides is pretty powerful. It does property-wise merging of structs, and if you attach the @Merged attribute, you can add your own custom merging logic, or use the advanced algorithms built in (like CRDTs).

To give an example, the notes property above is a String. With @Merged applied, it gets a hidden power — it can resolve conflicts in a more natural way. Rather than discarding one set of changes, or merging to give somewhat arbitrary results, it produces a result a person would likely expect. For example, if we begin with the text “pretty cool”, and change the text to “Pretty Cool” on one device, and to “pretty cool!!!” on another, the merged result result will be “Pretty Cool!!!”. Nuff said.

And this works within your app’s process, between processes (eg with sharing extensions), and even between devices via iCloud.

Also worth noting: Forked models work great with Swift 6 structured concurrency, helping to avoid race conditions. When there is a chance you might get a race condition (eg due to interleaving in an actor), you can setup a QuickFork — equivalent to an in-memory Git repo — and use branches (known as forks in Forked) to isolate each set of changes, merging later to get a valid result.

To finish off, consider this: With your model supporting 3-way merging, it knows how to merge itself. All it needs is a conflicting version, and a common ancestor, and Boom! So adding support for CloudKit to your app is next to trivial, and your model can remain completely unchanged. Here is the code that Forkers uses to setup CloudKit sync:

let forkedModel = try ForkedResource(repository: repo)
let cloudKitExchange = try .init(id: "Forkers", 
    forkedResource: forkedModel)

// Listen for incoming changes from CloudKit
Task {
    for await change in forkedModel.changeStream 
        where change.fork == .main &&
              change.mergingFork == .cloudKit {
        // Update UI...
    }
}

That’s all of it! We just added sync to our app in less than 10 lines of code. Decentralized systems can sometimes be astounding, and they also work great even when your use case is not technically decentralized!





Read the whole story
sirshannon
5 days ago
reply
Share this story
Delete
Next Page of Stories