WWDC Day 4 – All About Debugging


I spent yesterday in sessions all day looking at Xcode, LLVM, and LLDB and it was amazing.

I had plans to go to the Panic at the Disco party and beer bash (even got my above wrist band to confirm I could have a beer), but decided it would be more productive looking at Xcode more.

I started the day in the session on building faster in Xcode, the basic idea here was explaining how to setup your asset dependencies to ensure that Xcode’s parallel and incremental compiler technology could take advantage of as many cores as you has ever on your machine. My apps tend to be pretty simple so this wasn’t a big issue for me, however understanding how it all holds together will be key as I move to more complex projects and start including more frameworks in my projects.

The next session “What’s new in LLVM” went into the depth of the compiler itself. The session explained what certain complex error codes meant, and other internals. To be honest this was the one session this week that pretty much went straight over my head. I am sure that if I spent more time doing very complex projects with lots of multiple languages and frameworks, this session would be very informative. But I am not there…yet.

I took a break from deep technology to get into a session about Creating Great AR Experiences. This was pretty much a best practices session and went thru how Apple builds their AR experiences to make the application natural for users. The most insightful part was a discussion of VR and 2D apps, which are still using ARKit. Not all AR apps have to have a camera into the real world. While I understand the point the speaker was trying to make, I don’t consider an app that watches you raise your eyebrows to be an AR experience.

The next sessions was “Core Data Best Practices” – this was GREAT! Not only because the speakers took us thru enough concepts to help me get my head around Core Data but because of the guy from Microsoft I was sitting next to, who works on the outlook App, and helped me understand how to start versioning my database. I’ve immediately edited my app that I am working on, and put in database versioning, so hopefully, my testers will no longer have to deal with database crashes.

The next part of the build / deploy pipeline I went to was a session on Automating App Store Connect. The App Store connect team has started exposing much of their process through standard RestAPIs. This change is great news, and will allow for improved pipelines for adding and removing testers, creating reports, and managing your app. While I don’t need this process yet, it was another session which shows the maturing of the AppStore process.

The penultimate session for the day was around building “Better Apps through Better Privacy”. This is a topic that is near and dear to my heart, and while the speaker did a great job about going thru the concepts and big ideas, there was not much technical details in this session. He did point to other session that went through the technical details, so to that end it was worth while. As I mentioned earlier in the week in the session on deleting the learning that Siri Shortcuts may have, the number of developers in this session was less than I would like to see. I think the bigger issue is that many of the developers I have talked to this week are focused on enterprise, and they don’t consider privacy as much for internal facing apps.

Finally, the most AMAZING session of the day was “Advanced Debugging with Xcode and LLDB”. I’ve been using IDEs for my development since the days of Turbo Pascal and Borland C. I hadn’t realized how set in my ways and thinking I’ve become in how a debugger should work. This session showed how you can basically change your code to test bug fixes through breakpoints in the code (including doing screen changes!!). You can build python scripts and attach them to your Xcode debugging startup. I had not seen this type of debugging before in Xcode, and was really happy to have gone to this session. (Oh and a free tip for people who may not have access to the replay video – if you are at a break point, you see a green bar off to the side with three horizontal lines, if you want to skip a line of code, just grab it and move to where you want to go…but beware, you can put your app into an unknown state).

Today is the last day of WWDC, and I can’t wait to see what I learn today!