My Competencies

13 Feb 2023

While searching for a job, I find it useful to outline my competencies and weaknesses, so that I can quickly compare with the qualifications of the jobs and assess my fit. The content of this post would be very much aligned with a cover letter of a job application. Hence, it could be reused in the near future!

I got my batchelor’s degree from the Polymer Material and Engineering Department at Tsinghua University. In an undergraduate research training program, I took on a computational study of a nanoparticle system which is responsive to external mechanical stimuli. Despite of the short time, this training left me with great values: (i) curiosity for scientific research, (ii) solid coding skills.

To advance in the field of research, I applied for PhD programs in the United States, and was admitted to the Chemical Engineering program at the University of Minnesota. There, I made an important transition in my research career: I joined an experimental group and discontinued computational study. Back then, my motivation was the regret that throughout my undergraduate study, apart from courses, I never worked in a real “lab”, where I could manipulate real devices and materials. This led me to the field of soft / active matter, not too far away from polymer science, but with a physical bend. In my first days in the lab, I joined a project, where the experimental part was almost finished. The purpose of joining the project was “just to get my hands dirty”, according to my advisor. The only missing part was the image analysis – to extract the positions and orientations of ellipsoidal particles in each frame. At that time, we had a program for this purpose. However, it was based on the principle of finding and linking spherical particles, which turned out to be slow and prone to error. So I started to google “how to track ellipsoidal particle”. My memory of those days was: this was a challenging task, not only because back then there were not so many great tools as today, but also that I was not very familiar with the topic of either image processing / particle tracking / data visualization. In the end, what saved my day was a tutorial in the trackpy documentation. It slowly guided me through the procedures of detecting foam bubbles of ununiform shapes and sizes, and extract their positions and motions from the images. I found later on that the tutorial was based on a scentific research published in 2015, which was the year I was learning this! It felt like I was keeping up with the cutting edge technique! At the time of writing, I am going through this tutorial again, trying to recall how mysterious all these tools were to me back in those days, and how they gradually became part of my everyday toolbox.

Despite of being in a chemical engineering program, my research was hardly anything related to chemical engineering. I was working in an emerging field of active matter, which is a derivative of nonequilibrium statistical physics and biology. My PhD objective was to investigate the novel properties of active matter, using E. coli suspensions as a model system. During this investigation, many new experimental techniques were introduced to my brain: microbiology, optical imaging, photolithography, microfluidics, and even machining. All of these were really fun! I could spend several weeks in the biology lab trying to insert an artificial DNA into E. coli to make it behave differently. I could also go to the machine shop to fabricate a part. All these experience reminded me of my childhood playing with a variety of toys, but just a lot more complicated.

Toys were just toys. At the end of the day, I found myself more serious and more passionate about my code. As my tracking code was used by other members of the group, I got suggestions for improvement, such as adding a preprocessing routine, or adding the capability of finding particles of other shapes. These suggestions led me to modify my code quite a few times. At some point, I started to wonder: as the code grows bulky, it is harder to keep track of changes by my own memory, and reverting a change becomes more difficult, and is likely to cause error. How is large code project managed? This question led me to the version control system – Git and GitHub. In my previous post Focusing Prioritizing And Being Realistic, I mentioned one of my recent improvement of using GitHub: write more specific and informative commit messages. Such practice, I believe, makes my code maintainable and extensible.