By Ryan O’Connor ’19
Wednesday, June 7
On Wednesday, I went to fewer sessions and labs so I could work on redesigning my app based on the feedback from my design appointment. I think that the criticism helped me see something that was clearly missing from my app design, and it’s a one-of-a-kind experience that you can only get at WWDC. The nice part about the lounge where I could work was that I could code while watching a live session either on the televisions inside or streaming it on my computer.
Additionally, breakfast, lunch, and afternoon snacks were provided, so the lounge was a great place to refuel and code between events.
Some notable sessions that I attended were Debugging with Xcode 9 and Natural Language Processing. In the debugging session, I learned some new techniques to track down problems in my code or my user interface. I learned about some interesting new features in the recently released version of Xcode, the Integrated Development Environment (IDE) where I can write all of the code and make user interfaces for my apps. Another feature in Xcode 9 is wireless debugging, meaning I don’t have to connect the device to my Mac with a USB cord every time I want to run an app on it.
In the Natural Language Processing (NLP) session, I learned about some of the techniques to use Machine Learning to search a specific language. By specifying a language, it can intelligently return all content with associated forms of a word. For example, by searching “hike,” the demo program could return all images with captions including forms of the word like “hike,” “hiking,” “hike,” “hikes,” etc. There are so many applications to this including intelligent content search in-app to a filter for a social network.
In the evening, this time was dedicated to “meet-ups.” There were several different meet-ups including Education, AR/VR, Diversity, Photos and Videos, Business, and Worldwide areas where people could talk about how they innovate or plan to innovate in the field, and be inspired. I visited the Education meet up and learned about some of the companies that have been working to make it easier to teach students from kindergarten to college how to code. Some include Sphero–a rolling ball that can be controlled with Swift Playgrounds–and CodeSpark–an app that uses a building block game to teach about the different types of data in an app and the functions necessary to control the hardware. Many of these solutions ranged from basic interaction with the companion app to more in-depth code, suiting all ages.
On Wednesday, Apple also announced the winners for the annual Apple Design Awards. One of the winning apps was AirMail, made by the developer I had sat next to and talked with on the plane ride to California! This prestigious award is given to apps with outstanding design, functionality, attention to detail, and accessibility.
Thursday, June 8
Thursday was a spectacular day – it felt like the peak of sessions and labs, and there was also “The Bash” too!
It all started to feel like a routine now – arriving at the conference center around 8:45 AM, grabbing some breakfast, and heading to the first session of the day. Today, the 9 AM session was Core ML (Machine Learning) in Depth. What’s cool about machine learning is how flexible it is. While there’s a wealth of models available that have already been trained, people will likely want to expand outside of the capabilities of an existing model. This session talked a bit about how to train your own model. Training a model is tough because a lot of data is required to “teach” it. For example, if you were trying to get a model to recognize a pool, you would have to run images through the model at every angle, and then correct the wrong result using the correct result, a pool. This is called a Neural Network, one of the many techniques used to train a model. The weights are adjusted on the model to create the proper calculations. Then, the completed model is converted in the custom MLModel format and available to use in an app.
Then, I attended a UIKit lab. UIKit is the fundamental and most commonly used method to display content on a screen, making things possible such as text, using a UILabel or UITextView, a rectangle that can have other objects inside of it, called a UIView, a button that can trigger an action, called a UIButton, and so on. The possibilities are truly endless as you can customize all of the properties of the different interface elements. I specifically went to the lab to get help with a layout problem I was having in the Chaminade app where it would not size the height of a label correctly. I got help from an engineer, who upon looking over my code and determining that it was all correct, had me file a bug report. Unfortunately, this didn’t fix my issue, but since he works on the UIKit team, he said he would take a look at the bug as it’s clearly a problem on their end. Speaking of bug reports, that was the seventh bug I had reported since Monday! The great part (for me) about beta testing the new software such as iOS 11 is that while the experience may not be as stable for me, I am helping perfect the software so that it’s working great for the public release in the fall.
I attended some more labs in the afternoon, such as the Core ML and ARKit lab in conjunction. I mapped out a general path to take to work on an idea I have regarding machine learning and augmented reality, and having the engineers right there to steer me to the right technologies was an amazing opportunity. I also stopped by the WatchKit lab to learn about some best practices when making a companion app for an iPhone app, and a Swift Playgrounds lab to learn about intuitive ways to create Playgrounds Books to help teach others how to code. I plan to actively make books next year to assist with the Swift curriculum that all students will be taking part in.
To close the day, I attended two more sessions. In the Advanced Animations with UIKit session, I learned about how to make intuitive, interactive animations in my app. For example, when dragging up from the bottom of the screen to show Control Center, and most likely letting go mid-drag, that is an example of interactive animations because the animation is completed for the user automatically. And finally, What’s New in iMessage Apps highlighted some new features. If you’ve ever sent a rich message with an iMessage app, for example, a game move (such as GamePidgeon), you’ll notice that it only displays a static image and title. However, now, it is possible to have a live view inside the conversation, so you could see a game move animate right in the conversation without even opening the message. I think this opens up some really cool possibilities for iMessage apps because it’s so easy to send rich, interactive content to your friends and family.
It was quite the day packed with some awesome sessions and labs! But of course – we still had The Bash!
The Bash was held at Discovery Meadow in San Jose, only 2 blocks from the convention center. They had various food options, drinks, tables to hang out at, and a game area. Then, Craig Federighi welcomed Fall Out Boy to exclusively perform for us.
This event was an awesome time to take a break from coding and hang out with the friends I had made throughout the week. Lodging was provided for the first time this year, at San Jose State University, so this allowed me to easily hang out with other scholarship winners during and after the conference each day. Another thing I’d like to mention is truly how diverse the conference was. On Monday at the Keynote, Tim Cook announced that 75 countries were being represented at the conference!
It was an awesome performance by Fall Out Boy, and overall, a fantastic night.
Friday, June 9
The conference was a lot quieter on Friday after the long week. I first attended a session on Auto Layout allowing me to easily scale my apps’ user interface between different sized devices. Using traits like vertical and horizontal spacing, proportions, and equal sizes, I can easily make my app look great across many devices.
My last event at the conference was a lab focused on SiriKit. SiriKit is a framework that allows developers to enable users to ask Siri to do certain things in their app. There’s many different supported “intents” as they are called, such as Notes and Lists, Car Unlocking, Messaging, Calling, and more. For the Chaminade app, I wanted to try to add a Siri feature allowing users to ask, “Show me a list of events at Chaminade”. The key word is list, because while they don’t technically have an events intent, there is a list intent. So by using the events parameter, I can return the upcoming events, just with a simple voice command. However, when working on this, I ended up working with not one, but four Siri engineers! We had found a bug in the framework that when the request used “Chaminade” as the app name, it could not find my app but instead the stock Notes app on iPhone. But when I changed the app name to “Chaminade HS” and used that in the request, Siri connected to the extension of the app and successfully presented the card that would show the events. It’s always comforting to stump the engineers once in a while to make sure I’m not going crazy!
I hope this series documenting my trip inspires you to join a world of opportunity, a chance to reach people all around the world and promote change with your creations.
Unfortunately, the spectacular week went by super fast! I simply cannot express in words and even images what it felt like to attend the Apple Worldwide Developers Conference 2017 as a Scholarship Winner. It truly is a worldwide event bringing people together from all over the world to learn, connect, collaborate, and celebrate the awesome creations that developers produce. I hope this series documenting my trip inspires you to join a world of opportunity, a chance to reach people all around the world and promote change with your creations. Additionally, I hope this gives you a new perspective on what it’s like to be a developer, and what it’s like to attend the largest event of the year for Apple Developers.
If you are curious about app development and programming, want to learn more about what I do, more about attending the conference and how I made it there, or just want to chat, feel free to email me at firstname.lastname@example.org or check out my website at ryanmoconnor.com Thanks for reading!