Hello,

I am Software Engineer at Pops since 7th of November 2016. Since then many things happened, and as a TEAM we build great things.

Who we are?

Firstly Pops is an iOS application that aims to capture small sequence of videos and let their users print animated pictures. We build a way to turn any small video into a real animated picture on paper. This can be done thanks to lanticular technology.
Our main website: https://pops.co
Our app website: https://app.pops.co
Our app on App Store: https://itunes.apple.com/fr/app/pops-live-prints/id1150008259?mt=8

We are currently a small team of 10 members more or less, composed by a CEO, COO, Head Of Product, iOS Software Engineers (2), Software Engineers Backend (2), UI/UX Designers and a Comunity manager.
You can see our team there: https://pops.co/about

As a Software Engineer Backend

When I started my full time as Software Engineer Backend at Pops I have been allocated to content (images, video, assets) processing and priting issues. The aim was to design, build and deploy an autonomous way to process any kind of assets at scale and turn them into digital files ready to print. The challenge was huge and technically interesting. I took it and in a matter of few months I managed to build this system. In other words, based on various specifications we are now able to generate ready to print files and process them on the fly. Those assets are available through a dashboard shared between members of our team and our printer. Then once files are generated on our server side they are available for the printer where it can download our client generated files, print them and then we are currently in charge to sent them to the client.

Having such challenges led me to learn many things. Basically I have few experiences writing some API in Node.js. At Pops our stack is Node.js and everything is hosted in Amazon Web Service. However we decided to work with TypeScript a Javascript transpiler which bring strong types checking, ES6/ES7 new javascript features and extra suggar to Javascript. So first I handled TypeScript pretty well and I also started to dive into AWS services.

We are using a bunch of AWS services:

  • AWS S3 for all of our files storage
  • AWS Lambda Function As A Service in order to make computation on event based stuff. We are using this for handling our assets pre-processing (turn video into images, log assets into databases etc..)
  • AWS DynamoDB is our no SQL database, this is used both by our processing/printing departement and also the mobile API
  • AWS API Gateway our API is built on top of this coupled with AWS Lambda
  • AWS SNS We are using this when we want to send various notification but espacialy when we want to trigger multiple stuff based on a specific event this is a basic notification system
  • AWS SQS A queue service for handling tasks one after the other on non FIFO or FIFO style
  • AWS EC2 we are also using EC2 instances for heavy processing such as generating our big files for printing

This is more or less the AWS services we are using. I have learn using them alongside building and designing our system. I think AWS is offering a great playground to build complex system easily that will scale depending on the load of your application.

What next?

Once our main system has been built we wanted to handle Boomerang from Instagram, Livephoto from apple. This is what we have done so far, and recently we even push this to any kind of video while and edit feature that let's the user select the fragment of it's video to get the exact moment on his liveprint.

Also in parallel, our team decided to create an instant animated picture photobooth. However there are several issues on this the software part and the hardware one. As a Software Engineer Backend I made another version specificaly for our next product. There are various enhancements and modification depending on the way we are capturing the data, this was developped based again on specifications and also with the front team which designed and build another application on iPad.

Out of this, we would like to improve the quality of our products. Bring new printing format for users and also new things, but just keep touched and you will see.

Overview after 1 year

Pros

  1. We are evolving in a fast paced environment
  2. We are building cool products
  3. We are cool, young and dynamics
  4. As an Engineer your will have challenges on a daily basis and you will be responsible of your developments
  5. If you are not familiar with some stuff we are using, you will learn a lot

Cons

  1. Priorities are not always well defined by hierarchy
  2. We might focus on delivering a great product rather than always adding/removing/modifiyng features (quality over quantity)
  3. You may feel that there is less challenge once the BIG work is done
  4. Hierachy must work hands in hands with engineers in order to build strategy based on their advices

Conclusion

I am pretty happy about the last year I spent at Pops. There is no perfect company, but Pops is a good one where there are challenges, cool atmosphere and good people that aims to bring nice product for consumers. I hope I'll have the opportunity to bring the best of me to the company.