Winter @ Wingify

Perks, work and the absolute blast I've had as an Intern at Wingify this winter

Posted by Shreyans on Sunday, January 8, 2017

Tags:

So my 5th semester was pretty much all about applying to companies accepting applications for software engineering interns and me going all crazy in the process. I was dead set on making sure that the upcoming winter was spent productively. Mum couldn’t bear the idea of me being in another city during the winter holidays so even though I had follow up offers from some cool places in Bangalore and Delhi, I decided to look at some of the best places in Pune.

I had heard of Wingify through a friend, read an article here on Quora showcasing their amazing work culture and even met a few people from their PushCrew team at the InOut Hackathon I had been to a couple of months back, which was absolutely rad. They had offices in Delhi, Pune and NYC so figured I’d just apply. After applying, I recieved an email nearly 2 weeks later. After nearly 6 follow-ups, 2 technical interviews and several calls with the HR, I received my first ever formal internship offer. I took it up and man was applying to Wingify the best decision I had ever made.

The Perks

Alright so first, let me start off with the perks and everything nice.

My first impression of the place was quite literally Daaang, is this a nice place to work!. The office is airy, green and open workspace with an abundance of MacBooks and HD monitors for programming. There were transparent, glass walled discussion rooms everywhere with complex diagrams inked up on the walls. You could sit and code wherever you liked, walk into any room, draw something on those walls to your heart’s content and just sit there admiring your piece of modern art, which would most likely be an algorithm flowchart. Oh and the stickies in use everywhere!

Code 'n Breakfast
Stickies!

Did I mention there’s a Ping Pong Table, a PlayStation 4, a Skateboard and a BMX bicycle all inhouse. Meh, Pretty standard right? :metal:

Yuh huh
'course you could get pets

As far as food goes, we had mouth watering(well, atleast by hostel mess standards) catered lunch and could choose from a variety of cuisines everyday. Just place an order over the app and you have it delivered to you with all that tight, fancy packaging. I’ve tried stuff from Jalfrezi to Spaghetti with Meatballs for lunch from their ever changing menu.

There was also an inhouse kitchen where the chef would hook you up with noodles and sandwiches at any time of the day. The fridge was loaded with drinks ranging from buttermilk, juice and beer. Ofcourse, chips and cookies were taken for granted off their wall shelves and chomped down. The number of tea and coffee variants available was overwhelming so I’d just stick to the good old coffee machine.

Coming from the dark helms of an otherwise challenging engineering life, bad mess food and filthy hostels (all in all, :poop:), it was hard for me to digest all of this at once. The #goodLyfe did exist indeed

As it so happens, we also hit 100k MMR on PushCrew during the month of December so we had 2 back to back parties :fire:

Did I mention we had 2 parties?

The Project(s)

Well, it wasn’t all fun and games. I worked on super interesting and challenging projects over the course of my internship.

So the primary project I worked on was to fix the internal Salesforce Sync system and migrate nearly a quater million leads(potential customers) into Salesforce. Every potential customer who would sign up on PushCrew, ask for a personalized demo etc were to be present as leads in Salesforce.

At the time I started working on it, the sheer number of daily leads were so many that we’d bypass the API limits in no time and the system would crash time and again. The solution it seemed, was to bulkify all the queries and data we were sending wherein more data would be processed in a single API call.

So I began reading up on the Salesforce Bulk API and how it worked. I found a Python Library called salesforce-bulk which seemed to be the way to go. Once I began using it and testing it, I realized that the library was essentially broken. There was no support for unicode characters(really?), no 2 factor Auth support(it scraped the username and password off the main pages. Wth), no Sandbox support and a bunch of other bugs.

I decided to take things into my own hands, devised a hack to bypass 2 factor authentication into Salesforce without crashing and fixed all the other bugs as well, taking some help from existing pull requests.

After rewriting it, I Open-sourced and released my new prototype under the name salesforce-bulkipy on GitHub and the Python Package Index. I could simply pip install salesforce-bulkipy and my library would be installed in a jiffy. That feeling was unparalled. My Library! Needless to say, I documented it well and even sent in a cheeky pull request directing salesforce-bulk's readme file to my library :satisfied:

Now with my library set to use in production, I devised an algorithm to update customer accounts and Leads in Salesforce by minimizing the API calls and maximizing caching in the local Postgres DB. After heavy testing, deployment into production, 2 crashes in production, the final results were mind blowing.

:dizzy: My library coupled with the algorithm managed to reduce API usage by a staggering 70% :dizzy:. Only 30% of the daily free API quota was being used, the sync system was working great and processing even a larger number of customers than before. My Engineering Manager and the Sales team were super happy and so was I :grin:

The other project I’m currently working on as I write this blog is integrating Alexa Ranks for Salesforce Leads. The AWIS API was super complex to use and I refactored their JAVA code example to Python, where I felt the trickiest part would be generating an RFC 2104-compliant HMAC key for the request(which was pretty simple in retrospect). I also began coding up a UI testing framework in Selenium for PushCrew and set it up for the main flow and pages as well as worked on PushKnot to automate push notification testing.

We had holidays from the 24th of December to the 1st of January at work which wherein I attended the ACM-ICPC Regionals, explored Kolkata and had a great time with family after coming back to Pune. The last week at Wingify was spent in mostly deploying and monitoring the new system in production.

All the perks, the super talented engineering team, the great collegues, endless table tennis matches…all of them were pretty hard to leave behind but I guess that's just #life. All in all, I’ve had one of my best and most productive winter holidays yet and have Wingify to thank for it all :v: