Hello everyone, this blog is going to be about me documenting how my first internship went, what all I learnt along the way and how my experience was overall working for the first time in a company
I was interning with a UK based company know as Qualyval, you can find out more about them, the work they do and the services they provide here: qualyval.com
Last month I wrote a blog about how to setup a GitLab workflow for your own needs. Well, that was one the first thing I did when I joined the organization. Setting up a GitLab workflow for the entire organization.. being familiar with GitHub helped a lot. This is why having knowledge of GitHub helps in Git as well as GitLab because the foundation of all three are the same, keywords like PRs, Merge Requests, etc. should be something you should be aware of as a developer. GitLab has many features like CI/CD, Issue Management, the ability to easily track down any bugs in the software and also finding out who's merge caused the bug, version control, code review, code quality, etc. All these features helps remove many hassles which come with a simple GitHub repository or organization. Tools like CI/CD can help prevent bugs in the application and stop any kind of bugs from being merged to the master branch.
The next task was to improve the websites performance, the website had a performance of 30%. I was assigned the task to increase the speed till upto 40%. This was a very complicated task for me as I didn't have much experience working with huge websites like the company's website itself. The first step I did to fix this was try reducing the size of Javascript and CSS files, in doing so I learnt a lot about DOM and how it sometimes acts in reverse and can screw up the websites speed, also made me realize why the world is switching to React with its virtual DOM. Cleaning up the CSS and HTML files was no biggie, I ended up combining all 3 files into one which helped alot with the entire process. Zipping up the files using GZip helped alot as well. Also optimizing the images using Optimus. At the end the website was working at a 40% performance rate.
My next task was to work on OAuth2 authorization with OKTA. I reffered to the OKTA docs for creating my own website with Auth on it. This taught me how to deal with docs as well as docs which are outdates because some of the docs on their websites were almost 2-3 years old, leading to specific libraries not loading, npm not working, APIs not working, etc. At the end I was able to setup a page with Auth as a feature including the option to sign in using Google, Facebook and other platforms as well integrating those services to the websites was an experience in itself. This also taught me how important documentation is while working on large projects.
As the company works with Automations heavily, my next task was to learn Puppeteer. It is a Javascript based library which allows us to automate tasks such as auto filling login forms, scraping text, images, etc. from a webpage and many other things as well. It is almost comparable to Selenium which is an automation library for Python. Learning Puppeteer went as smoothly as expected, being a Javascript library the syntax was easy to pick up on I ended up getting familiar with it within 2-3 days of using the library. I learnt some cool stuff along the way like bypassing captcha, screenshotting entire websites, downloading a PDF of any website to my system and much more! Dabbling in Puppeteer also made me use serverless functions. Serverless functions are something which run on the backend of a website which runs anonymously without using any storage on the website itself which was very cool as well.
I used Netlify Functions to deploy my own Serverless Function on the website, as I'm familiar with netlify's CLI the serverless function was made with Puppeteer as well. Using Puppeteer I also made a PDF editor for a client with a big PDF of all their product prices, each product has a product key which I ended up using to change the prices of individual products on the PDF itself. This made me use sejda's API as well. Learnt how to handle Exception Handling as well. Learning how to use Puppeteer was probably one of the most fun projects I have ever worked on!!
All in all, the internship has taught me how to operate in teams and help others and most importantly being kind to everyone on the team. Hope you enjoyed reading this one. You can connect with me on my Twitter
Until next time,
Suyash Nayan.