Under The Bridge Under The Bridge

Category: Miscellanea
Twas The Night Before Dubmas 2018

So with 12 hours to go as we type this before the WWDC 2018 keynote, let’s run down the various predictions floating out there, shall we?

The first interesting thing is that once you download the latest version of the WWDC app — go do that right now, if you haven’t yet — you’ll notice that the option to filter sessions by OS has gone away. Now, that could be just a random designer’s whim, we suppose… 

… but it could be a hat tip that the Marzipan rumours are completely on point, yes? Although we would be rather surprised to wake up tomorrow and find that AppKit has gone away, we wouldn’t be overly shocked. 

(Pro Tip: In the WWDC app, all those emoji-prefixed mystery sessions? Favorite them. Then, right after the keynote, you’ll have a curated list of all the revealed secrets ready to go!)

Speaking of apps, if you are in San Jose tonight, check out this stellar list of party, meet up, and alt-conference apps:

Apps That Help You Make the Most of WWDC

But back to the predictions for this year: If there is anything earth-shattering in the offing other than Marzipan, they’ve managed to keep them pretty much completely out of the rumor mill; the general consensus is that this will be an evolutionary year, at best, and thank heavens for that:

Spoiler alert: Apple’s WWDC 2018 is probably going to be boring, and that’s the way it should be

 

But beyond that, we don’t know much of anything regarding Tim Cook’s and Craig Federighi’s plans for the keynote. That probably means there aren’t any new products hiding up their sleeves. My guess is that the show will be relatively dull from a new-product standpoint, with the usual enhancements to iOS and macOS, some new watchOS features, and maybe a sneak peek at Apple’s upcoming video service. There won’t be a dramatic unveiling of the new Mac Pro or a new $99 HomePod mini. And forget about the ARM-powered MacBook Air we keep hearing whispers about…

Apple WWDC 2018: Why New Iphone Software Announcement Is so Mysterious

But there is another important reason that nothing might have leaked: there is very little to leak. Another story from inside Apple this year said that the company was changing its strategy to focus on improving the performance, efficiency and quality of existing features, rather than looking to institute new ones…

Chances are they’re right yes, but if they do turn out to be wrong, we’ll be the first to point and laugh.

One thing it seems we can count on being introduced is ramping up NFC support, there’s been widespread hints of that:

Apple to Expand Secure Wireless Chip Beyond Payments

And improvements to ARKit are pretty much a given:

WWDC 2018: What to expect from iOS 12, MacOS 10.14 and more

But the more recent Bloomberg report says that multiplayer AR will be featured in this year’s software — something that would lay further groundwork for the Apple AR/VR headset that the company is apparently tinkering with behind closed doors (that’s expected closer to 2020, if at all). A further report, from Reuters, cites anonymous sources and says Apple is working on a way for two iPhones to share AR data directly, so potentially private info about a user’s surroundings wouldn’t have to be stored in the cloud…

Hardware-wise, the expectations seem to range between “nothing” and “speed bumped iPad Pros”

Exclusive: Apple Plans New iPads and iOS 12 for WWDC 2018, New Marzipan Details Emerge

However, we do know for sure that macOS 10.14 will have a system Dark Mode and will very likely be called “Mojave” and that the Mac App Store is getting a makeover, and how do we know that for sure, you ask? Why, because Apple leaked it themselves:

macOS 10.14 Leak Confirms Dark Mode, Apple News App, App Store Video Previews

Just ahead of Apple’s upcoming Worldwide Developer Conference (WWDC), developer Steve Troughton-Smith came across a 30-second preview video on Apple’s servers that should have been hidden, but was accidentally made viewable. The video shows Xcode 10 running on macOS 10.14.

Also visible is an Apple News icon in the dock, as currently found in iOS. The presence in the video seemingly indicates that Apple is porting its Apple News app over the Mac in desktop form. In addition, it looks like Apple is enabling video previews in macOS 10.14, with a redesign of the Mac App Store so that it looks similar to the App Store as currently featured on the mobile side (iOS 11)…

Personally, we’re holding out hope that Apple’s acquisition of buddybuild and the interesting presence of the “Getting to Know Swift Package Manager” session in the schedule indicates that there’s exciting new developments to ease the pain of iOS dependency management. But that would be a forlorn hope indeed, we suspect.

UPDATES:

Yep, that was forlorn, wasn’t it? A year of consolidation all around, mostly, but a few new interesting tidbits:

WWDC 2018 Viewing Guide

WWDC 2018 Summary for iOS developers

WWDC 2018 Bulk Downloader

Michael Tsai  – WWDC 2018 Links

Career Planning: Letter To A Young Developer

So we had this request for advice show up this week, and it strikes us as a good topic for some crowdsourced wisdom from our Dear Readers:

Hello Alex I am currently a senior in high school and want to pursue a career in mobile development after high school.

An excellent choice indeed!

I know the common route most developers take is going to college and obtaining a CS degree but college is very expensive and theory based for a field that doesn’t necessarily require a degree.

Make that ridiculously expensive, in the US these days, and somewhat tenuously connected to skills actually needed for a career in mobile development, this is true.

However, there are a great number of opportunities gated by that credentialism — most notably, it’s far easier to get a job and/or residence abroad if you do have a degree, and we’re big fans of travel as you may notice on our other blog. So before completely dismissing the college option, look into the option of taking a degree program in a country that doesn’t charge US prices, here’s a good looking start we googled up:

Where Can You Study Abroad for Free?

You might also consider looking for universities that offer co-op programs, like our alma mater Simon Fraser University. Having the university place you in work terms makes the financial burden a great deal less, plus once finished you’ll have enough of a résumé to have no problem getting hired — especially since a good co-op program will get you placed at companies far more impressive than you could land on your own; by the time we finished our degree we’d had terms not only in British Columbia where SFU is, but in Ontario, Maryland, and England.

I’ve heard of attending Bootcamps but I’m not sure of the success rate in landing a job afterwards.

From what we gather the majority could be not unfairly characterized as “worthless ripoffs,” yes. And never heard of one we’d recommend for the educational value alone compared to just learning by doing your own projects, which is how we prefer to learn … well, anything, really.

However, we also gather that there are a good number of employers that treat bootcamps as a way of preselecting entry level employees, on the theory that getting through it successfully is as good a screen as their own HR could do; pretty much like the co-op programs we recommended above. So, we do recommend you give the bootcamp thing serious consideration … but only bootcamps that offer 100% refund if you fail to land a job in short order. Here’s a start on that:

Guide to Coding Bootcamps with Job Guarantees – Course Report

What path would you recommend me to take?

Well, if I was a senior in high school right now, what I would personally be doing is throwing up a landing page for some wacky Bright Idea™ and applying for a Thiel Fellowship.

The Thiel Fellowship gives $100,000 to young people who want to build new things instead of sitting in a classroom.

College can be good for learning about what’s been done before, but it can also discourage you from doing something new. Each of our fellows charts a unique course; together they have proven that young people can succeed by thinking for themselves instead of competing on old career tracks…

…The hardest thing about being a young entrepreneur is that you haven’t met everyone you’ll need to know to make your venture succeed. We can help connect you — to investors, partners, prospective customers — in Silicon Valley and beyond.

You may have noted above we prefer to learn by doing our own projects? Well, doing our own projects for a couple years with 100 large of Peter Thiel’s money, that strikes us as the best scholarship there is out there.

Failing that, I’d take a look at guaranteed co-op/bootcamp options like we linked to above and see if any of them suited my available financial resources.

And failing that, the next thing I would do is spend full time teaching myself and creating a public profile — which is a good idea to get started on right away no matter what! — but is how you’re going to make up for your lack of experience and credentialism, by substituting with a portfolio and community stature. Here’s a rough outline:

  1. If you don’t have a Github profile, create one now
  2. Start looking for Open Source projects you can contribute to
  3. If you don’t have a Stack Overflow profile, create one now
  4. Start answering questions on Stack Overflow
  5. Build your own mobile projects, open sourced on Github — trivial projects, to start you simply want to show you can ship something
  6. Start a journal somewhere, we like WordPress as you can tell here but Medium seems to be a popular choice in the mobile developer community, and post a couple times a week or so about what you’re learning, the SO questions you’re answering, how you’re approaching your own projects, whatever

Doing that full-time for a couple years, we confidently predict, will

  • teach you much more than any formal education would
  • provide an Open Source portfolio, a much better credential for sensible employers than any piece of paper is
  • do a better job of networking in the community for serendipitous opportunities than any likely school will

If that sounds just a bit overwhelming to go figure out on your own, we also noticed this week a book which looks like a comprehensive guide to exactly what we recommend:

ForgeYourFuture

Forge Your Future with Open Source

