Tuesday, August 14, 2018 [Tweets] [Favorites]

Finding What Code Triggered a Log Message

Daniel Jalkut:

What this does is add a series of commands that will be run automatically by lldb whenever breakpoint 5 (the one I just set) is hit. This applies to any of the 634 locations that are associated with the regular expression I provided. When the breakpoint is hit, it will first invoke the “bt” command to print a backtrace of all the calls leading up to this call, and then it will invoke the “continue” command to keep running the app. After the app has run for a bit, I search the debugger console for “!!!” which I remembered from the original warning. Locating it, I simply scroll up to see the backtrace command that had most recently been invoked[…]


Next time you’re at a loss for how or where something could possibly be happening, consider the possibility of setting a broad, regular expression based breakpoint, and a series of commands to help clarify what’s happening when those breakpoints are hit.

2 Years of App Subscriptions 2.0

Kif Leswing (via Dan Masters):

Developers, Apple said, needed to realize the business model of apps was changing. Successful apps tended to focus on long-term engagement instead of upfront cost. Indie developers who wanted to capitalize on this needed to move to a subscription model, as Apple had made possible in the past year in a splashy announcement.


10 years later, the App Store isn’t new anymore, and Apple continues to tweak its rules so that developers can create sustainable business models, instead of selling high-quality software for a few dollars or monetizing through advertising. If Apple can’t make it worthwhile for developers to make high-quality utilities for the iPhone, then the vibrant software ecosystem that made it so valuable could decay.

Apple’s main tool to fight the downward pricing pressure on iPhone apps is subscriptions.


Still, even with some hammer-makers finding huge success, the majority of Apple’s subscription revenue doesn’t appear to come from apps that are specific tools — instead, it’s coming from big content businesses like Pandora, HBO, and Netflix.

“My suspicion is that a good portion of those subscriptions are content subscriptions,” independent Apple analyst Neil Cybart wrote in May.

I love how this is framed as Apple enlightening developers that one-time purchases are not a sustainable model. Developers had been trying to tell Apple this since day one of the App Store, and even when Apple did add subscriptions it limited which apps were allowed to use them.

Two years later, at least judging from my iPhone’s home screen, the transition to subscriptions has barely begun. There remains a high implementation hurdle.

Previously: Productivity Apps and Subscription Pricing, Pre-WWDC App Store Changes.

Lenovo’s New ThinkPad P1

Peter Bright (via Michael Love):

The ThinkPad P1 looks like a 15-inch Ultrabook, 0.7 inches thick and under 4lbs, but inside, it has a mobile Xeon processor, up to 64GB of ECC RAM, and as much as 4TB SSD storage. A discrete GPU, up to the Nvidia Quadro P2000, drives that display (either 1920×1080 300 nit, 72 percent of NTSC, or 3840×2160 400 nit 10-bit-per-channel supporting 100 percent of the Adobe color gamut and touch). It has a good selection of ports—two Thunderbolt 3 USB Type-C, two USB 3.1 generation 1 Type A, HDMI 2.0, mini-gigabit Ethernet (with a little dongle), 3.5mm headset, and microSD, and it has 802.11ac and Bluetooth 5.

And they also have one with a 17-inch display and 128 GB of RAM. No price or shipping date yet, though.

Previously: MacBook Pro 2018, Dell Precision 5520.

The Struggle for Twitter Alternatives

Matt Birchler:

The two main ones I see are Micro.blog and Mastodon. Micro.blog is the more popular one right now, it seems, but Mastodon has its fair share of loyal fans. I personally have accounts with both other services, but I don’t really use them reliably. Mastodon because I can’t find anyone on there, and Micro.blog because I don’t like any of the iOS apps available for it.


It’s incredibly hard, and involves a good deal of luck, but if something is going to be a real Twitter successor/alternative, it needs to first and foremost find a way to get a critical mass of people using it. That can be a critical mass of a Twitter sub-culture, but it needs to be some group that moves in mass. App.Net get “Tech Twitter” to move, but it failed to get more than that (or to make them actually leave Twitter), but I don’t see that happening with Micro.Blog or Mastodon yet. I don’t know how you do that, but I think that’s how you get the momentum.

It seems unlikely to happen, but I would like a single app that supports multiple networks and integrates the timelines, removing duplicate posts, etc. Otherwise, there’s just a lot of overhead to trying the other ones, since I don’t feel I can leave Twitter.

James Thomson:

I’ll say this about Mastodon, I’ve seen a pretty large percentage of the people I follow setting up accounts in the last 48hrs.

Manton Reece:

Yep, different approach but some similarities. M.b is more about owning your content (using blogs and domain names) and Mastodon is more about Twitter feature parity and federation. Both have answers for curation. But we’ve been purposefully avoiding some Twitter features.

Eugen Rochko (via David Chartier):

A year ago I wrote about Mastodon’s improvements over Twitter’s lacking protections against abuse and harassment. Development in that area has not been standing still, and it’s about time we do another comparison.


Want to try @MastodonProject but not sure where to start?

Here are some links to help[…]

Previously: Twitter Shutting Down APIs, Twitter’s Weeds, Gab App Rejected by Google (and Apple), App.net Is Shutting Down.

Monday, August 13, 2018 [Tweets] [Favorites]

Henrik’s Favorite Command-Line Shortcuts

Henrik Warne (Reddit):

Most people I have worked with use both arrow-up and ctrl-r when repeating commands. However, very few are familiar with escape-dot and repeating commands from the history list. Since I use all four ways very frequently, I thought I would write a post to spread the word.

If you have “Use Option as Meta key” checked in Terminal’s preferences, you can also use Option-Period, which is much easier to type, to insert the last argument of the previous command.

The p modifier to prevent executing the command recalled from the history was new to me.

Previously: Things I Wish I’d Known About Bash, Mac Terminal Tips, Craig’s Terminal Tips.

Group FaceTime Delayed

Juli Clover:

Apple today removed Group FaceTime from the latest iOS 12 and macOS Mojave betas, which were released this morning, and has instead decided to release the feature at a later date.

Stephen Hackett:

We need a word for this. It’s happened to several big features in recent years, including AirPlay 2 and Messages in iCloud.

Previously: iOS 11.4 and Messages in iCloud, Pre-Announcing AirPower, HomePod Delayed.

Update (2018-08-14): Adam Engst:

