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? Check out the Blog Index.

Zsh Plugins

Nov 15th, 2019

Last week we looked into how we could install iTerm2 combined with Oh My Zsh to create the best possible terminal experience. Today we’ll have a look at the plugins that we can install to make our terminal even more powerful!

Oh My Zsh

Iterm2 With Oh My Zsh

Nov 8th, 2019

Few years ago I wrote a post about ConEmu, a better shell experience for Windows. I have been using it over the past four years while working on Windows. Recently I completely moved to Mac and on unix system we have better shell experience in general. Today we will see how we can setup iTerm2, with zsh and Oh My Zsh providing a way superior shell experience than ConEmu on Windows or even than the regular terminal.

Oh My Zsh

Feature Reducer With Ngrx

Nov 1st, 2019

Just like how Angular components, ngrx stores can also be separated into different modules. This has the benefits of reducing the complexity of a system by having dedicated modules with dedicated reducers, actions and effects. Today we will see how to define ngrx reducers, effects and actions for feature modules.


Serialization With Marshmallow

Oct 25th, 2019

Marshmallow is a library converting different datatypes to Python objects. The most common usage of Marshmallow is to deserialize JSON object to Python object or serialize Python object to JSON object to be used in web API. Marshmallow does this through the definition of a schema which can be used to apply rules to validate the data being deserialized or change the way data are being serialized. Today we will look into more details on how to use Marshmallow, how to apply validation on fields and how to configure


Get Started With Alembic

Oct 18th, 2019

In a previous post, I covered Flyway, a database migration tool which allows us to apply incremental migration to an existing database or build the new database from scratch. In the same line, Alembic is a migration tools which uses SQLAlchemy underneath, ideal when our application itself is in Python. Today we will look at how to setup Alembic and create migrations.


Splunk Commands

Oct 11th, 2019

Last week we saw the different ways to plot charts and tables in Splunk. We saw how eval and bin could be used to manipulate logs in order to plot useful charts. Continuing in the same line, today we will be looking at more useful commands used to join different event results, group events and identify events.


Splunk Charts And Tables

Oct 4th, 2019

Splunk is a log aggregator in the same way as elastic search with Kibana can be used. When I started using Splunk I immediately acknowledged its capabilities, and its usage was largely limited by my own knowledge of writing queries (which is still very low). But every now and then I would see myself in a situation where I would need to compose the same query which I did the week before but now have forgotten how to. So today we’ll explore some nice Splunk functionalities.


From Git Ui To Cli

Sep 27th, 2019
Create Branch

As a developer I use Git every day. I used to use GitExtension which is nice but at time it was really annoying, for example popups showing out of viewport, impossible to click, or random lags when fetching commits. I had been using GitExtension for at least 5 years while working on Windows, but today I am switching to a Mac where GitExtension isn’t supported. I started to look at alternatives and found some, like Fork, a nice software but similarly to GitExtension with random lags, very frustrating. This exercise highlighted to me a bigger issue; Had I been using Git command line all along, I wouldn’t have been wasting my time looking for alternative. So today I am going through some Git commands which are useful in day to day operation, and that helped me transition from a UI driven Git user to a CLI driven.


Bootstrap With Primeng Badge List Component

Sep 20th, 2019
Badge List Demo

A badge list is common component on a website allowing to display a list of items, usually one word items. Those badges can be clickable which can then be used for filtering or even navigation. When a screen space is available, those badges can be simply displayed inlined but when screen space is reduced, mobile screens are a good example, having a list of badges can potentially take up 30% of the screen.

Bootstrap PrimeNG Angular

Client Side Validation Angular

Sep 13th, 2019
Angular Form Validation

Two years ago we looked into Angular Reactive Forms Part 1 and Part 2, explored different ways of adding controls and binding the values of the controls to a reactive form using standard HTML controls and PrimeNG controls. But we left aside another important part of the creation of a form, the validation. There are two types of validation, a server side validation which hits the server to execute some hosted logic, and a client side, inline, validation which can be used to directly validate simple constraints directly on the frontend. In today’s post we will look at how we can implement a nice inline validation for our reactive forms in Angular.


Frontend E2e Testing With Cypress

Sep 6th, 2019
Cypress console

Cypress is a frontend testing tool which can be used to write unit test and end to end (e2e) tests. It comes packed with features that make it easy to write tests, execute them and trace back failures. Today we’ll look at how we can setup Cypress and write e2e tests for a SPA application.

JavaScript Cypress

Uml Diagrams With Plantuml

Aug 30th, 2019
Sequence diagram

In my work I draw diagrams almost every day. Whether it is to convey an idea to someone or to pindown an idea that I have in my head or simply to think about a solution for a problem.

Diagrams are useful as they are cheap, quick scribble on paper and we are done but everyone know that drawing is not an easy task and therefore even drawing diagrams is hard. You need a sense of aesthetics to use different shapes, place elements in a way that makes sense and use different ways of linking shapes so that the diagram doesn’t get convoluted, failing any of those steps will discourage your audience from even trying to understand what your diagram represents.

That’s where PlantUML comes in, or puml for short. PlantUML allows us to create diagrams from text script. In today’s post, we will learn how to build diagrams with PlantUML and look into different sort of diagrams that are often used.


Python Shell With Ipython

Aug 23rd, 2019
IPython Autocompletion

The Python shell is a powerful tool to discover modules, test functionalities, and test our own application. IPython is an implementation of a python shell which provides enhancements over the original one. IPython is one of those programs that always have a space on my terminal tabs when building features for applications. In fact, it has become so important that it is now part of my workflow when working with Python. Today I want to share some of the functions and modules I use the most in order to iterate quickly on programs.


Angular Feature Module And Lazy Loading

Aug 16th, 2019

Angular offers a way to separate an application into modules. There are many ways to group functionalities into modules and the decision is left to the programmer to find the best composition for the application. For example, a module can group a part of the application domain logic, or it can also serve as a grouping for reusable directives, or a grouping for providers. I have describe briefly about two years ago what a module is in Angular looking into the details of the NgModule decorator. Today I will dive into more details on how to separate an application into feature modules and what doing so provides us.


Building A Docker Image

Aug 9th, 2019

Last week we looked into the definition of a Dockerfile. We saw that a Dockerfile describes how an image will be built, the next obvious step is to dig into the building process of the image by looking at the logs and exploring the image layers.

Back to Newer Posts More Posts

Designed, built and maintained by Kimserey Lam.