Every year, after the WWDC I usually record a podcast episode talking about my feelings of the keynote. This year I’ve been keeping a list of the things that I like the most, so I will leave it here as a reminder to myself.

Swift

Swift being open source can be huge. They are doing a great job with ResearchKit, but this is a language, we will see how this is handled. How they accept changes from the community and how they continue developing new features will mark the difference.

Introduction of error handling in Swift. At a first glance seems like we loose type information with this system, which doesn’t make much sense on Swift. But I can see the point behind it and it has some nice things. Functions don’t throw by default so you don’t have to handle stupid errors that there is no way you can recover from. It has almost the same computational cost of a simple check on the calling side, so there is no runtime cost like in other languages. Obviously, it works in conjunction with the Cocoa NSError convention, so it’s great to work with the Cocoa APIs. In the beginning I didn’t understand the reason behind this way of doing error handling but it seems that they want us to only care about errors that are important and we can do something about them, which is not usual. Almost all the time is good enough to know that there as been an error and avoid the crash, we will see how this evolves.

The new keywords like defer, guard, do will help our code to be nicer. And be able to use pattern matching in all the control flow structures is also really useful.

I’ve been asking for traits for a long time, and now they are finally here. Protocol extensions allow us to give default functionality to any type that conforms to a protocol, which is really cool.

They also improved a lot the interoperability with C. Now C function pointers are translated into a new kind of closure in Swift. It cannot carrie external state but is much nicer to use.

And finally, they continued improving Objective-C. The language now has lightweight generics. Objective-C is still not dead ^^

Tools

I’m amazed about all the tools that they added to Xcode for game developers. For a moment during the presentations it seem like they were talking about Unity! (saving the differences, but you know what I mean)

But they also added a lot of tools for the rest of us. UI testing in Xcode, and with a record function that generates automatically the code, like magic. I still miss something like snapshot testing, which I find really useful not only to make sure that my designers are always happy, but to develop new custom views.

Also thumbs up for the Header View. I was one of the defenders of .h. I don’t like to see the implementation details when I’m opening a class, I don’t need them. Now with this new header view Xcode generates header like files on the fly. Best of both worlds!

The best part, as Ash mentioned in his article, is the shift towards engineering. It’s cool that they lower the barrier of app development year after year, but I really like that they are also imposing good practices by default. People can still ignore the two test targets but at least they are trying it.

iOS 9

StackView hell yes! The Table and Collection views are awesome, but they are to much when you only need a simple or static screen. Creating this views one under the other is pretty cumberstoneg without a proper abstraction (for example Orta’s ORStackView).

SafariViewController is something that we have been asking for a while. They have now everything in OS to do it right so here it is. I think that for the majority of apps we should stop reimplementing web screens with WebViews and just let the user use safari inside our App. For example I use “Open in Safari” almost in every app that I can (thanks Tweetbot!). They also added new extension points like Safari Shared links and audio units and the ability to have notifications with text input.

One thing that have me excited is that they have moved all the system UI frameworks to use the new Metal graphic apis instead of OpenGL. In theory seems pretty amazing, I want to see in practice if the performance is perceptible.

A small thing that I liked to see, even if I don’t used a lot, is the new more swifty API for Contacts. I like to see them improving in old system frameworks, specially the ones that don’t have an Objective-C layer.

Cloud Kit Web services! I think people is not excited about this as much as I am. Nowadays there are a lot to alternatives, but still having a way of easily build a backend part for your app is something to take into account. And now that information is not only available on Apple platforms.

The last thing for iOS that is pretty important is all the App thinning topic. Is something that they should have done a while ago. There is no reason to have in my device all the assets for other screens and the binaries that my phone cannot run. The Bitcode archiving seems really amazing in theory (hi AppleTV SDK? hi ARM Macs?), I’m only concerned if this will introduce new kind of uncontrolled bugs because you are no longer the one that will compile the App. Hope not!

EL CAPITAN

First of all. WHAT A NAME! I couldn’t believe it, I thought it was another joke from our beloved Craig. Now it’s so funny to listen non-spanish speakers pronounce that. Will be a funny year :P

Anyway, serious business. OS X now has split screens. The only Windows feature that I missed when I swift to OS X. I’ve been using 3rd party Apps just for that. I don’t need fancy window positioning, just a quick way to make 2 windows fill half of the screen.

I want to try the new spotlight features. Seems like Siri is the mind behind them, but without the void. All this new intelligence stuff seems really cool, specially on iOS.

I also liked a lot the improvements in the system apps, because I see almost all of them. Even being a developer I prefer to use system apps when posible.

Waxos

The new watchOS feature seem really great. I really want an Apple Watch. Although the SDK has a lot of people excited it’s not the most exciting news for me.

Keynote and conclusions

Here some bullet points about the keynote an Apple in general:

  • I started the streaming in the middle of the WEIRD opening video. I have to say that I didn’t like it at all. It was a bad start.
  • Programmed obsolescence my ass!! My 4S will have iOS 9.
  • Really thankful for all the privacy mesures. That’s the Apple I like and trust.
  • Neil Tyson on a Keynote video, that was pretty cool. For science!
  • Apple Music sounds amazing, I probably will switch from Spotify. But PLEASE, don’t do that anymore on a Keynote. It was ridiculous. With 5min they could have ended that segment. No need for dancing or to invite artists.
  • Apple seems more open that ever. Swift being open sourced (don’t forget about the blog and how open they talk about it on twitter already), Cloud Kit accesible from the web, and 2 apps for Android!

I wrote this just one day after the Keynote. Is possible that my thoughts change over the week and over time, but will be funny to see my first impressions in the future.