Build Your Skills. Build Your Network. Build the Future of Technology

Free and open source is the foundation of software development, and it’s built by people just like you. Discover the fundamental tenets that drive the movement. Take control of your career by selecting the right project to meet your professional goals. Master the language and avoid the pitfalls that typically ensnare new contributors. Join a community of like-minded people and change the world. Programmers, writers, designers, and everyone interested in software will make their mark through free and open source software contributions…

So, although we haven’t read it, just going over the table of contents makes us believe that this would be an excellent $18.95 investment in planning your career, no matter which path you choose to take!

I appreciate you taking time to read my question, thanks!

And you’re very welcome. How about you, Dear Readers? Have any better, or at least different, advice for our young friend?

2018 iOS Conference Calendar

So since we had such fun with that ARKit speech at MBLTDev in Moscow last fall, we’re thinking of looking for some more exotic conference destinations this year, so let’s see what’s out there for the prospective presenter, shall we?

(Or just to visit, if you’re looking for something vaguely industry-related to justify some extra time off … or are the type that figure an industry conference IS a vacation!)

JANUARY:  (yes, we know it’s over; just making notes for next year)

FEBRUARY:

MARCH:

APRIL:

MAY:

JUNE:

JULY:

AUGUST:

SEPTEMBER:

OCTOBER:

NOVEMBER:

DECEMBER: none yet! 

Anything we missed — let us know! Bit late to be getting started for this year, seeing as how we’re well into February and all … but soon as we hear about CFPs opening up for 2019 conferences, we’ll do another one of these for next year giving you lots of time to submit your papers!

OTHER LISTS:

CocoaConferences and Twitter list

Hailing Frequencies Open

OK, now that was unexpected in a point release:

Managing App Store Ratings and Reviews

iOS 10.3 introduces a new way to ask customers to provide App Store ratings and reviews for your app. Using the SKStoreReviewController API, you can ask users to rate or review your app while they’re using it, without sending them to the App Store. You determine the points in the user experience at which it makes sense to call the API and the system takes care of the rest.

When iOS 10.3 ships to customers, you will be able to respond to customer reviews on the App Store in a way that is available for all customers to see. (This feature will also be available on the Mac App Store.)

Well, that sounds promising, doesn’t it now? Although when you actually look at the new API, there’s some interesting restrictions:

requestReview(): Tells StoreKit to ask the user to rate or review your app, if appropriate.

Although you should call this method when it makes sense in the user experience flow of your app, the actual display of a rating/review request view is governed by App Store policy. Because this method may or may not present an alert, it’s not appropriate to call it in response to a button tap or other user action…

When you call this method in your shipping app and a rating/review request view is displayed, the system handles the entire process for you. In addition, you can continue to include a persistent link in the settings or configuration screens of your app that deep-links to your App Store product page. To automatically open a page on which users can write a review in the App Store, append the query parameter action=write-review to your product URL.

If your first reaction is that you want to control the presentation, go ahead and dupe this Radar

Allow user-initiated App Store rating/review request alert

although we’re going to go out on a limb here and assume that the lack of that ability is a quite deliberate decision, kinda hard to imagine them just forgetting about doncha think? so it’s not likely to happen. But we shall see.

Some more details have trickled out as well:

Apple explains the new App Reviews API for developers

Apple is also limiting the amount of times developers can ask customers for reviews. Developers will only be able to bring up the review dialog three times a year. If a customer has rated the app, they will not be prompted again. If a customer has dismissed the review prompt three times, they will not be asked to review the app for another year. Customers will also have a master switch that will turn off the notifications for app reviews from all developers, if they wish to do that. On iOS you can now use 3D Touch to label a review as “Helpful”, a feature that wasn’t available before for iOS users…

Additional Details on the New App Store Review Features

The replies that developers will be able to leave on App Store reviews will be attached to the user review to which they’re replying. It’s not a thread, per se, because users can only leave one review, and developers can only leave one response to each review, but they will be connected visually. Users can then edit their review, and developers can then edit their reply…

The new APIs will be eventually be the only sanctioned way for an iOS app to prompt for an App Store review, but Apple has no timeline for when they’ll start enforcing it. Existing apps won’t have to change their behavior or adopt these APIs right from the start…

So there you go, start planning your New Improved Review Begging UX now!

UPDATES:

How & when to ask for app reviews and ratings including iOS 10.3

Notifications Are Better Than Alerts

