My GSoC application


The journey behind my proposal

Today I just finished my last exam for this semester. It was on Convex Optimization, my favorite class of my undergraduate experience (so far!).

I decided it was a good time to share with you a brief story about my growing interests in Optimization and CVXPY which culminated into an accepted proposal for Google Summer of Code.

Convex Optimization

The Convex Optimization class at University of Manchester was taught by Professor Matthew Thorpe. I chose this class because the Math Minor at Concordia required a similar class on Optimization.

Little did I know, I was in for quite a ride.

The teacher provided preliminary material to help us prepare for the course. Upon reading it over, I instantly thought about dropping the class, there was atleast half of that content I had little to no familiarity with.

But I stuck with it… I read the notes over and over, then I discovered Stephen Boyd’s amazing lectures online which inspired me to keep learning.

I went to the live lectures, didn’t understand a single thing, then watched the pre-recorded lectures, also didn’t understand much, then I went to the revision session and we were given weekly problem sheets, I couldn’t do them by myself, I ended up memorizing the solutions and regurgitating them later.

But during this process, I looked at the non-examinable portion of the course and found something I really enjoyed: practical implementations of optimization problems in Python, using a modeling language called CVXPY.

Joining CVXPY

Upon taking a glance at the documentation, I found a link to CVXPY’s discord community.

Out of curiosity, I decided to join and see what was happening. For the first few weeks, I was constantly lurking the general chat and learning about different issues people would encounter when using CVXPY.

From there, I started reading the pull requests from the CVXPY github repository and I had a growing desire to make some of my own contributions.

I started by looking into the list of issues and thought I could perhaps resolve one of them. There was one about adding support for complex differentiation that caught my eye.

However, with little to no knowledge on complex analysis, and only a few weeks of experience using CVXPY, I wasn’t making much progress at all.

Around that time, I found out about Google Summer of Code (GSoC) through CVXPY’s two projects that were completed last year.

Presentation at MIMUC

In the middle of the semester, there was an opportunity for undergraduate students to present an interesting topic of their choice related to mathematics. I decided I had to take on the challenge and signed up.

My abstract was titled: “Convex Programming with CVXPY”; I wanted to give an introduction to the Convex Optimization course but with an emphasis on the programming aspects of modern tools.

Engineering Building Lecture Hall

I had a lot of nerves before the talk.

Although only about a dozen people came to listen, it was quite an experience

You can find the slides for my presentation here.

Reaching out

Around the same time, my CO-OP supervisor at Concordia was pressing me to find a job for this summer. However, I really wanted to do something related to Open Source and decided to stray away from the normal path.

But apparently having completed three CO-OP terms is supposed to be impressive, so I still thought about ways I could remain in the program.

Desperate for solutions, I reached out to a CVXPY open source maintainer asking for any potential opportunities.

There was first a position to revamp the documentation, which had already been taken. But then I was proposed to do a project for this year’s GSoC.

I was like, of course I want to do that!

GSoC Application Deadline

The only problem was that I had to write a lengthy proposal detailing the project, benefits to the community, and weekly tasks to be completed.

I have a story to tell about this proposal.

I was visiting Brussels with my flatmate Gaurav, when I receive a message saying that the deadline to submit the proposal was in two days.

Not wanting to ruin the trip, I carry on visiting the city during the day and decided I would work at night. The problem is, we came back to the hostel around 1am and I was also exhausted from the abundance of kilometers we covered.

Despite the circumstances, I got to work.

After giving up many times as sleep deprivation was creeping in, I completed two of the main sections of the proposal. It was 5:30am… and we had to check out by 11am.

The next day, I find some time to polish the entire proposal but I am still missing one final part to complete it. It was due at 8pm, but we had to travel to Antwerp before 9pm. So I turn on my hotspot on the bus, open my Ipad and start writing.

Up until 7:50pm, I was entirely focused and managed to finish everything. After compiling the PDF and proof-reading, I submit my proposal at 7:56pm, four little minutes before the deadline.

Looking back, it seems like the struggle turned out to be worth it after all.