Hi, I'm Raj šŸ‘‹

Welcome to my digital garden. šŸŒ±
I am a product engineer with expertise in frontend engineering. I work at InVideo, where I spend my time building the best web based video editor.
Here, I write about my |.

Latest Posts

Installing Elixir on Mac M1

While installing elixir on a mac m1 machine, I ran into a lot of issues. This post is a quick guide on the issues I faced and how to fix them.

Webapp feels slow? Run a perf trace!

When dealing with a large and complex web application, you might often run into situations where an operation is slower than it should. Let's see how we can run a performance trace to find out what's slowing things down.

Force nginx to refresh DNS in proxy pass

While implementing reverse proxy in nginx, the IP address of upstream is cached by nginx. This becomes a problem when the upstream server changes its IP address. This post explains how to force nginx to refresh DNS in proxy pass.

Basics of Video Processing

A broad overview of how video works, and what goes behind it. This post is covers what are codecs, containers, and different terminologies that you will often hear in video processing related conversations.

Tips for starting your first SWE job

I recently started my first job as a Software Engineer, and I wanted to jot down some amazing advice I received. Iā€™m sure it will be valuable for anyone who is starting out their first Software Engineering job.

Enabling Live Reload in Module Federated CRA

Recently I had work on getting hot reload to work in a module federated CRA. I faced this issue, and couldn't easily find good solutions, and had to dive a bit deep into webpack docs. This post provides a quick solution for this issue.

Integrating a Tailwind design system with CRAs, using Git Submodules

Recently, I had to integrate a tailwind based design system into a CRA app as a git submodule, and make it work with Storybook, Chromatic, GH Actions and Netlify. This post is a documentation of all the issues I faced.

Promise.all, but with a timeout for each promise

I had to develop a server in Node which would act as a proxy and hit multiple different servers on behalf of the client, aggregate their responses, and send it back to the client. This post discusses a few approaches to achieve that.

How JS code gets executed in the browser

We write JS code, and then send it to the client's browser, where it is executed. To write better code, it's good to have an understanding of how the code we write is going to be executed. This post explores how Chrome's JS engine (V8) runs JS code efficiently.

Understanding Web Performance Metrics

As users, we know how valuable performance of a website is. But as developers, how do we approach performance of our webapp? In this post, let's explore the metrics used to quantify web performance, and how we can optimize those metrics and have a positive impact on the user experience.

Pagination & Infinite Scroll in React

When you have to to present large number of data records in your webapp, you have two options - pagination or infinite scroll. In this post, let's see how to implement both these ways by building a sample app.

Resizing user uploaded images on the fly in S3

If user uploaded images play a part in your application, you will sooner or later face the problem of users uploading enormously sized images. To solve this, this post will walk you through a Lambda & S3 based solution which is fast yet very cost efficient.

Automate building Docker Containers for Fargate using CodeBuild

When you use ECS to deploy your applications, it becomes tedious to build & upload container image to ECR every time you want to make a change. In this post, let's build a CI/CD pipeline for containerized applications using AWS CodeBuild.

Git Merge vs Git Rebase

Some of the concepts in git are such that, however much you read about it, you won't fully grasp their mental models unless you actually are in a situation where you have to use them. This post is an attempt to explain rebase and merge workflows in git.

Getting Started with NextJS

This post explores what NextJS is, how it differs from the likes of Gatsby and CRA, and how you can perform basic tasks like Navigation, Routing, Data Fetching in NextJS. We'll also take a look at the flexibility that Next provides while choosing to prerender or server side render pages.

Know Thy (JS) Tools

Understanding the tooling is crucial to understand what exactly is happening to the code we write, which helps us write better, bug-free code. This post is a collection of notes I made to understand more about the tools used in the JavaScript ecosystem.

Using AWS Rekognition, Lambda & API Gateway to build ML Powered WebApps

AWS Rekognition is a powerful service which provides real time image & video analysis using deep learning. This post explains how to use the service by creating a simple web app using ReactJS and using Rekognition with AWS Lambda & API Gateway.

Deploy a Spring Boot Application using AWS Elastic Beanstalk

I wanted to learn more about AWS Services like Elastic Beanstalk, RDS, and EC2. So, I tried them out and deployed a simple REST API developed using Spring Boot that uses MySQL as a database. This post covers what these AWS services can do for you, and how you can start using them right away.

The Beginner's Guide to Spring Boot

As a developer, it is important to sometimes step out of the comfort zone and try out new tools and frameworks, as frameworks are mere means to an end that solve some problems for us. I tried out a Spring Boot, a Web Framework in Java. This post will help you understand & get started with Spring Boot as a beginner.

Correctly using state in setInterval with Hooks

Recently, I ran into a problem while using setInterval in React. The function you pass to setInterval is defined once and it closes over the old value of your component state. This becomes a problem when you want to use the state to determine whether to clear the setInterval. Read on to find out the solution that worked for me.

A Closer Look at React's Reconciliation Algorithm

Ever wondered what makes React so fast? When it was introduced, the killer feature of React was it's concept of "Virtual DOM", however it brought on it's own set of challenges, including how to efficiently update the DOM to be same as React's virtual DOM. Read on to find out how React solves this problem!