How to Respond to Apple App Store Reviews and Create Raving Fans

Replying to App Store Reviews

Replying to Reviews

Slopes Diaries #19: App Store Review Replies

Paleo App Dieting

No doubt you’re aware that bigger is not better for downloads on the App Store, especially if you hit the dreaded 100 MB cellular download limit, but were you aware that even if you haven’t there’s a marked disadvantage to download size increasing? Well, here it’s quantified by way of Actual Real Life Experiment:

We bought a successful app, loaded it with extras and watched it fail

… we estimate a linear change in install conversion rate below the 100MB cutoff of -0.45 percent install rate per MB. Above the 100MB cutoff, we estimate a linear change in install rate of -0.32 percent per MB. To our best estimate, the gap between the two lines is covered by a 10 percent instantaneous install rate drop across the cellular download limit.

Although Apple says the cellular download limit is 100MB, we found in practice that a 101MB IPA did not trigger the cellular download block. The actual limit was somewhere between 101MB and 123MB, and it varied depending on the exact build.

Increasing the size of our app from 3MB to 99MB reduced installs by 43 percent, and the increase to 150MB reduced installs by 66 percent in total…

They’ve put together a handy App Readiness Guide with an especially handy App Size Calculator to let you check out your favourite apps.

Sooo, how do we get our size down? If you’re shipping to iOS 9 and later, there’s great options:

App Thinning (iOS, tvOS, watchOS)

  • Slicing is the process of creating and delivering variants of the app bundle for different target devices
  • Bitcode is an intermediate representation of a compiled program. Apps you upload to iTunes Connect that contain bitcode will be compiled and linked on the store…
  • On-demand resources are resources—such as images and sounds—that you can tag with keywords and request in groups, by tag. The store hosts the resources on Apple servers and manages the downloads for you…

Those are generally pretty straightforward to adopt, although you may have occasion to refer to

But if you’re still shipping for iOS 8, none of those help your iOS 8 users at all. Ah well.

First thing is to make sure you’re stripping debugging symbols and dead code with Xcode build settings. Also, make sure that Xcode isn’t bloating your asset catalog behind your back. The setting for that is “Optimization” aka ASSETCATALOG_COMPILER_OPTIMIZATION — and if you haven’t set anything, apparently it defaults to “time” which undoes all your compression and bloats up wildly besides. So set it to “space” instead.

If you need to dig deeper than that, here’s some useful tools for messing with your binary and asset catalog to figure out just what’s going on:

Bloaty McBloatface: a size profiler for binaries

Crunch: “Extract resources from iOS apps. Make iOS icons.”

cartool: “Export images from OS X / iOS .car CoreUI archives.”

AssetCatalogTinkerer: “An app that lets you open .car files and browse/extract their images.”

iOS-Asset-Extractor: “A tool to extract image assets from the iOS SDK.”

And if you need to go still deeper into smallerizing those graphics, well then you’ll have to go to some work. Possibly useful approaches include:

PaintCode is your goto tool for converting vectors into code — and it now supports Swift 3, Android, and JavaScript!

Or you could use SVG files as resourcesMacaw is a new library that looks particularly good for that.

TexturePacker is your goto tool for creating sprite sheets, if that suits your resource usage profile.

ImageAlpha + ImageOptim is an effective strategy for reducing PNG sizes.

JPEGmini is particularly good at making JPEGs smaller.

Or, you could go with the generally well regarded WebP image format, supported by iOS-WebP for instance.

Any more tips? Share and enjoy!

UPDATES:

Well, now that they just introduced HEIF at WWDC ‘17, hopefully all this will be of historical interest only soon, but until you ship iOS 11 only:

Squash — Web Image Compression By Realmac Software is reputed to be worthwhile

So is Guetzli, a New Open Source JPEG Encoder which is in the latest ImageOptim beta

ImageOptim-CLI “Automates batch optimisation of images.”

One Weird Trick to Lose Size

NSHipster’s NSData​Asset

Website Planet has an online image compressor free for 40 x 50 MB images

One Quick Way to Drastically Reduce your iOS App’s Download Size

Audit Those Version Checks!

Here’s an extra-special class of problem to watch out for in your iOS 10 testing: Brain-dead version checking. Remember the gales of laughter we all had at those silly, silly Windows programmers when they had to skip Windows 9 because of Windows 95 version checks? Well, this is pretty embarrassing, but apparently there’s a good number of us that aren’t any smarter than Windows programmers:

That’s just painful. But there can’t be that many instances of that out there, right? Right? Let’s check this fine article:

Efficient iOS Version Checking

A GitHub search shows that there are over 8000 results calling substringToIndex:1. All of that code will break with iOS 10. It will instead assume iOS 1, where the only apps that existed were jailbreak apps.

Oh, dear. Well, we know that of course you personally, Dear Reader, would never do anything like that … but we very strongly indeed suggest that you do as full an audit as possible of any codebase you expect to be running on iOS 10 to make sure the Evil Code Elves didn’t sneak anything like that in behind your back.

Read the article for more discussion than you probably need of various ways to address this problem. We say “probably” because you’re all programming in Swift now, aren’t you? so you can just use Swift’s #available operator if you really need to check a specific System version. If you’re not, hey the article dives into its implementation, so copy what you need!

PSA: File Those Radars

Yep, you’ve heard this before if you’ve been around a while, but it can’t be repeated too often:

File radars early and often: The importance of bug reporting

There’s a longstanding debate in the Apple developer community over the value of filing bugs through the Apple Bug Reporter system, commonly known as Radar. Some believe it’s invaluable, the only way to give Apple the feedback they need to ensure bugs get fixed. Others believe it’s valueless, a black hole from which little action or satisfaction ever escapes…

Right now, though, right when the first betas hit, there’s some breathing room. And that’s where radar comes in. If someone at Apple wants to get a bug fixed, they need a radar to point to. If they want to get a bug fixed as a matter of priority, they need a lot of radars to point to. Otherwise they simply won’t be given the time to do it.

That’s also why it’s meaningless whether or not someone else has already found and filed the same bug. First, if everyone assumed that, no bugs would be filed. Second, duplicate filings can be considered like “up votes” that, in volume, shift priority more than they do individually…

So, if you are a developer working on iOS 10, macOS Sierra, watchOS 3, or tvOS 10 apps and you’re encountering bugs, please consider filing radars early and filing often.

Even if you never hear back about them, there are people working on those operating systems right now, people who want to make great software and provide for great experiences — people who will deeply appreciate the radars you file, and your having their backs.

Worth reading it all, but that’s the main points — even though Radar is pretty much useless as a communication tool, it’s the only way to contribute to internal priorities there is. For instance, consider the suggestions in this excellent article on that new Apple File System:

Although APFS does checksum metadata blocks it does not do anything to provide resilience for data blocks. That is a huge omission in a modern filesystem, a point I tried to politely but forcefully make in the File System Lab directly to a responsible engineer. I got the feeling that the APFS team is divided on the necessity of this feature and some people on the team would appreciate some ammo to help win the argument internally. I would encourage anyone who agrees to file radars ASAP requesting this feature…

More importantly filing radars is effectively a vote for a feature and the APFS team is listening. You will never have a greater impact on APFS than going to bugreporter.apple.com and filing radars requesting missing features like parity on data blocks or copying snapshots.

Update: Here is my radar on Data Block Integrity if you want to duplicate it. Even if you copy-paste it your separate report counts as another “vote”.

And if you’re not convinced yet that it’s worthwhile to put in this effort … at least dupe @steipete’s Expose verify state

Steps to Reproduce:

Write a radar

Get it back for review

Observe that it’s simply “Open” no matter the internal state

Expected Results:

An additional exposed field that shows if there have been significant changes.

Actual Results:

We need to rely on guesswork or subtle language changes (which are inconsistent though) to try to guess if there has been progress.

to help out the people who do all the work here!

APPENDUM:

Hmmm — looks like the wide consensus that filing duplicate Radars is a valid way to indicate support may be incorrect:

If you happen to have any informed perspective on this issue, please share!

UPDATES:

Writing good bug reports

Have a Simulator problem? File That Radar, then send it to Russ Bishop!

Brisk: “A macOS app for submitting radars”

NSHipster’s tips on Bug Reporting

WWDC16 TL;DR

So that was a bit of a relief of a WWDC this year, eh? Generally in line with the more sober predictions, no massive upheavals anywhere, nice steady evolution and new integration points in all sorts of interesting places! Even keep 32-bit for another year, only the clearly underpowered A5 devices got dropped this time around. Videos are pouring into WWDC.app for your viewing, and while you try to block out the time to watch them all and join the discussions at WWDC16 on Github, which looks like a neat idea:

