I’ve had an extraordinarily lucky life.

Since leaving Cambodia, I’ve been travelling around visiting friends and family, seeing shows…and interviewing for jobs. Probably the most important thing has been living with my immediate family (parents, brother, and dog), who moved to the east coast about when I left for Cambodia. But it’s time to get my life moving forward again.

Starting after Memorial Day, I will be joining Apple Inc. I will be working on the Clang compiler, an open-source, high-quality compiler frontend for C, Objective-C, and C++.

My interest in Clang began with its static analysis engine, and I’ve contributed to the project on and off for the past two years. A lot of you have probably heard me explain it as “a tool that helps programmers by catching stupid mistakes”, the software development equivalent of a warning when you’re about to lock your keys in the car. (If you’re a programmer, take a look at the post on my technical blog for a programmer’s explanation.)

I’m excited about going to Clang for a number of reasons (some of which I already can’t talk about), but one in particular is something I’ve been interested in for a long time: communication. Using a different programming language affects how you solve a problem, just as using a different natural language might encourage you to phrase things differently. A programming language is a user interface for software developers, and I believe we can improve that user interface both by allowing programmers to be more expressive, and by improving compilers to better understand the intent behind the code.

"You'll never find a programming language that frees you from the burden of clarifying your ideas." / "But *I* know what I mean!" -xkcd, "Well 2"

Most of you are probably not surprised that I’m going to Apple. I actually am, though. I grew up in Cupertino. I’ve interned there before, so even as a Mac developer it’s not a “final frontier”. I’ve been a little unhappy with the way iOS developers have been treated on a few (past) occasions. And I had a couple other very good options, which made this a very hard decision.

On the other hand, Apple is a company filled with smart people who have a lot of the same priorities that I do. And in the end, it was the project that convinced me: Apple is the place to be to work on Clang and its static analyzer, and Clang is the project for me. And hey, it’s open source, so not everything I’ll be doing will be secret.

I’m planning to live in San Francisco and commute down to Cupertino, either by Caltrain or by Apple’s corporate shuttle system. (By the way, does anyone know anybody who’s looking for a flatmate starting in June?)

My life has been extraordinarily lucky, even taking my lowest difficulty setting into account. I’m going to Clang, and it’s going to be great.

P.S. Because I’ll be working on tools for software developers, it’s still not my fault when your Mac or iPhone doesn’t work.