Frankly, we’re not surprised. In testing of the current betas with TidBITS and Take Control authors, Group FaceTime was nowhere near ready for primetime.

John Gruber:

These delays are disappointing, yes, but I actually prefer this policy of holding off on new features until they’re ready rather than shipping them in a buggy state just because it’s September and time for new iPhones to be released.

John Gruber:

Think of WWDC less as “Here’s what’s coming in our point-oh releases this fall” and more “Here’s our OS roadmap for the next year”.

This is fine, and I’m all for holding back software that isn’t ready. But Apple is certainly not presenting the schedule this way at WWDC, so instead it looks like they’re repeatedly misestimating with their tentpole features.

Previously: Apple Delays Features to Focus on Reliability, Performance.

American Computer & Robotics Museum

Andromeda Yelton:

I have an hour or two to kill in Bozeman so I found this hole in the wall computer history museum and...wow. This is not what I expected.

The museum’s site is here.

Notes on Google’s Site Reliability Engineering Book

Dan Luu:

I like this book a lot. If you care about building reliable systems, reading through this book and seeing what the teams around you don’t do seems like a good exercise. That being said, the book isn’t perfect. The two big downsides for me stem from the same issue: this is one of those books that’s a collection of chapters by different people. Some of the editors are better than others, meaning that some of the chapters are clearer than others and that because the chapters seem designed to be readable as standalone chapters, there’s a fair amount of redundancy in the book if you just read it straight through. Depending on how you plan to use the book, that can be a positive, but it’s a negative to me. But even including he downsides, I’d say that this is the most valuable technical book I’ve read in the past year and I’ve covered probably 20% of the content in this set of notes. If you really like these notes, you’ll probably want to read the full book.

Friday, August 10, 2018 [Tweets] [Favorites]

Redesigning Siri and Adding Multitasking Features to iOS

Kévin Eugène (via Mitchel Broussard):

The first part of this concept is focused on Siri. The idea here is not to create new commands, rather to display existing vocal requests that work well (like « Find me a good restaurant nearby » or « Get me pictures of Japan I took last year ») in a different way so they could be more useful to the user.

In iOS Mogi, Siri has been designed around a concept I call parallel help. The idea is to have a vocal assistant that is non-intrusive (it won’t take the whole screen like it does today), context aware, and can do things in the background for the user while they are doing something else.

Exporting Apple Notes to Markdown

Felix Krause (tweet):

At some point I noticed how some notes are not properly synced. After further investigation, turns out, my notes haven’t properly synced in months, and my iPhone and my 2 Macs are completely out of sync.

But hey, Apple of course follows GDPR, and they offer a great way to export notes


To copy notes, open the Notes app on your Mac or at iCloud.com. Copy the text of each note and paste it into a document on your computer, such as a Pages or TextEdit document. Save the document to your computer.

With over 2,000 notes, this seems slightly inefficient.

So he wrote a Keyboard Maestro macro that pastes into Bear.

The Notes app is AppleScriptable, but it only lets you access the HTML of the notes, not the attachments. Previously, people have accessed the Notes database directly using SQLite, but Krause says this is no longer possible due to encryption.

Notes also has a non-scriptable Export command that creates PDFs, but it can only be used on one note at a time.

Shutting Down the Berkman Center Blogs


In 2003, the Berkman Center for Internet & Society (now the Berkman Klein Center for Internet & Society) began an unusual experiment: we launched a blogging platform. That seems quaint today in the age of ubiquitous access to services that facilitate the sharing of user-generated content. But it was an uncommon achievement at the time.


Our platform no longer offers a unique opportunity for online engagement. And it is technically antiquated when compared with contemporary, streamlined platforms that offer more advanced tools for social interactions.


At this point, for all of the reasons set out above, we feel that the time for hosting content from non-Harvard-affiliated bloggers on Harvard servers has passed. We are giving non-Harvard users with active blogs the opportunity to export existing content over the coming weeks. Those users will then be transitioned off the platform.

Dave Winer:

I heard about this just now. Harvard’s was the first academic blog hosting service in the world. Apparently they’re going to take the archive offline. There’s a lot of value and history there. Please let’s discuss before throwing it away.

Throwing out this archive is like throwing out an academic journal. Why would a university do that? One of the reasons we did this work at a university was the hope/expectation it would survive over time. Only 15 years later, they want to throw it away?

The PSPDFKit Story

Swift by Sundell (tweet):

Peter Steinberger, creator and CEO of PSPDFKit, joins John to talk about building and maintaining a large framework project, how PSPDFKit came to be, how his team works with Radar, and all the challenges and excitement that comes with running a business based on a closed source SDK.

For the longest time, I assumed that the “PS” was for “PostScript,” but it’s actually just namespacing using Steinberger’s initials.

Thursday, August 9, 2018 [Tweets] [Favorites]

Apps Removed in Ban of Gambling-Related Apps

Tim Hardwick:

In an attempt to crack down on gambling-related apps in the App Store, Apple has today implemented a new App Review policy for individual developers, but many apps that are being banned as a result appear to have very little to do with gambling at all.


The reason that apps unrelated to gambling are being removed appears to be because the ban currently applies to any apps that allow users “unrestricted web access”.

Talk about amateur hour. Apple didn’t just reject new submissions of apps, but rather it removed apps that were already in the store.

Simon B. Støvring:

Today Apple removed my 3 years old app for browsing and sending GIFs from the App Store. The reason? They no longer allow gambling apps submitted by individual developers 🤷‍♂️

Wojtek Pietrusiewicz:

Our newsstand/news/magazine app just got removed from sale from the App Store 24 hours after our 3.0 update was approved. Reason given: gambling/fraudulent activity. We publish a magazine — nothing to do with gambling or fraud at all. 😞😢😲😱

His app is now back.

Patrick McCarron:

Wow Apple pulled my almost exactly 11 year old Blackjack 21 game from the AppStore due to it simulating gambling AND me being an individual developer.

Not sure if I want to incorporate at this point to put it back in there as I never had time to update it fully for iOS 11+.

Apple Users “Most Appealing” to Cybercriminals’ Online Scams

Jonny Evans (via Thomas Reed):

Top10VPN’s latest Dark Web Market Price Index suggests Apple users are becoming the most popular targets for online scammers. In March, the index reported that Apple ID data trades hands at $15 per account.


