Archive for February 11, 2021

Thursday, February 11, 2021

Native Mac APIs for Go

MacDriver (via Hacker News):

MacDriver is a toolkit for working with Apple/Mac APIs and frameworks in Go. It currently has 3 “layers”:


The objc package wraps the Objective-C runtime to dynamically interact with Objective-C objects and classes[…]


The cocoa, webkit, and core packages wrap objc with wrapper types for parts of the Apple/Mac APIs. They’re being added to as needed by hand until we can automate this process with schema data. These packages effectively let you use Apple APIs as if they were native Go libraries, letting you write Mac applications (potentially also iOS, watchOS, etc) as Go applications[…]


The bridge package takes advantage of this situation to create a higher-level abstraction more aligned with a potential cross-platform toolkit.

North Dakota Bill on App Stores

Juli Clover (Hacker News):

The North Dakota Senate this week introduced a new bill that would prevent Apple and Google from requiring developers to use their respective app stores and payment methods, paving the way for alternative app store options, reports The Bismarck Tribune.


Specifically, the bill would prevent Apple from requiring a developer to use a digital application distribution platform as the exclusive mode of distributing a digital product, and it would keep the company from requiring developers to use in-app purchases as the exclusive mode of accepting payment from a user.

Apple Chief Privacy Engineer Erik Neuenschwander spoke out against the bill, saying that it “threatens to destroy the iPhone as you know it” by requiring changes that would “undermine the privacy, security, safety, and performance” of the iPhone.

This argument basically assumes that it’s App Review, not iOS’s security features, that’s protecting users. Yet we have numerous examples of the App Store failing to do so, while at the same time mistakenly blocking good apps and developers. This happens both because the review process doesn’t scale and because it’s technically impossible to completely review how an app will behave. People definitely have more confidence installing software from an app store, but it’s mostly false confidence. Decades of experience with platforms like the Mac and Android that allow sideloading show that a more open approach works just fine. macOS’s anti-malware features have never been better.

See also: David Heinemeier Hansson (tweet).


Update (2021-03-02): Juli Clover (Hacker News):

The North Dakota Senate today voted no on a new bill that would have paved the way for third-party app store options by preventing Apple from requiring developers to use its App Store and in-app purchase methods for apps.

Nick Heer:

If this bill had passed, what do you think Apple would have done?

  1. Stop offering products and services in North Dakota

  2. Construct an entirely separate iOS and App Store model for the citizens of North Dakota

  3. Upend its entire App Store business model

I know there are some developers who think the second and third options are likely, but North Dakota has less than a million residents. I think Apple could afford to forego Fargo.

David Heinemeier Hansson:

In my romantic, counterfactual dreams of Steve Jobs, I have him pulling @tim_cook aside and saying: “Do you really want to be a monopolist for the rest of your life, or do you want to change your mind and change the world?”. It’s never too late to choose to be different.

Because I simply refuse to believe that Jobs would have let himself end up in a fight to bully entire states alongside ALEC and the Koch Brothers. Letting the impression fester that Apple could pull a Facebook and cut off an entire state if it dared to govern against it.


Facebook Ads Relied on Deprecated Chrome Feature

Shane O’Sullivan (via Hacker News):

Back in 2013 I was working in the Ads Interfaces organisation at Facebook, building mostly front end products (other people did the AI, database etc). We had an application called Power Editor which was the kitchen sink of products, and 25% of all Facebook revenue depended on it working. Every single thing you could do with ads on Facebook was supported in Power Editor (we called it P.E. for short).


I looked into the code base, and was shocked to find that the entire application depended on a technology called WebSQL. It only ran on Chrome, and Google had deprecated WebSQL over a year earlier. I kind of flopped back in my chair, dragged my manager to a room, and told him that Google could shut off 25% of Facebook’s revenue, and lose us all our large accounts, by turning off WebSQL in Chrome, and it could happen any time.


Google couldn’t have killed Facebook by flipping that switch. The Power Editor users would have done whatever it takes to access the interface, installed an insecure older browser, ran commands in the console, build a relay computer in their back yard, and so on. They will do whatever it takes because they are not choosing that platform for its features, they are professionals doing a job, and that job is reaching the user base of Facebook with their ads. If they can’t do that they will lose their jobs and clients.

I wonder if it’s really true that you can keep using an old version of Chrome against Google’s wishes.