My first month at Quansight

Hi. It’s been a month since I joined Quansight and believe me, it has been totally awesome so far. Quansight is just an ideal company for anyone interested in open source software and looking to make an impact with the help of brilliant developers. The best part is that the whole team is easily reachable even despite being fully remote. Since day 1, I have been working on a bunch of issues in NumPy and SciPy, and got my hands dirty on several cool technologies and concepts like how Python, C and Fortran together result in high performance but still easy to use code; Pythran, a tool to convert Python code to efficient C++ code, and a lot more. Sounds interesting? Well stay with me and I will walk you through the experiences of my first month at Quansight. I will also tell you about my interview experiences later on in this post, in case you are (or become) interested in becoming a part of this wonderful team.

During the first week, Ralf Gommers, Ashley Baal, Jennifer Houssian and Kush Shrimali helped me get acquainted with a bunch of administrative stuff like GitHub and Slack access, adding me to various recurring meetings and my first project details. Overall the onboarding was quite smooth. In fact, contrary to my previous experiences, I have been adding value to the company and open source since day 1. I got my first project on array standard APIs described in NEP 47. Basically, I was assigned three things. First, vectorising all the functions under numpy.linalg namespace. Second, allowing never_copy mode in numpy arrays. And third adding a keepdims argument in numpy.argmin and numpy.argmax. Initially, I struggled a bit to understand how three languages are working together in a single project and which changes should be made in which part of the code to make the above features a reality. Well, thanks to Matti Picus and Sebastian Berg that I got over this really quickly. Matti explained to me the templating rules being used in numpy for linalg functions and Sebastian helped me out with never_copy and keepdims feature. In fact, with the help of the community, I was able to make three PRs to implement the above ideas. Here are the links, ENH: Vectorising np.linalg.qr, ENH: Add support for copy modes to NumPy and ENH: Adding keepdims to np.argmin,np.argmax. In addition to the assigned tasks, I also got the opportunity to explore a variety of issues in SciPy. I started PRs for adding the DIRECT optimization algorithm and Dinic’s max flow algorithm. Another interesting issue which I have been working on involves using random direction vectors to verify the analytical derivatives provided by the user. The new approach would reduce the time complexity from quadratic to linear in the number of variables. Here’s the PR, if you want to take a look, ENH: Using random directional derivative to check grad. Getting a bit too technical? No worries. There are some fun things going on too at Quansight. There is a concept of “coffee buddies” in which the members of the team are randomly paired with each other once in every week. Then we meet them and talk about our work, some casual stuff like hobbies, music, movies, TV shows, games, our cultures, and a lot more. Till now I have met some really cool people through this like, Ivan Ogasawara, Gregory Lee, and Will Wray, and learnt a lot about different cultures across the globe.

If you are curious about joining Quansight, then here it goes. I will now be sharing my interview experience with the team. Though before that, let me tell you how I came to know about Quansight. Well, I was following the company for the past 3 years but wasn’t eligible for full time roles due to my college studies. Just a few months before my graduation I came across an open role at Quansight’s careers page. I tried to give it a shot. Thanks to Amit Kumar and Ondřej Čertík, they helped me with the application. It consisted of submitting an up-to-date CV and a cover letter. After a few days, I got an opportunity to interview with Ralf where we discussed my projects and Quansight’s culture. When he told me that they work on impactful and interesting projects like PyTorch, Numba and NumPy, I became more interested in joining the team. Afterwards I had two technical interviews with Ivan Yashchuk and Pearu Peterson. They were based on the projects which I mentioned in my CV. Like, one of my projects (LFortran) involved LLVM, so Pearu asked questions based on it. Similarly, Ivan asked me to implement gradient descent and forward mode automatic differentiation since another project (BNN) involved these two things. You would be surprised to know that referring to documentation was allowed. Yeah, candidates are evaluated on their ability to solve problems using the technologies they are familiar with and not on how well they can remember APIs of different libraries or language constructs. In short, the selection process is personalised with a focus on our past projects.

This is all I wanted to share for now about my first month at Quansight. If you have any questions then feel free to reach out to me at gsingh@quansight.com.

Address

Jodhpur, Rajasthan, India