One thing the report does suggest is that rather than platform-based attacks, cybercriminals are moving to trust-based attacks to target the valuable Apple demographic. They work to persuade users to click on innocuous-seeming pages, persuade them to enter banking details on spoof banking pages, and so on. Apple is wise to this, and to help protect customers, it recently introduced new phishing protection tools for Macs and iOS devices.

Google Maps’ Influence on Neighbourhood Names

Jack Nicas:

For decades, the district south of downtown and alongside San Francisco Bay here was known as either Rincon Hill, South Beach or South of Market. This spring, it was suddenly rebranded on Google Maps to a name few had heard: the East Cut.

The peculiar moniker immediately spread digitally, from hotel sites to dating apps to Uber, which all use Google’s map data. The name soon spilled over into the physical world, too. Real-estate listings beckoned prospective tenants to the East Cut. And news organizations referred to the vicinity by that term.


Yet how Google arrives at its names in maps is often mysterious. The company declined to detail how some place names came about, though some appear to have resulted from mistakes by researchers, rebrandings by real estate agents — or just outright fiction.

Via Nick Heer:

Even the area I grew up in, West Hillhurst, is called Upper Hillhurst in Google Maps, which is just north of Westmount, another neighbourhood that doesn’t exist.

Wednesday, August 8, 2018 [Tweets] [Favorites]

Patreon Acquires Memberful

Wyatt Jenkins:

At Patreon, we’re building a world-class membership platform that enables creators to own the relationship with their fans. We feel that creators should decide how and when they engage with their fans, where they build their community, and how they run their business. And, for some creators, that also means managing a fully branded membership program on their own website. That’s why, today, we’re thrilled to announce that we have acquired Memberful, adding a self-service white label membership solution to our growing product portfolio.

Patreon and Memberful share a mission to fund the creative class and we both understand there are a variety of platforms and business models available to achieve that goal. Together, we’ll now be able to offer a wider range of options for building and managing a successful membership program.

Ben Thompson interviews the two CEOs:

Long-time Stratechery members may recall that three years ago — a year into the Daily Update — I ripped out the old buggy membership system and installed a new-to-the-market SaaS product called Memberful. It was one of the best decisions I have made, and over the years I have recommended Memberful to the many folks that have asked me about the software I use to run their own subscription site.

Jason Snell:

I realize that this is a bit inside baseball, but I’ve been using Memberful for the membership programs for both Six Colors and The Incomparable for a couple of years. In fact, the above paragraph describes me perfectly: I didn’t want to use Patreon, I wanted to build two membership programs myself and integrate them directly with my two sites. Memberful let me do that.

Update (2018-08-09): Stephen Hackett:

I wasn’t shocked by the news. Memberful is a great product, but isn’t a huge company. In fact, according to TechCrunch, it has only about 500 paying users. As you may know, I use Memberful here at 512 Pixels, and it’s what powers the Relay FM membership as well. As such, I approach this news with two thoughts.

First, if this lets Memberful continue to grow and expand, that’s good for everyone who uses it. The acquisition does come with a price increase for new customers, and I hope that doesn’t slow growth. A healthy Memberful means it is more likely to stick around and not be absorbed into Patreon.

Firefox’s New DNS Resolution

ungleich (via Rob Griffiths, Hacker News):

With their next patch Mozilla will introduce two new features to their Firefox browser they call “DNS over HTTPs” (DoH) and Trusted Recursive Resolver (TRR). In this article we want to talk especially about the TRR.


When Mozilla turns this on by default, the DNS changes you configured in your network won’t have any effect anymore. At least for browsing with Firefox, because Mozilla has partnered up with Cloudflare, and will resolve the domain names from the application itself via a DNS server from Cloudflare based in the United States. Cloudflare will then be able to read everyone’s DNS requests.

Patrick McManus:

While sophisticated users can turn to cloud-based “open resolvers” that offer better privacy controls than what is available by default from most internet service providers (ISPs), these resolvers rely on the same old unencrypted protocols so ISPs can often intercept data anyway.

Our first effort to upgrade the privacy of DNS is to implement the DNS over HTTPS (DoH) protocol, which encrypts DNS requests and responses. See Lin Clark’s terrific explainer about how DNS over HTTPS can really improve the state of the art.


Firefox does not yet use DoH by default.

Spotlight Parser

Yogesh Khatri (tweet):

This code reads and extracts data from macOS spotlight databases.

Tuesday, August 7, 2018 [Tweets] [Favorites]

Masters of Automation 2017 Videos

Sal Soghoian:

The first CMD-D: Masters of Automation Conference was a resounding success!! As a gift from our CMD-D 2017 sponsors – The Omni Group and Jamf - we are sharing the videos from CMD-D 2017. We aren’t promising to always share video footage of CMD-D events, but we are thrilled to make these freely available. It was great to bring together the Apple automation and scripting community!

For 2018, we are excited to announce the CMD-D: Down-Home Scripting Boot Camp – an expanded three days of intensive scripting education. Ray Robertson and I will teach it, with hands-on exercises, and limited size for personal attention. It is designed for someone brand new to scripting, and useful for a scripter who is hungry to know more.

Previously: CMD-D | Masters of Automation Conference.

Castro 3.1

John Voorhees (tweet):

Supertop has released another solid update to its podcast player, Castro. In today’s update, Castro adds file sideloading for Plus subscribers, significantly adding to the app’s utility as general purpose audio player. Subscribers can also pre-select the chapters of a podcast they want to play too.

For plus subscribers, the update adds a ‘Castro’ folder in iCloud Drive. Add an MP3 or AAC file into the ‘Sideloads’ folder, and it shows up in your Castro inbox (or wherever else you designate in settings) ready for playback.

This sounds cool, and I’d like to see iCloud Drive support in Overcast. However, I’m surprised that they are able to make this a premium feature. I thought you weren’t allowed to charge for iCloud access.

Previously: Castro 3’s Business Model.

Instapaper Relaunches Premium Subscription

Instapaper (Hacker News, MacRumors):

To ensure Instapaper can continue for the foreseeable future, it’s essential that the product generates enough revenue to cover its costs. In order to do so, we’re relaunching Instapaper Premium today.

As a reminder, Instapaper Premium is a subscription for $2.99/month or $29.99/year that offers the following features[…]


