Over the past few weeks, I’ve been working on a side project. One of the requirements is to enable the user to sign in to the application using Google social login. The web app is built using Nuxt for the frontend and Django REST Framework for the backend.
Initially, building the social sign in flow was not hard at first, but I struggled with refreshing the JWT token in the web app. Most of the resources on the internet do not discuss how to refresh the JWT token. …
This story is originally published here.
Over the past few months, I’ve been building many side projects in my free time for learning apart from working full-time as a software engineer for the past 3 years. When building the side projects, I intentionally use many different technology stacks that I’m not familiar with in order to learn and make more informed choices in the future.
Over that period, I’ve developed my preferences towards the tech stacks of choice and approaches on how I’m gonna build my next project.
This is how I plan my future, and you should do it too!
This article is originally published here.
Twenty-five years old is quite a young age for software engineers. Mostly, 25 years old engineers are Computer Science graduate students who just graduated from university or have 1 to 2 years of experience. So am I. We are still in the early stage of our career.
I have plenty of time to pursue what I like. I have plenty of time to make mistakes and learn from them. More importantly, I have plenty of time to identify what I want and what I don’t in life. Apart from that, a young engineer like me needs to have a role model. Having a role model will give you a sense of direction where you are heading towards in the next five years or next decade. If you examine their history (e.g., from the LinkedIn profile) long enough, you can imitate them and be like them in the future. …
I am amazed by how easy to build a web app using Django
This post is originally posted here.
For the past three months, I’ve been writing a web application using Django for our company’s new project. It hasn’t launched yet, so I couldn’t disclose too much information about it. However, I’ve learned a ton while working on this project while working on it along with the team.
The picture above shows you what I’ve built after learning Vue.js and Nuxt.js in one week.
I am building an Instagram clone project called “Yet Another Free (OSS) Instagram Clone” (YAFIG). The front-end site is built entirely in Vue.js and Nuxt.js, in a week.
I am a full-time software engineer working on CDN products. I spent my entire professional career (~three years) working with back-end services, primarily in Python, Java, and Lua.
This article was originally published on my personal blog here.
Message queues (MQ) are a fundamental concept in programming and software development. In a distributed system, a message queue is the backbone of the system. A message queue allows inter-process communication between services/applications in your system (eg. Service A can talk to Service B).
In MQ terminology, the service that emits the message is called the producer worker, while the service that listens and reacts to messages is called the consumer worker. This is how communication happens between the services.
You can scale up or down the number of producer and consumer workers running depending on their loads. For example, you may have two producers running in two VMs and ten consumers running CPU-intensive tasks across 10 VMs. You can also increase the number of workers during the day and shut down the workers at night (provided that your application traffic is a diurnal pattern). …
This blog is originally published on my personal blog.
I’ve wanted to learn Golang for a long time. According to a Stack Overflow survey, Golang was the third-most wanted programming language in the year 2019. Coming from a Python background, learning a new programming language like Golang gives me a unique perspective on how to write code.
I was inspired by a helpful tutorial by Keiran Scot. The following tutorial is heavily influenced by Keiran’s tutorial but is made to use MySQL instead of Mongo as part of my exercise to learn Golang.
Prsonally, I believe Golang is the new Java. Many open-source projects (e.g., Jaeger, Kubernetes, Docker, InfluxDB, Serf, etc.) are now written in Golang. In contrast, the older projects (e.g., Apache Kafka, Apache Hadoop, Apache Spark, etc.) are written in Java. I wish I could participate and contribute to OSS Golang projects in the future. …
For the past month, I’ve been researching for bare metal k8s distribution to use at our company. I’ve been using Rancher’s k3s, lightweight Kubernetes distribution, and I find it very light and convenient to setup. Together with a bunch of built-in tools bundled with k3s, I like its super cool storage provisioner the most. Thank you, Rancher, you guys rocks.
Frankly speaking, I find it a bit hard for commoners like me to get more information about this kind of stuff unless I work on the Kubernetes project itself or storage-related system company. Otherwise, I have to make extra effort to examine Open-Source projects like this by myself. I am sharing this to help people like me to get started to know more about Kubernetes storage and external-provisioner specifically. …
Kubernetes Dashboard lets you visualize your cluster interactively. Other than increasing your cluster observability, it allows you to interact with your Kubernetes cluster without memorizing the
kubectl commands. If you are new to Kubernetes’ world, this is super convenient for you to get started by seeing what’s happening in your cluster.
There are many options available for Kubernetes Dashboard out there. VMWare Octant is one of the popular Kubernetes dashboards available for free as an OSS. I know that many Sysadmins and DevOps engineers would prefer to use the old-school kubectl commands instead of using the dashboard because they are cool. …
This article originally published here
When building a bare metal Kubernetes cluster, you might face a common problem as I do. You don’t know how to expose your Kubernetes service to the Internet other than using NodePort. If you are using the NodePort service type, it will assign a high port number, and you have to allow your firewall rule to connect to those ports. That is not good for your infrastructure, especially when you’re exposing the server to the outside Internet. Well, there is another neat way to expose your Kubernetes service to the world, and you can use its original port number. For example, you can expose MySQL service that resides in your Kubernetes cluster to the outside world on port 3306 rather than port 32767. …