This year my employer, LexTech Global Services, offered to sponsor my trip to WWDC 2017 if I was lucky enough to win a ticket in the lottery - and I did! I am very lucky to have received such a generous gesture on behalf of LexTech and it is very exciting from a technology perspective to be attending my first ever WWDC live and in person for many different reasons. First and foremost, I think it will be exciting to be as WWDC, live, and in-person for the keynote, the hands-on sessions, and all of the different announcements that will take place over the course of the conference. Next, I think it will be an excellent chance to be exposed to the latest iOS, macOS, watchOS, and tvOS beta technologies announced at the conference so that when the final versions are released in September, I will be ready to integrate any of the newly announced features from a personal or professional standpoint.
Every year at WWDC there are things that I look forward to being announced. Last year I was hoping to hear more about Swift 3.0, Xcode XCTest suite, and any updates to Instruments announced. So what has me most excited about this year's WWDC? Well, I was thinking about it and I thought that I would compile a list of the top five things that I am looking forward to the most at WWDC 2017. After the conference I thought I would write a follow up post recapping each one of these topics also.
Let's dive in!
1. Swift 4.0
To be quite honest, Swift 4's release will not be much of a mystery due to it being developed out in the open and myself following of the mailing list, evolution, and the Swift repositories over the last 10 months. The thing that will be really interesting though, and why I am so excited about the announced of Swift 4 at WWDC, is to see all of the real world use cases of Swift 4 being demoed during the conference. It is one thing to closely follow the proposals and the feature development in Github, but it is another thing when those features actually come to life and are demoed in ways that you had never thought of before.
If you are following Swift 4's development on Github you will know that development is in full swing right now and if you can download a development branch of Swift 4 on your local machine today. This is very exciting! More specifically, some of the proposals that have been accepted for Swift 4 and that are being implemented as I write this are 164 for removing final support in protocol extensions, 165 dictionary and set enhancements, and "my favorite," 168 for multi-line string literals. These three proposals will be big for language usage and will be features that I am interested in as I use Swift in my professional and personal career every day!
2. Xcode Command Line Tools
If you are reading this and nodding your head then you have probably been in a situation where you have been challenged by your continuous integration system and Xcode at one point or another. I know I have and this year at WWDC 2017 I will be looking specifically to gain any insight as to how to make build pipelines that use Jenkins run a lot more seamlessly when trying to reference multiple development teams and assigned provisioning profiles.
Xcodebuild commands are excellent and usually work with very little developer intervention needed to the setup on a remote machine or a local machine. However, adding continuous integration systems into the mix and establishing a build pipeline never seems to be trivial endeavor and can offer a layer of complexity that always makes me wonder about an easier way to run build pipelines.
3. Inter-App Communication
Inter-app communication enhances user experience by making multiple applications on a device seem a lot more tightly integrated and user friendly. If you are an iOS Software Engineer for the enterprise you will understand how very important inter-app communication is and how far it can expand the user experience when using a suite of applications on a device. Often times, many different applications on a device will be working together and because of the inter-app communication that was implemented the user experience can seem disjointed if not implemented properly between applications. Ultimately, if done right, the user should never feel like they have left the first application. I am always looking to blaze new trails on this front of development and am hoping to find any new tips and tricks in communicating between applications at this year's WWDC.
4. Networking Enhancements
I will freely admit that I am a networking geek and come from a pretty extensive background of working between servers and iOS environments in-throughout my career. So, naturally I always have my eye out for the next big thing in network communications and network enhancements in iOS. I cannot think of anything off hand specifically that I am looking for in regards to improvements around URLSession or CFNetworking, but I always try and stay as relevant as possible to better educate myself on the latest advancements in networking technologies and how to better test my current implementations in iOS.
In terms of networking and networking diagnostics one thing that also goes hand-in-hand is concurrency. When working with networking code there is always an inherent need for properly implemented concurrency and this is also something that deeply interests me in terms of always trying to learn more about improving user experience and networking speed by a properly implemented asynchronous network layer in your mobile application. Improvements gained from concurrency and networking enhancements can also go a long ways when working with third party frameworks like AlamoFire too, as I am a big fan of AlamoFire, and would like to start contributing more tests to this framework in the following months.
5. SiriKit Enhancements
So, this one may come as a suprise to many, but I am a big fan of Siri and would love SiriKit to be more open to any and all third party domains. Specifically, I would love for the ability to have Siri just take voice prompts and allow you to interact with applications without having to touch your phone at all. A specific use case would be for myself to be cooking in my kitchen, my hands full, and for me to be be giving command dialogs to Siri to control a multiple third party applications while I am not touching my phone. For example, "Siri, open Stack Overflow and read the first question with the tag of Python." A lot of this functionality is currently available to applications that exist within the Apple umbrella. However, if you could setup a third party application that would accept voice commands for a specific search intents, process those search command, and then read the results, that would be a significant enhancement over what currently exists today! This innovation could lead to such interesting things in terms of hands free usage and hands free interaction with a physical device.