Additionally, today we are bringing back Instapaper to European Union users. Over the past two months we have taken a number of actions to address the General Data Protection Regulation, and we are happy to announce our return to the European Union.

Previously: Instapaper Is Going Independent.

Update (2018-08-08): Damien Petrilli:

And the subscription is now outside the App Store :)

Monday, August 6, 2018 [Tweets] [Favorites]

What Can Bike Sharing Apps Teach Us About Mobile On-boarding Design?

Luke Wroblewski (tweet):

The designer thinks: “I know what an on-boarding flow is. It’s a splash screen, a sign-up screen and a tutorial people can swipe through.” The resulting customer experience in filling in form fields, scrolling through 17 screens of terms & conditions (yes, you are required to scroll through all of them), granting location permissions (because “background location-tracking is required”), and skipping through 6 tutorial screens featuring critical knowledge like “Welcome to Hello-Bike.”

After maneuvering through all this, I found out there were no docking stations in central Amsterdam because of government regulation. So I actually couldn’t use the Hello-Bike service to ride to my hotel. Starting the design process from the perspective of the customer would likely have revealed the importance of communicating these kinds of constraints up front. Starting by selecting design patterns would not.


It is worth noting, however, that Spin provides much better explanations for its permission requests. When requesting location permissions, Hello-Bike told me: “background-location tracking is required” and Jump explained I could help them “gather data about how electric bikes affect travel patterns.” Spin, on the other hand, explained they use location to help me find pick-up and drop off points. They also explained they needed camera permissions so I can scan the QR code on a bike to unlock it.

iOS 12 Relies on Downloaded Lua Code

Guilherme Rambo:

Fun fact: some of the predictive stuff on iOS 12 is based on Lua code downloaded from Apple’s servers, which means the behavior can be updated without the need for a full OS update

Via Alexis Gallagher:

Surprising on a few levels, in increasing order:

  1. That iOS uses Lua to define ad hoc logic for some predictive systems ✅
  2. That it downloads the code separately from OS updates 😮
  3. That the code ships unobfuscated with comments. 🙀

Of course, third-party apps are not allowed to do this.

Previously: Executable Code in Educational Apps, Editorial 1.1.1 Rejected From the App Store, Apple Rejecting Apps That Use Rollout, Pythonista in App Store Peril, Briefs Rejected From the App Store, Again.

Update (2018-08-07): McCloud:

In a past life I spotted Apple using Lua in other places.

See also: Hacker News, Reddit.

RapidWeaver Sandboxing and Temporary Entitlements


You would not believe the amount of blood, sweat, and tears that went in to making RapidWeaver sandbox friendly.

To have the app store pull a Vader and change the deal afterwards is… well… it’s just crappy.

Dan Counsell:

What a surprise, Sandboxing is costing us countless days of development time and release setbacks as usual. Sandboxing is not a trivial task for pro apps with plugins. The App Store was not designed to support such apps.

Previously: Mac App Store Sandboxing, IAP Trials, Multiplatform Services.

Apple Removes Infowars From Podcast Directory

John Paczkowski and Charlie Warzel (MacRumors, Hacker News):

Apple moved first, striking the entire library for five of Infowars’ six podcasts from its iTunes and Podcasts apps. Among the podcasts, which were removed from Apple’s iTunes directory, are the show War Room and the popular Alex Jones Show podcast, which is hosted daily by the prominent conspiracy theorist.

After that, platforms that have come under far more scrutiny for hosting Jones and his content — Facebook and YouTube — quickly followed suit after long and tortured deliberations. Spotify also did the same.

Facebook (via Valentina Palladino):

We believe in giving people a voice, but we also want everyone using Facebook to feel safe. It’s why we have Community Standards and remove anything that violates them, including hate speech that attacks or dehumanizes others. Earlier today, we removed four Pages belonging to Alex Jones for repeatedly posting content over the past several days that breaks those Community Standards.

BuzzFeed started off talking about the conspiracy theories and that Jones “claimed he was delivering news but didn’t deal in facts,” but in all cases the stated reason for removal was hate speech rather than the informational content of the podcasts.

Update (2018-08-07): Manton Reece:

Facebook and YouTube are conflicted about how to handle this because their model is wrong. Unlike podcasts and blogs, which can live at a custom domain and move between hosting companies, videos on Facebook and YouTube are served directly on those platforms. If the videos are blocked, especially by YouTube which controls nearly all video on the web, there’s no obvious migration path away.

John Gruber:

I’m curious if these companies did this in cooperation, or if Apple acted alone and Facebook and YouTube followed in their wake. It sounds like this was Apple acting on its own and YouTube and Facebook followed their lead.

Kif Leswing:

But if the same person were to fire up the Apple App Store and search for Infowars, they’d pull up Infowars Official, a free app that opens up directly into a feed topped with the most recent video of the Alex Jones Show, which can be viewed live, or listened to as background audio.


The Infowars app doesn’t contain back episodes of the Alex Jones Show, meaning you can’t use it to find the content affected by Apple’s decision.

Shoshana Wodinsky:

Following these removals, the Infowars app was flooded with five-star reviews championing the idea of free speech, with titles like “Infowars WILL NOT be silenced.”

Steve Kovach:

InfoWars is now number 4 in the Apple App Store news category, above CNN and Fox News.

Marco Arment:

Overcast quietly removed Infowars from search last week.

Soon, people noticed, the word spread, and now, business is UP.

Enforcing policies against hate speech on your platform is good for humanity AND good for business.

Josh Centers:

Apple doesn’t host podcasts. As far as I know, the Podcasts app doesn’t prevent you from subscribing to anything you’d like. It’s merely a directory, and they decided to not promote certain podcasts.

Marco Arment:

Overcast doesn’t block any feed URLs from being entered manually.

But I care quite a bit if my app is promoting illegal/hate/etc. content in its search and recommendations.

(Not only is that horrible, I’d be risking removal from the App Store.)

John Whitehouse:

In a statement to Media Matters, MailChimp confirmed it has removed the accounts for Infowars, citing “hateful content”[…]

See also: The Outline.

Update (2018-08-08): Jack Dorsey:

We didn’t suspend Alex Jones or Infowars yesterday. We know that’s hard for many but the reason is simple: he hasn’t violated our rules. We’ll enforce if he does. And we’ll continue to promote a healthy conversational environment by ensuring tweets aren’t artificially amplified.

