WWDC scholarship

Apple has always been one of my favorite companies, and being able to attend WWDC in 2019 was a dream come true. I had a fantastic time, and it's a week I'll never forget.

My submission was a map showing a location beacon moving across a city map. Random obstacles showed up at random locations, and the beacon would optimize its path to get around as many obstacles as possible.

As WWDC in 2018 was going on, I was following the news and saw some of the scholars' experiences on Twitter. I read Samay Shamdasani's blog post about winning a scholarship, and that was when it clicked: I decided I was going to give the scholarship process a shot next year.

It seemed like a long shot. I had never opened a Swift file in my life. I did have experience working with JavaScript and Node.js, but never anything on Apple's ecosystem. In July, I started brainstorming ideas for my playground submission. I watched every accepted and rejected scholarship submission video I could find on YouTube, to get a sense of what worked and what didn't. Of course, I wanted to win, and because the odds were stacked against me, I had to know exactly what worked in the past. Here are the key components I repeatedly saw in winning submissions:

  1. some demo that users can watch or interact with, instead of something that instantly happens when they click a button,
  2. incorporate some real-world problem into your playground,
  3. incorporate a new Swift framework into your playground to demonstrate new technologies,
  4. document everything in the playground on the left-hand side,
  5. should be simple enough that someone who doesn't know Swift can understand,
  6. and introduce the playground with simple examples of the libraries you'll be using

There were plenty of very technologically advanced submissions that got rejected because they didn't have personality. As I was developing my playground, I continuously went back to these points to ensure my playground had all of these qualities.

I watched this video on YouTube, called “Swift Programming for JavaScript Developers,” which helped get familiar with how Swift is written. For example, I didn't understand why I needed to specify what type of variable I was defining, but this video cleared it up.

One of the projects in JavaScript I was working on then was Routeshuffle, a random route generator for runners. At first, my idea was to make a version of Routeshuffle for my playground, but this proved problematic because a) playgrounds are judged offline, and b) it doesn't fulfill most of the qualities I noticed winning submissions had. Over time, I morphed this idea into a simpler and more interactive one, but I didn't start working on it until March 5.

At this point, my idea was having a car drive around a city map where random obstacles popped up, and the vehicle had to reroute around them. This was a solid idea, I thought, because it would satisfy point 1.

I started getting the basics of working with Playgrounds in Xcode. This was a lot of watching YouTube videos, trial, and error, and asking questions in the WWDC Scholars Discord.

I started using UIKit but quickly switched to SpriteKit.

My the time the scholarship was officially announced on March 14, I didn't have much done. I just had my playground started with the basics. For the next ten days (until my submission was due on March 24), I worked non-stop. Every minute of my free-time went towards working on this, and I stayed up until midnight most nights working. Was it fun? No, but looking back, this was probably the most motivated I've ever been to get something done on time.

Sticky notes

I used sticky notes to make to-do lists and keep track of what needed to be done. Each sticky note was put into one of three categories: need to do, if you have extra time, and done. Every night before I went to bed, I wrote down what I was doing, so I could immediately jump into work the next day.

The Discord chat helped me understand key concepts when I was confused.

A lot of the project revolved around not very well-documented functions in Swift, so searching GitHub for code using that function was very helpful. Most of the time, looking at examples helped me understand a concept far better and faster than reading documentation on Apple's website did.

Six days later, I had a decent version of the traffic simulator working. Users could enter what coordinates they wanted to get directions from, say [0,0] to [4,5]. This was a good start, but I wanted the capability for users to enter “cafe to school,” and I would have a list of what coordinates these locations were. I watched several of the session videos from WWDC18 and saw one about the Natural Language framework. Word tagging can identify keywords from a string based on a machine learning model, which was exactly what I needed to do. On top of that, the framework was less than a year old, satisfying point 3.

Picture was taken well past midnight

I manually wrote down plenty of examples for the ML model, and much to my surprise, it worked pretty well. Users could type in “school to cafe,” “cafe from school,” “How do I get from the cafe to the school?” or any other variant, and it would extract “school” as the origin, and “cafe” as the destination.

To satisfy point 6, I decided to add two additional slides to my playground that would introduce the two major frameworks I was using: pathfinding with GameplayKit and word tagging with Natural Language.

During school, when I was away from my computer and couldn't work on my playground, I worked on the essays necessary with submission. One is required, and the other two were optional.

  1. Tell us about the features and technologies that you used in your Swift playground, in 500 words or less.
  2. If you've shared or considered sharing your coding knowledge and enthusiasm for computer science with others, let us know in 500 words or less. (optional)
  3. If you have one or more apps on the App Store created entirely by you as an individual, tell us about them in 500 words or less. (optional)

The first essay was easy to write because I was describing the flow of the playground and what was happening behind the scenes. I already knew how my playground worked inside and out. The second was a bit harder, as I had to think back to my achievements in computer science and how I've helped others. I skipped the third because I had never created an app. I had my English teacher and my computer science teacher check both of the essays before submitting them. In total, I probably spent 5 hours writing and revising.

I submitted my playground 5 minutes before it was due on March 24. The next three weeks were pure waiting. Finally, April 15 was when acceptance emails were expected. I was expecting the email to be sent sometime in the afternoon. My Apple ID email is an ancient AOL one, so I had to manually log in to AOL's website every time I wanted to check to see if the email arrived.

Finally, at 7 pm local time, I saw a tweet from an Apple Developer PR person congratulating all of the winners. This was it. My heart rate was off the charts as I checked my email. The screen flashed, and I saw the words “You've been awarded...” and I was so happy. All of the hard work and time spent paid off.

(Ironic, because this tweet was sent from “Twitter for Android”)

Early Saturday morning on June 3, I boarded an Amtrak train from Albany to Penn Station, trekked across New York City to an obscure bus station (to avoid the Airtrain at all costs), and got to JFK. My flight landed in SFO, where I took the Caltrain to San Jose Diridon and rode my first Bird to the dorms at San Jose State University, where Apple was providing lodging.

These things are fast!

On Sunday, we took the short walk to the convention center to get our badges and jackets. The plaza in front of the convention center is open and sunny, and music (primarily songs from Apple commercials) was playing on big speakers from across the street. It's hard to explain, but the vibe was incredible.

Later in the afternoon, the scholarship kickoff was held at Discovery Meadow, a park down the street from the convention center. More than 50 Apple engineers were there to chat about their careers and just about anything. It was interesting listening to their stories and why they enjoyed their work. iJustine even appeared, and I got a picture with her.

Apple flies out some of the best employees from its retail stores across the country to work logistics for the event. Because the scholars have a different colored badge than regular attendees, they will cheer something like “We've got a scholar in the house!” and clap and cheer whenever you walk by them.

On Monday, the big keynote was a blast. Many times during the presentation I couldn't believe I was actually here, in the room.

Monday night I went to a live recording of the Accidental Tech Podcast.

On Tuesday, I headed into San Francisco to visit a web engineer at Twitter's headquarters. Because of delays on the BART (which I should have accounted for), I was a few minutes late to the meeting and was sprinting down Market Street. The security at Twitter is top-notch. They have someone in the lobby of the building to verify your name is on the list, then they send you up in the elevator. Then, I needed to show my driver's license to the staff upstairs and wear a visitor's badge.

The visit to Twitter was amazing. The open-air space they have set up seemed like a really nice place to get work done.

Back in San Jose, I went to many of the sessions throughout the week and learned a lot about new features in Swift and on the software side of iOS. I met so many inspirational students that were doing and making incredible things. There were so many smart people to learn from in one place.

On Thursday, I took the tram to Mountain View and visited Nathan Leung at Google where he was interning. It was cool to walk around the huge campus and get lunch at the cafeteria. I will definitely apply for internships at SV companies in college.

That night, Weezer took the stage at Discovery Meadow for the bash. Afterwards, a group of us went birding around San Jose.

Finally, Friday. The last day of the conference. It was sad to say good-bye. I tried making the most out of the day.

The Scholarship Lounge, seconds before it closed for good on Friday. This was where the scholars could hang out between sessions and connect with each other. There were a lot of good discussions in here.

A view from the deck at the convention center an hour before it closed on Friday.

On Saturday morning, I left San Jose and went into San Francisco to meet with a few people I had met on Twitter. Being able to meet people IRL who I met online was a cool way to end the trip.

During the afternoon, I walked around SF while hauling my luggage around. I walked from Pacific Heights to the Twin Peaks. It was a really scenic (but hilly) walk. Then I went back to North Point to get a bowl of clam chowder before my flight left. I underestimated how much time I had and because there were no trams for some reason along the Embarcadero, I had to hurry to the Embarcadero BART station to get to the airport on time.

Overall, it was an amazing trip! I think all students with an interest in computer science and attending the conference should apply for a scholarship.