Hiring Software Engineers

https://res.cloudinary.com/pagnihotry/image/upload/v1635223873/pagnihotry/hiring.jpg

Apart from the interview questions, there are a lot of factors to consider while interviewing software engineers. In this write-up, I try to summarize the concepts that I have learned in the past 12 years of hiring software engineers across domains, teams, and levels.

The goal of this write-up is to put forward the thought process that can be used to structure the interview and read the indicators to decide if a candidate is a good fit for your organization and role.

[Read More]

Programming At Web Scale With Data Caching

https://res.cloudinary.com/pagnihotry/image/upload/v1604986465/pagnihotry/image8.png

Caching is an important aspect of building an application that performs well at web scale. Proper caching can reduce the number of API calls, save on CPU time, make requests faster, the application more responsive, and reduce the infrastructure cost.

We used one of the techniques mentioned in this article to reduce the average response times from upto 200 ms to 3 ms, reduction by a factor of 67.

[Read More]

Validating "Sign in with Apple" Authorization Code

https://res.cloudinary.com/pagnihotry/image/upload/v1576343105/pagnihotry/sign-in-with-apple.jpg

Sign in with Apple launched earlier this year. Developers can use it to have users log in using their Apple accounts. This post outlines validating the authorizationCode received after the user signs in with Apple, generating JWT ES256 signature, verifying JWT signature using RS256 and using the refresh token to get an access token from Apple with implementation details and code samples in Golang.

[Read More]

Creating Custom AWS Lambda Runtime using Lambda Layer

https://res.cloudinary.com/pagnihotry/image/upload/v1543856553/pagnihotry/php-aws-lambda.jpg

Over the weekend, I spent some time experimenting with the new Runtime API and Lambda Layer that AWS announced last week. The goal was to create a custom runtime that I could use to start writing Lambda functions in PHP. Following is a brief summary of what I learned in the process and steps to create your own custom runtime.

[Read More]

Understanding the context package in golang

https://res.cloudinary.com/pagnihotry/image/upload/v1532622064/pagnihotry/Go-Logo_Blue-trimmed.jpg

The context package in go can come in handy while interacting with APIs and slow processes, especially in production-grade systems that serve web requests. Where, you might want to notify all the goroutines to stop work and return. Here is a basic tutorial on how you can use it in your projects with some best practices and gotchas.

[Read More]

Terraform your Infrastructure!

https://res.cloudinary.com/pagnihotry/image/upload/v1532622187/pagnihotry/tf-multicloud.jpg

What is Terraform and why do you need it?

If you have any resources in AWS/Google Cloud/Azure, etc. its a high likelihood that terraform can improve your workflow and make management of your cloud resources a breeze! I have used it with AWS, so, most of this post will discuss terraform in context of AWS. But, it works fine with Google Cloud, Azure, Alibaba cloud, etc.

[Read More]

Continuous deployment of a Static Website

I wanted to set up a blog that scales, is free and takes minimal effort from me to maintain. These days, there are multiple offerings that can be combined to achieve this. But, one of my requirements was also to be able to deploy my new posts and changes easily. I wanted a set up where, once I make any changes, they go live immediately with little to no intervention on my part. [Read More]