The Gousto Internship Experience

About a year ago, I met Shaun and Gareth at the careers’ fair of Imperial College’s Department of Computing Society (DoCSoc), which I helped to organise. They had bought with them a big food bike, along with boxes of fresh veg.

Hmmmm, a pretty… quirky company, certainly nothing at all like the other 12 tech companies there.

So I emailed Gareth my CV, and 9 months later, I started my 12-week-long summer internship as a software engineer at Gousto, which I’m finishing today.

Amazon Alexa

The very first thing I worked on, which turned out to be the main project during my internship, was to improve Gousto’s Amazon Echo app.

Gousto has an initiative called Tech 10% — every other Friday is dedicated towards creating and trying out new things, taking a day away from working on tickets in the sprint. Before I started, the tech team bought an Amazon Echo and started creating an app (or as Amazon call it, a skill) for the device during a few Tech 10% days.

When I started, this skill was made up of the bare bones of a functioning app — it was able to access customers’ orders and read out the steps of each recipe in the user’s order. Basically, the foundations were all there.

My first task was to get the skill to store the progress of each user through a recipe. What the app did was, after each recipe step instruction, stay open and wait for the user to request the next step until the Echo timed-out waiting for a response (about 10 seconds). I created a DynamoDB table using Gousto’s AWS platform, in which users’ current recipes and recipe steps are stored.

Through the next few weeks, I added more features and changed things to make it into a kitchen assistant, with the customer using the skill at the centre of its design. I added Home Cards, visual cards which are displayed on the user’s smartphone, tablet, smart TV or desktop Amazon Alexa app. Cards for each recipe step including images and instruction text were added, along with cards showing details for the customer’s most recent delivered box, and their next delivery. I also added the ability to read out ingredients for each recipe and have these sent on Home Cards to the user’s Alexa app.

Watchdog

Every quarter, the tech team at Gousto have a White Hat Security Day — basically a day when we try to break into our own systems in an effort to improve the security of our systems and all parts of the business.

I was on a team looking at ways malicious activity from inside could compromise the business. One thing that was identified was the unauthorised uploading of credit to customer accounts through the company’s customer administration tools. To combat this, Nik, Gousto’s other tech intern, and I created a monitoring and alerting system called Watchdog.

It determines the severity of each identified alert, and then, depending on the seriousness, sends notifications to relevant people through Slack, Email and SMS text messages.

The rule was designed in a way that is easy to add new rules. After implementing this, we added another rule to detect attempted brute force attacks on accounts.

User Activity Log

The third project I worked on was creating a new improved user activity log in Gousto’s customer administration. Before I started, it simply consisted of a timeline of states — it was not easy to use, as in order to decipher a single action, two different, and sometimes, non-adjacent, states had to be compared. This was slow, especially given customer care agents had to use this when dealing with customer problems over the phone.

I re-designed the front end of this feature, making it into a more intuitive and user-friendly interface. I also wrote an AWS Lambda function in NodeJS to do the comparison between different states, and then give back a useful readable message, as well data representing the states before and after, required by the front-end to create visual comparisons. I used Facebook’s Flow type checker for this.

This project taught me a lot about using NodeJS — being my first ever substantial Javascript project. My Javascript knowledge before my internship was very basic, but now, I think I understand more why lots of people hate Javascript, but also, why it’s also such a powerful language.

Nik and I were Gousto’s very first tech interns — taking us on was a risk for the company, but I’m glad they took that risk and that they took it on us. The experience I’ve had for the past three months has been very enjoyable, but also incredibly valuable. I’ve gained a lot of technical knowledge and learned lots of practical skills which I have no doubt will be very useful to me at my remaining two years at uni, as well as my career in software engineering well into the future.

I hope that I have, in turn, given something of worth back to Gousto and that my work has positively impacted the business.

Maurice Yap
Software Engineer Intern 2017


Originally published at techbrunch.gousto.co.uk on September 20, 2017.