The purpose of this project is to create a place where the exchange of opinions about WWDC16 sessions can take place. For each video there is a corresponding GitHub issue that serves as a place for a discussion regarding a specific video. Enjoy!

here’s some links to get you up to speed:

Andy Bargh’s newsletter this week, WWDC 2016 Initial Impressions quickly hit the high points for developers.

Op-Ed on WWDC 2016: What We Got, and What We’re Still Missing is a solid evaluation of the tentpole user updates this time around.

iOS 10 Tidbits: Individual Read Receipts, Wake Alarm, Music Storage Optimization, and More is a good hub for discussions of the subtler changes in iOS 10 you might have overlooked so far.

But the immediate concern for most of you — well, after Swift 3.0 Preview 1 Released!, but that we knew about already — is most likely Xcode 8, which you’ll be pleased to hear looks like a pretty sweet upgrade all around:

What’s New in Xcode

Xcode 8.0 beta Release Notes

We particularly like that it’ll support both Swift 2.3 and 3 to ease the transition there.

and get this, Travis-CI already supports the Xcode 8 Beta initial release! Nice job, guys.

And boo! They killed Alcatraz, but yay! for Xcode Extensions — A brave new world

So that’s Xcode. For API changes, start out with

What’s new in iOS 10 for Developers

and move on to the various backgrounders from the mothership:

Foundation Release Notes for OS X v10.12 and iOS 10

What’s New in Core Data in OS X v10.12, iOS 10.0, tvOS 10.0, and watchOS 3.0

If you mobile:

If you desktop:

If you Safari, watch, tv, or whatever, run down the rest of the release notes list:

In other news, the App Store Review Guidelines were completely rewritten; check out App Review Guidelines: The Comic Book. Yes, the comic book. And keep an eye on AppStoreReviewGuidelinesHistory.com for updates as the new format gets digested.

The Human Interface Guidelines are completely rewritten as well — bigger fonts! obvious buttons! cards! — and the API Reference has a sharp new look and organization too. The Apple documentation beavers have certainly been busy!

And if you have a bit more time, go poke around Guides and Sample Code some more and check out all the new code goodies added this week.

What, yet more time? Write an article about some particularly nifty piece of new kit. Here’s some suggestions for starters:

And for anything we missed here, check out Michael Tsai’s WWDC 2016 Links and BNR’s WWDC 2016: Developer Reading List!

UPDATES:

A quick list of overlooked announcements at WWDC’16

Big, bold, and beautiful: Apple’s design language is changing in iOS 10

WWDC 2016 Viewing Guide

wwdc-downloader: “WWDC 2016 video downloader script written in Swift.”

Ole Begemann’s WWDC 2016 Retrospective

Follow The Script

Between writing our client apps in Swift and looking forward to writing our server apps in Swift, we tend to overlook that Swift can be used as a scripting language as well — seriously, is there anything it can’t do? — so here’s how you do that using Xcode:

A Beginner’s Guide to Scripting in Swift

First, you’ll need to start with a new Xcode OS X Command Line Tool Application … The cool part here is that you can even import frameworks like Foundation. Anything you can do with Foundation, you can put into a script — this includes File I/O, string manipulation, and more … Your script can even accept arguments. Just append whatever you want after your execution command to add your arguments like a regular script…

Scripting is a powerful asset and a useful tool in any programmer’s tool belt. For many iOS Devs, Swift or Objective-C are the only languages they know. If they know Swift, then there is no need to learn Python or another scripting language when writing simple scripts for any automation process.

End-to-end development and deployment with nothing but Swift? Shiny!

Another introduction here:

Scripting in Swift

A shell script is perhaps the most popular command-line scripting language, particularly in the mobile development world. To test the viability of scripting in Swift, we’ll write our markdown converter first as a shell script and then compose a Swift version. We’ll then do a quick comparison of the pros and cons of each script…

And one more example from @ayanonagon (and Swift Scripting talk here):

Swift Scripting By Example: Generating Acknowledgements For CocoaPods & Carthage Dependencies

We started using both CocoaPods and Carthage to manage our dependencies, and we wanted to add a nice little view in our app that shows a list of open-source acknowledgements and licenses. We have around 20 dependencies, and the thought of adding the acknowledgements manually sounded tedious…

Indeed it is. Well, that’s definitely our first experiment in integrating Swift scripts into our production process, then!

UPDATES:

Swift Scripting Redux: Localization

