Hundreds and thousands things have changed during 2022 for me, and fortunately, most are good ones. While there are celebrations, there are also pity.
The most significant thing in 2022 was the Ph.D. application. Though my peers felt confident for me, I was pretty unsure during the course of the application. As an undergraduate, I worked on research projects and had some publications, but I was very unconfident about whether I was holding a high profile comparing to others. I absolutely understood how competitive it would be for Ph.D. applications, especially Computer Science. Because of this, the I was kind of trapped into the mood of being anxious through the entire process, until I got my first interview from UIUC. It makes total sense that I, or we, became anxious when things are unpredictable. We all want an assurance, a promise. However, information, unfortunately, is not fairly and equally shared across each party involved: the committee won't let us know whether we are rejected / accepted until they reach agreement on the majority of the applicant; letter writers are busy (since they may write for dozens of students), and may not update us instantly. I felt that communication is very important, especially between us and the letter writers. My advisor gave me a really good idea to keep things on track: create a Google sheet and put all the letter writers -> school table together. Whenever they finished writing / uploading, they put a check mark after that row. This offloads a part of the "anxiety" to the letter writers.
I don't have access to my letters since I signed the waiver, but some of my friends described (very very very roughly) my letters a little bit, and to me it seemed that my letters are really strong, and I am very grateful for my writers (Prof. Zach, Prof. Sharad and Prof. James). As for the result, I am very happy with the choices I had (and I made), and I was also kind of surprised a bit. For the "unexpected" part, I got an offer from UW. I was very surprised because people told me that UW is very strict about admitting its own students (b/c of academic diversity). Another surprise was from CMU. It is kind of expected while also unexpected. First, I was rejected by CMU, but I though I could get an offer since I had a (not close) collaboration with a professor at CMU. This also was the opportunity that inspired my research interests in PL cross machine learning systems. In some sense, the rejection was expected because I did not comminicate very often with the professor and mainly worked with UW folks.
However, this won't let me down because there were other great choices! I got 5 offers from 10 schools I applied. I was rejected by the top 4, and I withdrew UCLA as soon as I got the offer from UCSD. Besides that, I got offers from UW, Cornell, Princeton and UIUC. Visit days are very very important: before attending the visit days, my top choice was UW and Cornell, but it soon changed after the visits. My factor break down was about: 60% academic (faculty match, reputation, resource, etc.), 40% living (stipend, location, commiunity, etc.). The first hard choice I made was to drop UIUC. The major consideration was I had to re-take TOEFL, which I couldn't spare any time for it. Plus, my feeling was that faculty match was better at Cornell because Prof. Adrian is there. After attending UW's visit days, I decided to drop UW, another tough decision. Many professors I met suggested me going to another institution to broder my connection and academic interest, and I was convinced and I agreed. Finally, I had to break the tie between Princeton and Cornell. Many have asked me why I ended up with Princeton but not Cornell. In my opinion, both are super strong programs, and faculty match was about the same. The key factor that helped me make up my mind was how broad the faculty match I could have. At Cornell, I chatted with Adrian, Chris, Dexter and Fred. To me, I felt that (at least at the CS department) Adrian would be the only professor I could collaborate in a long term. For Princeton, absolutely Aarti and Sharad are great choices, and additionally Dave and Andrew would also be great choices, as I am also very interested in formal methods. Though now I am explaining, it was more like following my gut feeling at the moment I accept the offer from Princeton.
I interned at Intel Labs for 3 months during the final quarter. I applied for RCL (reduced course load), so I could focus more on the work. The experience was really really good, especially it was the first (semi-)industrial internship (well, I should call it industrial research then). For 10 weeks, I worked on a transpiler from Python to Dafny since the group I interned at was working on high-level hardware modeling in Python. They wanted to verify the functionality of the high-level ISAs in Dafny leveraging its automated reasoning capability. It was very interesting to figure out how to map the high-level program constructs in Python to another high-level language. I named the project Pyrope because I hope it could bridge Python and formal verification tightly ultimately (the slide is available on my homepage). I had a 3-day onsite meeting sessions. It was exahusting but some parts were very interesting. For instance, Zhenkun (one of my mentors) introduced how they formalize semantics of the ISAs in Dafny, and how they dealt with non-linear arithemtics. Those talks helped me very much when I was still designing the interface of Pyrope. Hopefully, it will be open-source soon!
Another internship experience I had was with Taichi Graphics. The products of the company are Taichi Lang and Taitopia (open-beta recently). The former is the DSL (deeply-embedded in Python), and the latter is a cloud 3D DCC platform, backed by Taichi Lang. My job was refactoring the IR for Taichi Lang. Thankfully, Taichi's codebase is extremely clean and easy to read, it didn't me take me long to familarize myself with how the compilation proceed under the hood. It took me about 3 months to fit the representations of Matrix/Vector in their lower-level IR (CHI IR; though left tons of CI tests to fix Orz). For the rest of the internship, I explored using EGraph for CHI IR. This experience also induced my interests in PL for Graphics / Graphics programming. Definitely recommend doing an internship at Taichi. I did it remotely, but I can imagine onsite could be far more interesting.
I started living at Princeton in August 2022. It is a nice place to do research, very quiet. People here are very diligent. My colleague usually stay in the office until 9:00 pm. This is very uncommon at UW, where people usually go back to home around 6:00 pm (if there's no upcoming deadline). Courses are challenging but, as usual, like UW, very rewarding. I took a theory course and a blockchain course.
Now, I am still exploring the directions for future research, and currently still trying out some egg / taichi stuff. For the next year, I hope to