Truth is we’ve been terrible at explaining our decisions in the past. We’re fixing that. We’re going to hold Jones to the same standard we hold to every account, not taking one-off actions to make us feel good in the short term, and adding fuel to new conspiracy theories.

Update (2018-08-09): Juli Clover:

Apple does not plan to remove the Infowars app from the iOS App Store at this time, the company told BuzzFeed News this evening. Apple said that the Infowars app had not violated its App Store guidelines.

Josh Centers:

It’s pretty simple: Apple has no monopoly on podcasts, but an absolute monopoly on iPhone apps. It doesn’t want anyone to call attention to that.

John Gruber:

Assuming Byers’s reporting is solid, there we have it: Apple led the way.

Update (2018-08-10): John Bowden:

Several tweets and videos posted by InfoWars host Alex Jones were removed from Twitter shortly after they were reported on by CNN on Thursday.

More than a dozen videos and tweets from Jones’s account containing content that apparently violated the site’s content policy were deleted less than an hour after the article by CNN’s Oliver Darcy went live.

John Gruber:

I think Apple’s decision to remove Infowars’s podcasts from the iTunes directory but allow their app to remain in the App Store doesn’t hold water.

John Gruber:

I know Apple loves having control over the App Store, but in today’s climate — polarized politics combined with increasing regulatory scrutiny of tech giants — I suspect they don’t want to draw attention to that control.

See also: Accidental Tech Podcast.

Friday, August 3, 2018 [Tweets] [Favorites]

25 Years Ago, Apple Introduced the Newton

Chris Espinosa:

25 years ago today, at MacWorld Expo in Boston, Apple announced the first Newton MessagePad.

Stephen Hackett:

I’ve rounded up some links to mark the occasion[…]

Leaving NeXT for General Magic

Chris MacAskill:

And yet, this little company with the world’s coolest name and logo, had the most compelling vision I had ever heard: a little battery-powered device that let you write electronic postcards that float up to what they called the cloud, and from there to a friend’s device. I have wondered 1,000 times how that call changed my world when I said yes.


Unlike the first iPhone, we had applications and AT&T was building a marketplace on their network. My favorite was maps from StreetLight that gave you turn-by-turn directions.


When it became clear we had a brilliant vision 10 years before it was technically possible, General Magic came to an excruciating end. Tony went on to build the iPhone, Andy Rubin built Android, Pierre Omidyar built eBay, Megan Smith became VP of Google and then America’s CTO, Kevin Lynch built apple Watch…I could keep going.

Previously: The Secret Call to Andy Grove That May Have Helped Apple Buy NeXT.

Update (2018-08-07): Jack Wellborn:

I am not arguing that the Macintosh, NeXT, and the Newton weren’t without their flaws, or that even these quotes are inaccurate, but rather that we all know about these products because they did ship and were used enough to have their flaws made widely known. People bought and used Macintoshes. They bought and used Newtons. They even bought and used NeXT workstations. You can’t criticize or even debate General Magic on the merits of their products, because they didn’t ship anything in large enough numbers for anyone to care about let alone criticize.

You want me to know how great General Magic was? Great, me too! I want to know all the crazy ideas, all the awesome people involved, how fun it was to be there, why it didn’t work out, and where these ideas ultimately ended up.

Paid Amazon Reviews

Ryan Kailath (via Hacker News):

Travis rues the experience, and the stellar reviews that led him to purchase the faulty lock in the first place. He didn’t realize it at the time, he says, but he’s now certain that those glowing reviews were paid for. And that many of the people who gave the trigger lock excellent reviews may never have opened the package in the first place.

Travis is certain of this because he himself is now a prolific paid reviewer. He writes Amazon reviews for money, and he commissions others to do the same — for a company that approached him online.

Update (2018-08-06): Ashley Bischoff:

Pro tip: Sites like fakespot.com and reviewmeta.com can help suss out whether the reviews for a given product on Amazon are fake. 💫

Why the New V8 Is So Damn Fast

Thorsten Lorenz (via Hacker News):

In the past the V8 team focused on the performance of optimized code and somewhat neglected that of interpreted bytecode; this resulted in steep performance cliffs, which made runtime characteristics of an application very unpredictable overall. An application could be running perfectly fine until something in the code tripped up Crankshaft, causing it to deoptimize and resulting in a huge performance degradation - in some cases, sections would execute 100x slower. To avoid falling off the cliff, developers learned how to make the optimizing compiler happy by writing Crankshaft Script.

However, it was shown that for most web pages the optimizing compiler isn't as important as is the interpreter, as code needs to run fast quickly. There is no time to warm up your code and since speculative optimizations aren't cheap, the optimizing compiler even hurt performance in some cases.

The solution was to improve the baseline performance of interpreter bytecode. This is achieved by passing the bytecode through inline-optimization stages as it is generated, resulting in highly optimized and small interpreter code which can execute the instructions and interact with rest of V8 VM in a low overhead manner.

Thursday, August 2, 2018 [Tweets] [Favorites]

Apple Removes Apps From Their Affiliate Program

Juli Clover:

Apple currently offers its affiliate partners 7 percent of the money generated from an iTunes related purchase, including apps. Last year, Apple attempted to drop that rate to 2.5 percent on apps, but kept it at 7 percent after backlash from developers and publishers. Commission rates were, however, dropped to 2.5 percent on in-app content.

Apple plans to remove commissions for iOS apps, Mac apps, and in-app content from its affiliate program starting on October 1, 2018.

Eli Hodapp (tweet):

It’s hard to read this in any other way than “We went from seeing a microscopic amount of value in third party editorial to, we now see no value.” I genuinely have no idea what TouchArcade is going to do. Through thick and thin, and every curveball the industry threw at us, we always had App Store affiliate revenue- Which makes a lot of sense as we drive a ton of purchases for Apple. I don’t know how the takeaway from this move can be seen as anything other than Apple extending a massive middle finger to sites like TouchArcade, AppShopper, and many others who have spent the last decade evangelizing the App Store and iOS gaming- Particularly on the same day they announced record breaking earnings of $53.3 billion and a net quarterly profit of $11.5 billion.

Jake Underwood:

This is such a terrible community move for Apple. This program gave people like me a chance to write about apps and helped quality websites bring good apps to the forefront. It’s so disappointing.

Seth Weintraub:

