Archive for October 6, 2016

Thursday, October 6, 2016

Reducing Swift Compile Time

Ayaka Nonaka:

Spent the morning cutting our Swift compile time by ~3 min. Thanks @irace for the helpful blogpost!

Basically had to go back & change most of our NSLayoutConstraint.activate to isActive = true. Uglier, but it really added up over time…

Unfortunate thing is that isActive = true is slower at runtime, so we’re trading off compile time with run time :/

Nick Lockwood:

I just tried it. Turns out

{ $0 == "e" || $0== "E" }

takes 100ms more than

{ (c: Character) in c == "e" || c == "E" }

Previously: Speeding Up Slow Swift Build Times.

Experimenting With App Store Search Ads


I am very excited about Search Ads, and I plan to invest into them heavily (both in terms of money and time). I will keep this post updated, and will do my best to collect all the news about it to make this a one-stop place for all the relevant resources.

James Thomson:

The App Store search ads keyword config suggests the trademarks of other companies by default… I declined, @tapbot_paul.

There are no search ads in the Mac App Store, due to neglect.

Previously: Early App Store Search Ads Fail.

Update (2016-10-07): Joe Cieplinski:

Is it or is it not ethical to bid on keywords that are your competitor’s app name?

Why is this a question? Of course it’s ethical.


Now, if Apple’s ads allowed us to spread lies about our competitor’s apps, that would be a different story. If I named my app something confusingly similar to my competition in order to fool someone into thinking they were buying the other product, that’s completely unethical. But these ads are simply giving customers more information. Customers deserve to make the most informed decision possible. They deserve to know your app exists, and that it might actually be better for them.

Advanced Swift, Second Edition

Ole Begemann:

The new edition has been thoroughly updated for Swift 3, but we didn’t stop there. We revised the entire book, rewrote sections that needed clarifying and came up with better examples. We also added a bunch of new content, primarily in the chapters on collections, functions, and generics.

It’s a free update if you already have the digital version of the first edition, which was excellent.

Applets and App Transport Security

Shane Stanley:

The next day things got more complicated when Steve posted some more information: he had just tried the same exercise from Script Editor, and this time the applet worked fine. Was Script Editor really enabling NSAllowsArbitraryLoads in its applets? We repeated Steve’s tests and looked at the Info.plist files. Not only was Script Editor not enabling NSAllowsArbitraryLoads in the saved applet, but neither was Script Editor itself. To make things even more confusing, when a working applet created in Script Editor and then edited and saved in Script Debugger still worked.


And it turns out that having a Bundle ID beginning with seems to be giving applets a free pass through App Transport Security. Oooh…

The other interesting point to me is that it also works the other way. The domain is whitelisted, so you should never use it for testing your networking code.

Previously: App Transport Security.