Hi there! Welcome to my website, here you'll find all my blog posts, videos and personal projects.

By Kimserey Lam with

Blog Posts

Looking for a specific post? Checkout the Blog Index.

Python Web Api With Flask

Jan 18th, 2019
Swagger UI

Flask is a microframework for python providing building blocks to compose websites and web API quickly. It has a vast ecosystem driven by open source libraries maintained and used by many developers. Today we will see how we can setup a simple todo web API using Flask and how we can setup OpenAPI 3.0 (OAS3 - previously known as Swagger).

Python Flask

Prometheus With Aspnetcore

Jan 11th, 2019

Prometheus is an open source monitering platform. It provides multiple functionalities to store, manipulate and monitor metrics from our applications. Today we will see how we can push metrics from an ASP NET Core application, and how to make sense of it.

DotNetCore CSharp prometheus

Custom Blue Green Deployment With Nginx And Gitlab Ci

Jan 4th, 2019
Blue-Green Deployment

Blue-green deployment is a method used to reduce risk and downtime during deployment. Today we will see how we can implement a fully custom Blue-green deployment for a single server setup using Nginx and using Gitlab CI for continuous deployment.

GitLab NGINX DotNetCore Ubuntu

Create A Blog With Jekyll

Dec 28th, 2018
Blog Example

Jekyll is a blog aware static site generator. Blog aware means that it ships with functionalities to build blogs and blog posts. The two major benefits from Jekyll are the markdown translation to HTML and its blog creation orientation. I recently migrated out of blogger and moved to building my own website using Jekyll and today I will share the steps I took.

Vegeta Load Test

Dec 21st, 2018
Response Time Vegeta Load Test

Load testing helps catch problems which only appear in high load. A common use case of load testing is to load our API with an amount of request of two or three times higher than the usual load. This will provide confidence in our API ability to handle larger traffic. Today we will look into Vegeta, an open source HTTP load testing tool quick and easy to setup. In this post, I’ll demonstrate how quickly and easily we can load test our API endpoints.

Create React App And Mobx

Dec 14th, 2018

I have been using state management frameworks for the past few years, mainly with Angular and NGRX. Today we will see how we can get started with Create-React-App using Mobx as a state management system.

React Mobx

Https With Letsencrypt And Certbot

Dec 7th, 2018
SSL Certificate LetsEncrypt

Securing communication between client and server is a mandatory step when building web application. Thanks to Let’s Encrypt, it is now free to setup SSL certificate and with Certbot, the ACME protocol implementation available on Ubuntu, it is a five minutes job to get it to work with Nginx.

Azure NGINX Let's Encrypt

Rxjs From Chain 5 To Pipe 6

Nov 30th, 2018

Last week I updated all my packages and realised that everything was broken! The reason why was that rxjs decided to move out of extensions on observable in favor of pipable functions in version 6.x. A major breaking change where majority if not all codebase built using rxjs needs to be changed. Today we will explore the reasoning behind this change.


Entity Framework Core Gotchas

Nov 23rd, 2018

Last year I talked about Entity Framework Core, an easy and feature rich ORM which makes working with database in a .NET environment typesafe. But even though it makes things easy, there are ambiguous cases which can take us off guard. Today we will see four of this cases and how to deal with them.

DotNetCore CSharp

Primeng Loading Bar

Nov 16th, 2018
PrimeNG Progress Bar

In Angular, it is common practice to execute commands prior routing a page using guards and resolvers. Guards prevent the routing from occuring until the condition turns to true and resolvers prevent the routing from occuring until the data is returned. Those actions can take time to complete and during the time being, the component will not load leaving the user with an impression of unresponsiveness. Today we will see how we can implement a navigation loading bar for Angular using PrimeNG progress bar component.

Angular PrimeNG

Monitor Nginx Access Log In Cloudwatch

Nov 9th, 2018
CloudWatch Dashboard

Last week we saw how we could Setup CloudWatch to push logs from our application to CloudWatch. Apart from the application logs, another type of logs that is worth looking into are the access logs from Nginx. Nginx being the entrypoint of the application, every traffic in and out goes through it and today we will see how we can leverage its access logs to monitor the response time of our application from CloudWatch.


Output Serilog To Cloudwatch

Nov 2nd, 2018
Serilog Format Logs

Few weeks ago we saw How to configure Serilog to work with different environment. At the end of the post, we saw briefly how to get the structured logs synced to Cloudwatch. Today we will explore the configuration in more details.


Nginx Basic Authentication

Oct 26th, 2018

Basic authentication provides an easy way to password protect an endpoint on our server. Today we will see how we can create a password file and use it to enable basic authentication on Nginx.


Gitlab Pipeline Artifacts And Environments

Oct 19th, 2018
Manual Deployment

Almost a year ago I wrote about how we could setup CI/CD with gitlab pipeline. I showed a very simple 3 stages pipeline build/test/deploy. Since then Gitlab has improved considerably their CI tool with features simplifying releases management. Today we will revisit pipelines and introduce few concepts which will help in managing releases.


Local Jenkins With Docker

Oct 12th, 2018
Jenkins Pipeline

CI/CD pipelines allow us to automatically build, test and deploy code changes. With Jenkins pipeline, the pipeline itself is generated from a file called the Jenkinsfile which, usually, is source controlled together with the source code repository. When we need to push new changes, what we would usually do, is test locally and then commit to the repository. From there, the Jenkins pipeline will trigger and build, test on the integration server and deploy to a testable environment (DEV/QA). But what do we do when the changes that we are making are on the Jenkinsfile itself? How do we test locally the validity of the Jenkinsfile or more simply, how do we try on a sandbox a Jenkins pipeline to learn how to write a Jenkinsfile? Today we will see how we can setup a sandbox with a full CI/CD deployment which can be quickly brought up and teared down for testing.

More Posts

Designed, built and maintained by Kimserey Lam.