Running The Swift 3.0 Migrator On A Standalone Swift File

Command Line Swift

Scriptarian: “allows you to easily automate macOS using the Swift programming language, providing a modern alternative to AppleScript.”

Marathon “makes it easy to write, run and manage your Swift scripts.”

Scripting and Compiling Swift on the Command Line

How to Make a Web Crawler in Swift

Beak: “A command line interface for your Swift scripts”

Swift, plist, and Two Smoking Scripts

Third Time Swifty

So you’ve no doubt heard there’s a new Swift coming, and asked yourself

What’s new in Swift 3.0?

Swift 3.0 is changing pretty much everything, and your code will almost certainly refuse to build until you make the necessary changes. Seriously, if you thought the jump from Swift 1.2 to 2.0 was big, you ain’t seen nothing yet.

Didn’t we go through this already … why yes. Yes, we did.

In this article I’m going to explain some of the most important changes with as many code examples as I can, and hopefully this will give you some chance to be prepared to update your code when Swift 3.0 goes final. There are many more changes than the ones listed below, but the changes below are the ones that are most likely to hit you…

It’s like the Guaranteed Swift Programmer Employment Act! But don’t get too worked up, we completely agree with the conclusion of that article:

It’s easy to read these changes, some of which are tiny but introduce massive breakage, and imagine that Apple’s Swift engineers are just out to make our lives harder. However, the truth is that they are working hard to make sure Swift is as easy to learn, easy to use, and fast as possible, which are three very different priorities.

In particular, I have been struck by how committed the Apple team are to ensuring their changes are discussed and agreed in the open, as part of the Swift Evolution community effort. Every change above went through extensive community discussion before being agreed for Swift 3.0, which is an incredible thing to behold.

You can get involved and help shape these changes going forward: they are keen to hear ideas from a wide range of users, and it means the future of Swift really is in your hands.

So yes. If you’re writing or maintaining Swift code — and who isn’t? — we MOST strongly recommend you read this article thoroughly, and soon. Even better, get an early jump with How to install Swift 3 today and this sample project for instance. Although we’d figure that a Swift 3 running Xcode is pretty likely to show up first day of WWDC 2016, so no need to get too worked up there.

Speaking of the evolution of Swift, there’s also been a great deal of heartfelt concern voiced recently about a) ABI compatibility being missed in 3.0, and b) Swift never getting @objc on its cross-platform incarnations as the current plans lack, and what that lack of runtime dynamism means. (Spoiler: Horrible things.) Around here, we’re just fine with a) taking as long as it takes to get right, and with b) we’re pretty sanguine that something functional (geddit?) which fits the Tao of Swift will show up to address common use cases; but others find it a far more pressing concern. Great round up by Michael Tsai:

Dynamic Swift

Read that if you need to get involved in a good internet fight! Or even if you’re not, there’s still a lot of good conceptual discussion there, if you’ve got some time being familiar with the debate is worthwhile we’d say.

And speaking of being familiar with the debate, prepare yourself for Swift advocacy by checking out

Why big apps aren’t moving to Swift (Yet)

I strongly believe Swift is the future of iOS development. It’s only a matter of when, and the blocker is the breakneck speed it evolves. For smaller apps, Swift is good enough. For big apps, it’s at least a year away…

Let’s all see what we can do to push that forward!

UPDATES:

Wil Shipley smacks down the griefers in Pimp My Code, Book 2: Swift and Dynamism

How To Install New Swift Versions in Xcode

@ayanonagon’s Favorite Swift 3.0 Features

Ole Begemann’s Swift 3

littlebitesofcocoa.com #243: The Great Swift 3 Rename 🐤

What’s new in Swift 3.0

What’s New in Swift 3 – Part 1 and Part 2 and Part 3

Swift 3 and Declarative Programming

Official Swift Blog: Swift 3.0 Released!

Swift 3 Notes

Optional Non-Escaping Closures

Objective-C id as Swift Any

Updating Strings for Swift 3; Mastering Swift: essential details about strings  

Swift 3 Conversion Steps. Or “The 9 steps to Swift bliss”

Swift 3.0 Unsafe World

Writing Libraries for Swift 2.x and 3.0 Compatibility

Grand Central Dispatch (GCD) and Dispatch Queues in Swift 3

Yammer iOS App ported to Swift 3

Swift 3 and Comparing Optionals

A (mostly) comprehensive list of Swift 3.0 and 2.3 changes