Record earnings? $100B Tax Repatriation? $1T Market cap?

Let’s cut our publishing partners out of the affiliate revenue

Mark Gurman:

A move that seems without any benefit to anyone but Apple, and benefit that’s severely outweighed by the consequences.

This is going to hurt independent app reviewers and Apple news websites that have promoted and reviewed apps fairly for years and helped services become the nearly $10B a quarter business it is today.

Many great developers got their first big piece of exposure because of reviews from @hodapp @viticci @apollozac and many other independent reviewers. That will now slow down in favor of Apple-written reviews in the Today section. Independent voices are important.

Federico Viticci:

Apple killing the affiliate program for apps feels downright hostile and petty.

I am personally not that affected because we saw this coming years ago and we adapted – but it’s a huge blow to small publications, indie devs, and others who rely on this to earn commissions. Sad.

John Gruber:

There have been reviews before affiliation, there will be after. Write about what’s interesting.

Rene Ritchie:

Android Central has always done similar coverage of Google Play as iMore has done App Store and there’s never been any affiliate revenue from Google.

I might be naive, but I don’t think much will change that wasn’t changing already?

Michael Rockwell:

I think this change is bad for the community and disincentives existing sites from covering applications — you’ve got to go where the money is. And soon, there will be little financial incentive to write about the apps you love. The effort that used to go into app reviews, top ten lists, and the like could shift toward writing about iPhone cases, watch bands, and other accessories for which Amazon affiliate revenue is still present.

Rene Ritchie:

I always thought it was profoundly short sighted of Google Play not to provide an affiliate program.

Very sad to see Apple go this way now too.

Any revenue they save would be better invested in continuing to grow attention through affiliates.

Hopefully, they’ll reconsider.

Dan Counsell:

App Store affiliate revenue is going bye-bye. This is for one of two reasons. #1 Apple wants to increase its service revenue, this is a quick win. #2. Apple plans to take less than 30% from developers, and this is one way for them to recoup some of the revenue they would lose.

Stephen Hackett:

I can’t help but feel that Apple is waving off the wide array of sites that help consumers find apps as being unnecessary in light of Apple’s new editorial content within the App Store. I simply don’t believe that to be the case. The App Store is massive, and the crop of websites that have come to make a name for themselves comparing and reviewing apps add value to the ecosystem.

Bryan Chaffin:

Concerned about it’s bottom line, Apple found a way to boost Services earnings by no longer thanking publishers for spreading the word about apps in the App Store. The company announced Wednesday that apps and in-app purchases will no longer be part of the company’s iTunes affiliate program because discovery is just gonna be awesome in the new App Stores coming this fall.

Jordan Merrick:

I do find it interesting that the only content being dropped from the affiliate program is that which Apple takes a sizable cut of. iTunes Store and Books content remains, so why only apps?


I can say with absolute certainty that the majority of apps I’ve purchased and enjoyed over the years have been through reviews and recommendations that used affiliate links. That’s how I, and many others, discover new apps.

Gabe Weatherhead:

Personally, I think number two is the likely cause here. A bit of hubris mixed with not actually using their app store much has lead Apple to believe most of the affiliates are app scammers trying to pump up apps to skim a profit regardless of quality.


I do happen to believe that Apple is wrong here and that they will dramatically hurt small app developers and the diversity in the App Store.

Nick Heer:

Is it for financial reasons? Is it because there are bad actors abusing the program? Nobody outside Apple knows for certain, but it feels like it’s dismissive of the greater Apple community.

Rene Ritchie:

The optics, announcing the end of the program right after announcing record-setting profits, were terrible. And the tone of the announcement itself was read by many as cold… even callous.


It’s the classic blunder — cutting someone else’s line instead of growing your own. And it also feels incredibly short sighted. Especially when it comes to the larger Apple community, and the ability to sustain many and diverse voices.


Many years ago, when the App Store was simpler and the bottom hadn’t yet fallen from under premium App Store pricing, iMore could pay a full-time app editor off of affiliate revenue alone.

Then came in-app purchases and value starting moving from one big up front purchase to bursts of micro-payments over time.

Previously: Apple Cuts App and IAP Affiliate Commissions.

Update (2018-08-03): John Gruber:

I don’t get the argument that it’s about Apple pinching pennies and not wanting to pay the affiliate fees. The whole point of affiliate programs is that they drive enough additional sales to increase revenue. That’s why Amazon has an affiliate program and heavily promotes it.

John Voorhees:

A byproduct of removing apps from the iTunes Affiliate Program is that developers will be limited to provider tokens for tracking the performance of advertising.

Adam C. Engst:

Although TidBITS is enrolled in the iTunes affiliate program and our previous content management system programmatically added the affiliate code to appropriate URLs, we earned too little money from it (roughly $1000 since 2014) to focus on it or even remember to move the feature forward to our new site. We’ve also always been somewhat uncomfortable with the inherent conflict of interest involved with affiliate fees—there’s an unavoidable link between publication revenues and encouraging sales.


Apple says that the new Mac App Store will have in-depth stories written by a global team of App Store editors, and while you probably won’t see their bylines on those stories, we’ve been watching Apple hire experienced industry writers for those positions. Of course, as it becomes ever harder for publications to survive, it’s not surprising that journalistic talent is being forced to make the jump to industry.


In the end, I’m disappointed in Apple. Not surprised, since Apple has never acknowledged that the media plays a vital role in the broader Apple ecosystem, but disappointed that a company that puts so much effort into bringing joy to users can simultaneously behave so callously to some of its greatest supporters.

Patrick Dean:

Apple: ads are bad and an invasion if privacy, here’s some OS level tools to get rid of them.

Also Apple: Please monetize your content about us exclusively with ads because we’ve axed the affiliate program.

Dave Verwer:

Apple is well within its rights to do whatever it likes with the affiliate programme, including shutting it down. They owe us nothing. But implying that it’s because the new App Store provides enough discovery by itself is arrogant, and also wrong! I’m a huge fan of the new App Store stories but they are just one part of what’s needed.

David Sparks:

It’s easy to think of Apple as an old friend and forget that they are a for-profit corporation. I think refusing to pay affiliate fees is silly in light of the fact that third parties are driving lots of sales in the Mac and iOS app stores every day. Frankly, one of the reasons I’m moving away from the iBooks platform is because I don’t want to get caught up if they decide it isn’t worth the effort in a few years.

