This year, Metova sent me to WWDC to get an early first-hand look at all the new upcoming technologies Apple is releasing. This was my first time attending WWDC, and it did not disappoint. Essentially, every rumoured announcement you could find on the internet actually was delivered along with multiple other exciting big ticket items. To top it all off, Tim Cook surprised us all at the end of the keynote by informing everyone that a moderated conversation with Michelle Obama would be the first session to kick off day two. Not bad, right?
The keynote and the Michelle Obama talk were huge highlights of my trip, but the rest of the week certainly didn’t taper off. Over the course of the week, I got to catch up with a few former Metova employees whom I hadn’t seen in awhile, and I also somehow managed to snag a photo with Craig Federighi.
Logan Gauthier and Craig Federighi
There were a number of hardware announcements at this year’s WWDC. Apple updated their iMacs, MacBooks, MacBook Pros, and they unveiled a powerful iMac Pro. They also announced their Siri-powered smart speaker, the HomePod. If you want the iMac Pro or the HomePod, you will have to wait until the end of the year. Everything else is available now. The hardware announcements were all exciting, but as an iOS developer, I’m particularly interested in the software announcements--and there were some gigantic ones.
In this article, I’ll be focusing on some of the upcoming tech that I’m personally most excited about. A lot of the announcements I’ll be covering are fairly developer focused, but I’ll also cover some new features that I’m excited about as a user. If you’re just looking for a quick rundown of some of the biggest announcements, check out Skye McCaskey’s article on the WWDC keynote.
What I’m Most Excited About As a User
Flick keyboard on iPad
This feature may seem incredibly minor, but it’s way too much fun to use for me to not mention it. In previous versions of iOS, if you wanted to type numbers or special characters such as “&” or “$”, you had to tap a key to switch the keyboard mode, and then tap that key again to switch back. In iOS 11, users can now swipe down on keyboard keys in order to enter numbers and special characters on the fly. It works incredibly well, and it’s a lot of fun to use.
When I first saw the new flick keyboard for iPad, my first thought was that it was going to be great for when I’m entering passwords because I use randomly generated passwords which tend to switch back and forth between letters, numbers, and special characters. Unfortunately, the flick keyboard isn’t going to be available on the iPhone. However, that doesn’t matter because of the new iCloud keychain autofill feature. Now, when entering credentials on iOS apps, the predictive text bar which appears right above the keyboard will be able to display an option to auto-fill your credentials if they already exist in your iCloud keychain. For developers to support this feature, username and password text fields will simply need a content type tag set on them, and corresponding websites will just need to include a little bit of metadata on their login pages.
Peer-to-Peer Apple Pay
Courtesy of Apple
Apple has finally added peer to peer Apple Pay support directly into the Messages app. It’s easy and secure. It will be great when I don’t have to ask “Do you have Venmo?” or “What’s your PayPal email address?” all the time.
If you’re like me, and you have a desire to travel to countries where English is not the primary language, you’ll love the new Siri translation feature in iOS 11. In iOS 11, you can ask Siri something like “Hey Siri, how do you say How do I get to the airport in French?” and Siri will display the translated text, “Comment puis-je aller à l'aéroport”, and speak it aloud.
Screenshot Annotations and Sharing
This is a feature that I’m excited about as a user who happens to be a developer. In iOS 11, when you take a screenshot, you’ll be able to easily annotate on top of the screenshot and share it with others. As a developer, I think this will be a great tool for communication between developers and designers.
What I’m Most Excited About as a Developer
Of all the things announced at WWDC, this might be the thing I’m most excited about. There are some huge improvements in Xcode 9.
Completely Rebuilt Source Editor
This is a big one. It is the backbone behind a number of new individual features in Xcode 9. Xcode’s source editor has been completely rewritten from the ground up in Swift. It has been architected for performance. Files open 3x faster, you can scroll through extremely large files at 60 fps, and jump to line is now 50x faster.
In Xcode 9, there is a brand new refactoring engine--and yes, it finally supports Swift! The new refactoring system supports Swift, Objective-C, C, and C++. Using Xcode’s new tokenized editor system, you can hold down command and move your cursor over various expressions or blocks of code which can be clicked on to bring up a contextual action menu. This menu provides a number of refactoring actions that can be performed on the piece of code you’ve highlighted. You can now easily rename methods and variables. You can also highlight expressions and extract the resulting values to their own local variables to quickly and easily cut down on complex inline code. Furthermore, you can highlight blocks of code and easily extract them into their own methods all with the click of a mouse--but if clicking on your mouse or trackpad isn’t your thing, all of these contextual refactoring actions can be mapped to keyboard shortcuts.
Text Editor Font Size Adjustability
You’ve always been able to adjust your font size in Xcode. It just takes a few steps:
- Go to the menu bar and click Xcode
- Click Preferences
- Click Font & Colors
- Click on the theme you want--this is assuming you’ve already set up multiple versions of your desired theme with various font sizes.
- Wait a couple seconds for the text editor to update.
- Close the preferences window and get on with your life.
In Xcode 9, this process has changed. The new steps for this process are as follows:
- Hold down the command key and press the “+” or “-” key.
This is an extremely minor feature, but I love it. On retina screens, I use a tiny 8 point font (I know, that’s really small). When I’m at work, however, I hook up to two 24” monitors and one 27” monitor. These aren’t retina, so I bump my font size up to 9 point. In cases where I’m giving some kind of presentation from within Xcode, I use a much larger font size. So, I tend to switch around my font size fairly often which means this new tiny feature actually cuts down on a common annoyance for me.
Apple joined forced with GitHub to provide some fairly decent Xcode/GitHub integrations. Now you can now push, pull, commit, tag, view commit history, and even create a new GitHub repository, all from within the Xcode 9 UI.
Integrated Markdown Editor
Pairing well with the new GitHub integration, Xcode 9 also sports a new markdown editor. For me personally, this will really come in handy for updating READMEs when working on Metova’s open source CocoaPods.
View Controllers Displayed In View Debugger Hierarchy
The view debugger has been great. It makes it easy to debug your view hierarchy in 3D while running your app. However, it does little to inform you of what view controllers are managing those views. In Xcode 9, the view debugger now displays view controllers as the root node of the primary view they manage. This is great when you are debugging a complex screen which has multiple nested child view controllers each managing their own particular view hierarchy.
With Xcode 9, you can now wirelessly pair devices with Xcode so you can run development builds locally without having to hook them up with a USB cable. This is extremely convenient no matter what kind of app you’re working on, but it’s huge when working on things like ARKit apps or apps utilizing CoreMotion.
Running Tests in Parallel on Multiple Simulators
At Metova, we expect all of our projects to have 80% code coverage at a minimum. Because of this, our projects tend to have automated test suites which take a long time to run. Of course, we’d love to run them on every possible screen size every time we push a new commit, but the reality is that this simply isn’t feasible because the test suite must be run on each screen size one at a time. In Xcode 9, however, this problem is solved because you can run a single test suite on a single machine on multiple simulators in parallel.
The Build System is Much Faster
Build speeds with Swift projects have been a bit of a bottleneck for large projects. I’ve worked on projects that have taken nearly 20 minutes to build from scratch. Apple has greatly improved Swift build times, particularly with mixed Swift / Objective-C projects, and they went ahead and included these improvements in the Xcode 8.3 release. However, Xcode 9 has a completely new build system which further improves build times, especially for incremental builds. Furthermore, the new build system allows indexing to take place while building as well.
App Store Phased Releases
iTunes Connect got a new feature called Phased Release which allows you to gradually push out a new version of your app over a seven day period. With this option, an incrementing percentage of users will receive the new version each day via automatic updates. However, if a user downloads your app for the first time or performs a manual update, they will receive the new version. If you discover a problem with the release during this time period, the release can be paused for up to 30 days to give you time to address the issue.
I believe this was one of the more surprising announcements at WWDC. Tim Cook has spoken about investing in augmented reality before, but the rumors tended to lean toward some kind of announcement in the fall when new hardware gets released to support it. Clearly, Apple took a different approach by finding a way to make their augmented reality framework compatible with devices that are nearly two years old. Any iOS device powered by an A9 chip and higher is compatible. This means devices like the iPhone 6s, iPhone SE, the iPad Pros, and the 2017 9.7-inch iPad are all compatible.
Apple is making their machine learning technology available to developers with the CoreML framework. This is a big deal. Machine learning can be used for all kinds of purposes such as text prediction, sentiment analysis, face detection, image captioning, and music tagging. These are just a few of the applications that machine learning is already being used for, however, it can really be used to solve pretty much any type of complex problem that has an input and an output--and Apple has made it possible for developers to do just that by allowing developers to use their own models with CoreML.
Creating and training a model is complicated and it can take time and a lot of data. Luckily, developers can utilize some of the more common machine learning-backed features via Apple’s Vision and Natural Language Processing frameworks. Apple’s NLP framework isn’t new this year, but new APIs have been added and it’s faster and more accurate. Below is a list of some of the features these frameworks provide, both old and new.
- Language Identification
- Named Entity Recognition - Identifying named places, organizations, and people
- Part of Speech Recognition
- Object Tracking
- Face Detection - Apple has provided face detection APIs before, but the Vision Framework provides more accurate and detailed face detection functionality.
- Image Registration
- Rectangle Detection
- Barcode Detection
- Text Detection