We had our third ever Hackathon a couple of weeks ago, which is a once in a quarter chance for our engineers to flex their creative muscles, using whatever cool technologies or techniques they choose, no rules, full freedom!
As an engineering team, we’re fully cloud-based with Amazon Web Services (AWS), which means engineers have the choice of the 100+ services they provide to try out ideas.
AWS kindly funded the personal use of their paid-for services via voucher codes. Here are some of the amazing things people came up with:
Victor - Auto translation with speech recognition
I wanted to experiment with some AWS AI Services so I decided to build a real time voice translator. This gave me the opportunity to work with some cool AWS service like Lambda, API Gateway, Translate and Polly.
First I needed a way to convert speech to text so decided to go for Web Speech Recognition. It's still in an experimental status and not all browsers support it, but it works really well. For translating the text I used the AWS Translate service and then reversed process and converted the translated text into audio.
Himangini, Thomas, Jeppe, Michal, Sam - Lambda-hosted bot for slack shoutouts
We wanted to build a way to give shoutouts to Paddle employees for their awesome work, in line with the Paddle core values. We’d tried several solutions in the past but they weren’t there yet so for our Hackathon project we decided to build our own Slack app integrated with AWS Lambda and RDS.
The idea was to give shoutouts paddle employees using a Slack app which assigns employees randomly to one of the four houses, showing which house is leading in terms of points collected by the employees through earning all the value emojis. To achieve this goal, we created the Lambda function in Python that connects to the RDS instance which sends slack responses based on the slash commands Paddle employees typed in any of their channels.
Daniel - Kinesis stream to Elasticsearch, with Alexa integration
My goal was to create an Alexa skill that our sellers ask about various stats related to sales on their account. This would include things like total sales over a period (today, yesterday, last week etc) and top selling products. Before starting I knew that performing these queries on our MySQL database was going to be too slow. Making a user wait for that query to be run was not going to be a good experience, so I wanted to come up with a solution that would return the required data instantly.
I ended up settling on using the AWS Elasticsearch service as it can perform aggregations like the ones above very quickly. After importing all previous transactions into our database I needed a way to get any new transactions into Elasticsearch in as close to realtime as possible. To keep the data in Elasticsearch in sync with our main database I used a combination of SNS, Kinesis Data Streams, a Kinesis Firehose and some Lambda functions. We already had setup within the company some Kinesis Data Streams that had our database changes being sent to them (using this method) so I setup a Kinesis Firehose to pipe that data in to our Elasticsearch cluster.
Simon - Terraform, ApiGateway and Go in Lambda
AWS added native support for golang in Lambda earlier this year and I was keen to find out the barrier to entry to get a simple service up and running. In short, it couldn’t have been simpler and I had a go lambda up and running in minutes - making it work with popular frameworks was a bit more time consuming, but awslabs had my back.
Next up I wanted to automate the creation of API gateway and Lambda with Terraform. I had used cloudformation before but never with much enjoyment. Terraform is definitely a step in the right direction and I found great IDE support through Visual Studio Code which made getting up to speed much easier.