This summer I interned on the Developer Tools team at Apple! It was an amazing experience, and the sort of thing I had been dreaming about for years.[1] I got the chance to help improve the tools that we use every day, learn more about lower-level Apple technologies, and meet tons of other Apple engineers.

Working on Xcode

After a few days of onboarding and getting a copy of the mythical Xcode.xcodeproj, I hit the ground running. Xcode is by far the largest single codebase I’ve ever worked with. Compared to relatively modern iOS codebases by Airbnb or MailChimp, Xcode is a behemoth of Cocoa artistry that draws its lineage from the original 1992 NeXTSTEP Project Builder and Interface Builder. That’s atleast a few years older than I am. It’s hard to say how much, if any, of the original code is still floating around, but the core concepts are still there. [2]

One of the small bits I got to work on was a new improvement to the Memory Graph Debugger. As it turns out, if you find something interesting in your app’s memory graph, you can actually export a .memgraph file. This is super useful for filing comprehensive bug reports (like radars), since it contains the entire memory dump of your process. They also come will all sorts of great information about the process, like its version, uptime, total memory footprint, binary architecture, etc. [3]

Even though this information was included in memgraph files, it never actually got displayed anywhere in Xcode. I banged on this problem a bit during my first few weeks, and now all of this info is shown as a part of the Document Inspector! This feature first shipped in Xcode 10 beta 3. 🎉

Working on Instruments

I did a few other minor patches on Xcode, but otherwise most of the summer was spent working on Instruments. I was in the Developer Tools organization, but most specifically on the Performance Tools team. Their biggest focus is Instruments itself, but they work on all sorts of other cool stuff too. The team had big news at WWDC this year, where they got to unveil Custom Instruments! It really changes the game in this department. Instruments is a great platform for profiling the performance of your own apps, and it gets better every year.

I spent most of the summer working on some cool prototypes related to Custom Instruments and data visualization. I can’t go into much detail (as is the nature of unreleased projects), but I absolutely learned so much. I spent a lot of time working with AppKit and some cool visualization tools. I also got to actually apply some CS theory concepts that had otherwise been relegated to the classroom. Super fun!

Attending WWDC

WWDC is every June, which is conveniently right in the middle of a summer internship. Apple Engineers (including interns!) can get week-long badges if they also spend time staffing the labs. I worked the Custom Instruments lab and the Open Swift Hours lab, and got to chat with engineers from around the world who were interested in adopting our new technologies. I also sat-in on a bunch of sessions, cheered on my team members during their talks, caught up with old friends, and made new ones! I had been to WWDC before, but this one was the most fun by far.

Other fun stuff

I lived in Cupertino / the bay area again for three months, and I didn’t just sit around at home on the weekends. I picked up a bike on my first day, so I spent a lot of time biking around Cupertino.

I took the train up to San Francisco a lot. Biking up to Sausalito was a great day-trip, so I did that a few times! I also got to go to Corgi Con this year (after missing out last year).

I spent a lot of time hanging out with my roommates Mert, Anthony, and Hunter. There was more than enough beer to go around 🍻

I took a pilot lesson with @NachoSoto!! I’ve always wanted to get my pilot’s license, so this was an awesome experience. We flew from HWD over to SF and around the bay. I’m seriously thinking about doing more lessons and getting licensed after I graduate.

Overall an amazing summer! I have one more year at Georgia Tech, and then I’ll come back to the Bay Area for good.

Footnotes

Obligatory note: I no longer work at Apple and currently don't have plans to return. This post does not represent the thoughts, opinions, or experiences of anyone but myself, and doesn't contain any Apple Confidential information.
[1] In the Georgia Tech CS 1100 "Freshman Leap Seminar", we had to write a letter to ourselves 5 years in the future. We were supposed to mention our dreams over that timeframe, and I remember putting down "Work at Apple".
[2] I didn't go hunting for "the oldest living source code left in Xcode" or anything, but I did come across code older than I am when I was working on a patch for some other System framework.
[3] .memgraph files are just Binary Plists, so it's relatively easy to pop them open and see this information for yourself.