One last thought is why they are only cancelling affiliate payments for apps? Music, video, and book affiliate links will presumably still work. Are those next or are there industry pressures keeping Apple from shutting them down.

Joe Cieplinski:

If you write reviews of apps, you need to post links to the apps, because your readers will think you’re nuts if you don’t.

Given this, it’s hard to argue that the Affiliate Program, whatever it cost Apple, was the best use of Apple’s money. Apple had all the leverage, and it acted accordingly, as anyone should expect. Continuing the program would be an act of goodwill, maybe, but there are more effective goodwill investments, no?

Escaping the Sandbox – Microsoft Office

Adam Chester:

Then, as we get closer to the end of the list, we see something a little bit strange:

(allow file-read* file-write*
(require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~\$[^/]+$"))

This rule allows the Microsoft Word process to read/write a file as long as it matches the following regex


At first I couldn’t understand why this exception was here, however when crafting a filename matching this regex, it actually starts to make sense, for example ~$document1.docx. This is the typical filename format for temporary files used by Office, so what this rule is doing is allowing the process to persist temporary files without prompting the user for permission each time. At this point alarm bells should be ringing, as although this rule allows Word to create a temporary file, it also allows us to create a file anywhere on the filesystem as long as it ends with “~$something”.


This means that all we need to do is craft a plist with a filename matching the sandbox regex, wait for a user to log in… and we should be able to escape the Word sandbox.

AdGuard Pro Discontinued Due to Apple’s Policy

Andrey Meshkov (via Hacker News):

Basically, this guideline makes it impossible to use the VPN API for any purpose different from establishing a real VPN connection. I can name A LOT of cool apps which can be affected by this change and can be taken down any time: Charles Proxy, DNSCloak, etc, etc. I hope they won’t, though, and the whole point of this is to get rid of known ad blockers.


We are not alone. It seems that Apple decided to ban all apps that do content blocking outside of Safari. Malwarebytes is another example.

Migrating an Objective-C Class to Swift: a Piecemeal Approach

Ole Begemann:

My usual strategy for this is to write a Swift extension for the Objective-C class. The new code goes into the extension. Where necessary, @objc annotations expose the extension’s code to Objective-C. This works great until the new code requires me to add a stored property to the class. It can’t go in the extension, I have to add it to the Objective-C class definition.

This in turn means the property must have an Objective-C-compatible type, even if it’s only to be used internally by the Swift code. This is a fairly big limitation that I regularly run into: it means no structs, no enums with associated values, no generics, and more.


Here’s the workaround I use: in Swift, I define an Objective-C-compatible class that acts as a wrapper for all stored properties I want to use in my Swift extension. In Objective-C, I add a property for an instance of that class to the main class definition. Once that’s done, everything else happens in the Swift code: the properties can use Swift-only features (assuming you don’t need to access them from Objective-C) — only the class itself must be visible to Objective-C.

Jérôme Alves:

Associated objects may work too for simple cases. But another great solution I adopted successfully for a very large class was to rename ObjC HHFooBar into _HHFooBar and redefine HHFooBar as a Swift subclass of _HHFooBar. If possible I take the opportunity to drop the prefix too.

Update (2018-08-10): Ole Begemann:

The subclassing approach is in many ways a cleaner design than the extension approach I discussed in the previous article. The ability to freely define stored properties is a clear win. And once you have finished the migration to Swift, simply delete the (now empty) superclass and you’re done.

The only significant downside seems to be the inability to call into the subclass code from the superclass (unless you work around it). The subclassing pattern may not be possible when the class you want to extend has Objective-C subclasses, however.

Wednesday, August 1, 2018 [Tweets] [Favorites]

Using Lightroom CC as a Camera

Matt Birchler:

Below are 4 camera apps (stock Camera, Adoble Lightroom, Halide, and Obscurs 2) taking the same photo. It’s early morning, my living room has no lights on, and it’s bright outside.


Lightroom is my go-to RAW camera app for iOS, in part because I pay for Creative Cloud and want to get my money’s worth, bot more so because I think it gets the best photos of any app I’ve tried before.

The difference between this image and what the stock camera app produced is night and day. This is a much more satisfying shot with little noise, good color, properly exposed highlights, and zero artifacts.

The built-in Camera app made an unexpectedly poor showing. I didn’t realize that the Lightroom app had a camera, but it looks pretty good: lots of controls, a clear interface, support for both RAW and HDR (which you can lock on), a widget for quick access.

However, I don’t know how to use it with my workflow, which right now is using Image Capture to import from my Camera Roll into Lightroom Classic CC. It looks like you have to manually share photos from Lightroom to the Camera Roll, and you can’t do this in bulk; you have to select the specific photos.

The other option is to let the phone upload the photos to Creative Cloud, then wait for the Mac to download them. This is slow and wastes bandwidth and may not finish if the app goes into the background or the phone sleeps. The photos do automatically show up in Lightroom Classic CC, and you can then move them into a regular Lightroom folder. However, this does not remove them from the iPhone. You have to go back there and manually delete them (again, individually). I hope I’m missing something here.

Previously: The Best Third-party Camera App for iPhone, The Power of RAW on iPhone, New Lightroom CC and Lightroom Classic CC.

Apple’s Quarterly Results

Jason Snell:

Now, iPhone unit sales are still down from the days of the iPhone 6. What’s changed is that the average selling price of an iPhone is up—way up. That’s mostly thanks to the iPhone X, which has a record-breaking price tag that hasn’t seemed to matter one whit in terms of consumer acceptance.


As someone who’s interested in products, I find the focus on Services revenue to be a bit dispiriting. I get excited at the prospect of new products and seeing how consumers are accepting or rejecting products in the market. But the discussion of Services, especially in a financial context, is essentially a conversation about how Apple can grind more money out of every single person who uses an iPhone, iPad, and Mac. (At least the Other Products line, which is also growing rapidly, contains real products like AirPods and the HomePod and the Apple Watch.)

John Gruber:

I think it’s even worse than that. I think Apple’s (Cook’s?) interest in increasing revenue from Services is keeping them from doing what’s right — increasing the base iCloud storage from 5 GB to something more reasonable.

Joe Rossignol:

Apple on Tuesday reported that it sold 3.72 million Macs in its third quarter, which spanned April 1 through June 30, the fewest in any single quarter since it sold 3.47 million in the third quarter of 2010.

Marco Arment:

Years of shameless neglect at the low end, followed by years-long design flops at the high end, have their costs.

I think, and hope, that this is as bad as it gets, and we’re on our way out of this dark period of Mac hardware.

Ben Bajarin:

Macs had an odd quarter and there are good explanations as to why. I don’t expect this as a trend signal and if what I hear they have in their sleeve is correct the Mac business will be more than fine.

Juli Clover (Hacker News):

With 54.2 million smartphones shipped in the second calendar quarter of 2018, Chinese smartphone company Huawei has surpassed Apple to become the number two worldwide smartphone vendor, according to new data shared today by IDC.

This despite not selling any phones in the US.

Update (2018-08-02): Neil Cybart:

It is estimated that Apple spent $150 million to build the first iPhone in the mid-2000s. At the time, it was a significant amount of cash for Apple. Nearly ten years later, Apple finds itself spending that much money developing one show for its upcoming video streaming service.


My theory on the dramatic rise in Apple R&D expenditures is that management is becoming more ambitious. Apple's future is found in new industries. Just as Apple moved from desktops/laptops to personal music players, smartphones, and watches, the company will need to enter new industries to remain relevant.

Ryan Reith:

Not only did iPhone volumes outpace market growth this quarter, but revenue grew 20%. That is absurd for many reasons, number one being that most of the largest iPhone markets experienced an overall decline during the same period.

Dr. Drang:

By now, I’m sure you’ve already seen the many charts at MacStories and Six Colors, but I still like to post my own. It gives me a chance to try out new ways of showing the data.


Everyone has pointed out that this quarter had the worst Mac unit sales since 2010. This is true, but as you can see, the June quarter of 2013 was about as bad—3.754 million units compared to the most recent quarter’s 3.740 million. “Worst quarter since waaay back in 2010” makes for a better story.

Low Power Mode on the Mac

Marco Arment (tweet):

Whose work does get 10 hours out of a MacBook Pro? None of the use-cases on the marketing page — Photography, Coding, Video Editing, 3D Graphics, and Gaming — are likely to achieve even half of that in practice.


Sometimes, you just need Low Power Mode: the switch added to iOS a few years ago to conserve battery life when you need it, at the expense of full performance and background tasks.

There’s no such feature on Mac laptops, but there should be.


Since then, I’ve been running Turbo Boost Switcher Pro to automatically disable Turbo Boost when I’m running on battery power, and it has been wonderful: I made it through that 8-hour flight only because Turbo Boost was off.

Previously: MacBook Pro 2018.

Tuesday, July 31, 2018 [Tweets] [Favorites]

Objective-C Features That I Wish Existed

Daniel Lazarenko (via Gianluca Bertani):

The features listed here are chosen to have a relatively small scope in order to be implemented without major changes and in a backwards compatible way in the spirit of Objective-C. Thus they are not meant to turn Objective-C into a modern experimental language like Swift, but should make programming experience better and reduce boilerplate.


In 2015 Xcode 6.3 introduced nullability annotations to Objective-C. With those you can express an intent that a pointer to an object can never be nil. Unfortunately the only observable check that the Objective-C compiler does with that is that it prevents you from passing the nil constant in places where a nonnull type is expected. If you pass in a nullable pointer variable (not a nil constant), this is silently allowed[…]


Imagine a piece of code that uses a lot of blocks, including nested blocks where on completion you want to do something else asynchronously, so you have to make a second strongSelf. This pattern becomes boilerplate code! It is possible to shrink the lines by using @weakify/@strongify custom helper macros, but you still have to write them and have them available in your project.

Update (2018-08-02): Heath Borders:

If you use -Wnullable-to-nonnull-conversion and nullability annotations on local variables and properties, you get proper warnings when you pass a _Nullable to a _Nonnull parameter or assign a _Nullable rvalue to a _Nonnull lvalue.

And if you ever need to cast a _Nullable to a _Nonnull, this is the safe way to do so.

Please Follow in Apple News

Adam Engst:

Apple News is focused on large publishers and therefore needs quite a number of articles for training its natural language parser. Since we publish only about 50 articles per month, whereas a large publisher might release several times that per day, I was told that it could take several months before the algorithm knew what to do with our content.


Most notably, I was told that Apple News cares quite deeply about the number of people who follow a particular publication—the more followers, the more likely Apple News is to recommend that publication’s articles to other people.


However, Apple subsequently told me that the Apple News algorithm also takes some of its cues from those [section] names, so I’ve added more sections that match up with topic names (Apple, Mac, iOS, Cybersecurity, and so on) that people can find in Apple News when searching for specific topics of interest.

You can follow this blog on Apple News here.

Previously: Switching From RSS to Apple News Format.

The Swift Compiler Can Reason About “Never”

Mattt Thompson:

By specifying Never as the result’s Error type, we’re using the type system to signal that failure is not an option. What’s really cool about this is that Swift is smart enough to know that you don’t need to handle .failure for the switch statement to be exhaustive:

alwaysSucceeds { (result) in
    switch result {
    case .success(let string):

You can see this effect played out to its logical extreme in the implementation conforming Never to Comparable:

extension Never: Comparable {
  public static func < (lhs: Never, rhs: Never) -> Bool {
    switch (lhs, rhs) {}

The Bullshit Web

Nick Heer (Hacker News):

The average internet connection in the United States is about six times as fast as it was just ten years ago, but instead of making it faster to browse the same types of websites, we’re simply occupying that extra bandwidth with more stuff. Some of this stuff is amazing: in 2006, Apple added movies to the iTunes Store that were 640 × 480 pixels, but you can now stream movies in HD resolution and (pretend) 4K. These much higher speeds also allow us to see more detailed photos, and that’s very nice.

But a lot of the stuff we’re seeing is a pile-up of garbage on seemingly every major website that does nothing to make visitors happier — if anything, much of this stuff is deeply irritating and morally indefensible.


In isolation, the few seconds that it takes to load some extra piece of surveillance JavaScript isn’t much. Neither is the time it takes for a user to hide an email subscription box, or pause an autoplaying video. But these actions compound on a single webpage, and then again across multiple websites, and those seemingly-small time increments become a swirling miasma of frustration and pain.

Qualitatively, it makes using the Web feel so much slower on my iPhone that I try to avoid doing that.