Posts by Tag

Java

Getting started with Spring and GraphQl

7 minute read

The most common way of creating APIs is using REST (Representational State Transfer), of which we make use of the http verbs (POST, GET, PUT, DELETE) to stat...

Getting started Spring Boot Application

12 minute read

Frameworks have made developing backend applications much easier compared to doing everything manually. For example, we no longer need to deal with the http ...

Simulating Rubik Cube Actions with Java

12 minute read

Let’s work on something fun today, simulating a rubik’s cube. This is the precursor to my next topic to provide the solution to solve rubik’s cube. Modell...

Java Arrays Lists & Streams Reference

less than 1 minute read

// Initialize Arrays Integer[] integerArray = {1, 2, 3, 4, 5}; System.out.println(Arrays.toString(integerArray)); // Initialize List List<Integer> int...

No tests found when running Cucumber JUnit

less than 1 minute read

Sometimes it can be pretty frustrating when the error message doesn’t show the root cause of the problem, usually that’s because it is not straightforward wh...

Basic guide to Semantic Release

7 minute read

When it comes to releasing software projects to production, versioning can be a topic that is easily overlooked as something that is too trivial and done man...

Mutation testing with Pitest

1 minute read

Beyond just ensuring every line of code is executed with Code Coverage test, there is another way to ensure the test cases written are adequate, and that is ...

Code coverage for Java - Jacoco

2 minute read

Testing is a very important process in software engineering to ensure the quality of the code we write, and we can ensure testing is adequate by doing code c...

Using Lombok in Intelli J

1 minute read

Lombok is a pretty neat tool when coding in Java, allowing me to save time writing repetitive codes. But when you are installing it in a new project or in a ...

Adding a catalog of Maven Archetypes in Intelli J

less than 1 minute read

Archetypes make it easy to scaffold a project, but remembering all the archetypes available and using the command line to activate it can be challenging to r...

Back to Top ↑

Angular

Testing MatOptionHarness in MatSelectHarness

less than 1 minute read

Reminder to self: When trying to get the options in the MatSelectHarness in Angular Material, you need to simulate a click on the MatSelectHarness - await se...

How to pass data from angular to css

1 minute read

I am creating an angular template whereby I can create forms from a data file automatically, such as a json or yaml. For displaying on the monitor screen, ...

How to use router-store in NgRx

2 minute read

What is the purpose of the router-store in NgRx? As explained in my previous article on NgRx, the purpose of NgRx is to separate the data management part ...

Defining your own theme in Angular Material

6 minute read

Having your own theme in your web application is essential to make it look professional. Imagine using the default color themes provided from the framework y...

How to test NgRx

2 minute read

Ngrx is a framework for angular that helps to separate the backend logic from the frontend, making the code easier cleaner. To know more about how it works...

NgRx Explained

8 minute read

Often times, when our angular applications grows, our code become quite messy to follow. We have multiple components, referencing a myriad number of servic...

How to test HttpClient in Angular

1 minute read

This is a simple method to call http using the HttpClientModule. getBooks(): Observable<Book[]>{ return this.http.get<Book[]>(BooksService.b...

How to use environment variable in Angular

1 minute read

Angular automatically creates 2 files - environment.ts and environment.prod.ts, in the environment folder when the project is first created. Both of them has...

How to do navigation in Angular

1 minute read

When you create a new angular app using ng new <application name>, the first question you get asked is ? Would you like to add Angular routing? (y/N). ...

Getting started with Angular

9 minute read

What is Angular? In my opinion, Angular is the platform and framework for building your own customized html tags. While html has a fixed set of tags (e.g. &...

Upgrade Angular project from v11 to v13

less than 1 minute read

I’m slow…. It’s been a while since I last touched my Angular repository, that was created in early 2020, running on Angular 11. When I just went back to it y...

How to publish Angular component to NPM

1 minute read

There are some requirements that a module needs to fullfil before it can be published to npm. For example, you’ll need a main field in your package.json http...

A little primer to start off with Angular

5 minute read

Angular is a javascript framework for creating websites. Instead of using regular html tags (like div, span, form, input), Angular lets you define new html t...

Code coverage in Angular

1 minute read

Unit testing has been the quintessential way to ensure whatever code we add to our program doesn’t break anything, but how do we tell if the unit tests are a...

Back to Top ↑

Spring

Set spring profile in IntelliJ

less than 1 minute read

To set the spring profile in IntelliJ, just edit the configuration, usually spring-boot:run if you are using maven, or bootRun if you are using gradle, and a...

OpenID Connect login with Spring Boot

4 minute read

OpenID Connect (OIDC) is an identity authentication protocol, using the mechanism of OAuth2, to allow applications to delegate their login function to identi...

Getting started Spring Boot Application

12 minute read

Frameworks have made developing backend applications much easier compared to doing everything manually. For example, we no longer need to deal with the http ...

Upgrade SpringDoc dependencies for Spring 3.0

less than 1 minute read

In my previous article on how to add Swagger on Spring with Kotlin, the examples were built on Spring 2. With the introduction of Spring 3, there are some up...

How to get external configuration in Spring

1 minute read

Sometimes we have some configuration data that we need in our code, that can be changed periodically, like mail server information, proxy server, etc. We can...

Adding Swagger to Kotlin Spring

1 minute read

Spring makes it extremely easy to create REST api, but as a consumer of APIs, we need documentations to know what is available and how to use it. That’s wher...

Basic guide to Semantic Release

7 minute read

When it comes to releasing software projects to production, versioning can be a topic that is easily overlooked as something that is too trivial and done man...

Cucumber testing on Spring Boot

2 minute read

Cucumber is a great way for users to automate acceptance testing, as it allows using somewhat natural language to define the test cases. With a little learni...

Back to Top ↑

Spring Boot

How to create custom validation annotation

2 minute read

When we have an application that collects inputs from users, we usually need to have some validation checks to ensure user inputs are within what is expected...

Getting started Spring Boot Application

12 minute read

Frameworks have made developing backend applications much easier compared to doing everything manually. For example, we no longer need to deal with the http ...

Containerizing with Docker explained

4 minute read

After you have created your application, it is always nice to have it containerized so that it can be readily used whenever you need it, without having to cl...

Cucumber testing on Spring Boot

2 minute read

Cucumber is a great way for users to automate acceptance testing, as it allows using somewhat natural language to define the test cases. With a little learni...

Back to Top ↑

Git

Resolve git SSL certificate problem on windows

less than 1 minute read

While trying to push my project to Azure DevOps on my corporate windows machine, I got this error message when I am trying to push my code - SSL certificate ...

How to squash commits

2 minute read

Why do we need to squash commits Sometimes when we are working on a feature, we might forget to run all the tests before we commit, and we could get test fa...

Git detect dubious ownership in repository

2 minute read

When working in the corporate environment, we usually have a designated user space for each authenticated user on our computer. For example, in Windows, if...

Fix for filename too long in Git for Windows

less than 1 minute read

If you are running git on windows, with a deeply nested folder structure in your code, you might get the error message - “Filename too long”. That is because...

How to rename a remote branch in Git

less than 1 minute read

While working in a team, there are usually some naming conventions for the branches, like prefixing the branch with “feat/” for feature branch, or “fix/” for...

Stashing local configurations

1 minute read

In the project I’m working on, there are some local configurations (typically database connection strings) that I do not push to the git remote. This causes ...

Back to Top ↑

Kotlin

Containerizing with Docker explained

4 minute read

After you have created your application, it is always nice to have it containerized so that it can be readily used whenever you need it, without having to cl...

How to get external configuration in Spring

1 minute read

Sometimes we have some configuration data that we need in our code, that can be changed periodically, like mail server information, proxy server, etc. We can...

Adding Swagger to Kotlin Spring

1 minute read

Spring makes it extremely easy to create REST api, but as a consumer of APIs, we need documentations to know what is available and how to use it. That’s wher...

How to create generic JPA repository

1 minute read

Generics makes it possible to reuse code, which is great. But when it needs to apply on a JPA repository, it can get messy. As any small mistake is going to ...

No tests found when running Cucumber JUnit

less than 1 minute read

Sometimes it can be pretty frustrating when the error message doesn’t show the root cause of the problem, usually that’s because it is not straightforward wh...

Back to Top ↑

Spring Security

OpenID Connect login with Spring Boot

4 minute read

OpenID Connect (OIDC) is an identity authentication protocol, using the mechanism of OAuth2, to allow applications to delegate their login function to identi...

Back to Top ↑

Maven

Why I choose gradle over maven

1 minute read

Ever since coming across gradle as the build tool for java while working in Zuhlke, I have never looked back to using Maven. The immediate difference is obvi...

Adding a catalog of Maven Archetypes in Intelli J

less than 1 minute read

Archetypes make it easy to scaffold a project, but remembering all the archetypes available and using the command line to activate it can be challenging to r...

Back to Top ↑

Material-UI

Defining your own theme in Angular Material

6 minute read

Having your own theme in your web application is essential to make it look professional. Imagine using the default color themes provided from the framework y...

Back to Top ↑

Cypress

Upgrade Angular project from v11 to v13

less than 1 minute read

I’m slow…. It’s been a while since I last touched my Angular repository, that was created in early 2020, running on Angular 11. When I just went back to it y...

Back to Top ↑

Gradle

Why I choose gradle over maven

1 minute read

Ever since coming across gradle as the build tool for java while working in Zuhlke, I have never looked back to using Maven. The immediate difference is obvi...

Getting started Spring Boot Application

12 minute read

Frameworks have made developing backend applications much easier compared to doing everything manually. For example, we no longer need to deal with the http ...

Mutation testing with Pitest

1 minute read

Beyond just ensuring every line of code is executed with Code Coverage test, there is another way to ensure the test cases written are adequate, and that is ...

Using Lombok in Intelli J

1 minute read

Lombok is a pretty neat tool when coding in Java, allowing me to save time writing repetitive codes. But when you are installing it in a new project or in a ...

Back to Top ↑

Spring Testing

How to test Spring Data repository

2 minute read

Usually we do not need to write tests for the functionalities provided by the framework, but we can do so when certain functionalities we use from the framew...

Back to Top ↑

Code Coverage

How to exempt lombok generated code from Jacoco

1 minute read

Lombok makes life easier for java developers by generating the mundane code (e.g. getters and setters) automatically, but if you are running code coverage, y...

Code coverage for Java - Jacoco

2 minute read

Testing is a very important process in software engineering to ensure the quality of the code we write, and we can ensure testing is adequate by doing code c...

Code coverage in Angular

1 minute read

Unit testing has been the quintessential way to ensure whatever code we add to our program doesn’t break anything, but how do we tell if the unit tests are a...

Back to Top ↑

IntelliJ

Set spring profile in IntelliJ

less than 1 minute read

To set the spring profile in IntelliJ, just edit the configuration, usually spring-boot:run if you are using maven, or bootRun if you are using gradle, and a...

Using Lombok in Intelli J

1 minute read

Lombok is a pretty neat tool when coding in Java, allowing me to save time writing repetitive codes. But when you are installing it in a new project or in a ...

Adding a catalog of Maven Archetypes in Intelli J

less than 1 minute read

Archetypes make it easy to scaffold a project, but remembering all the archetypes available and using the command line to activate it can be challenging to r...

Back to Top ↑

NextJS

Back to Top ↑

interview questions

Java HashMap Explained

4 minute read

The implementation details of the java hashmap is a very common interview question for java developers, though I’m strongly against asking such question fo...

Algrebra, XOR, and its applications

2 minute read

Recently, I chanced upon this neat solution to a rather simple interview question, that exploits the special property of the binary XOR operation. It leads m...

The SOLID Principle in internet lingo

1 minute read

The SOLID principle is one of the most common acronym to describe the principles of object-oriented programming, which is subset of the many principles intro...

Back to Top ↑

NgRx

How to use router-store in NgRx

2 minute read

What is the purpose of the router-store in NgRx? As explained in my previous article on NgRx, the purpose of NgRx is to separate the data management part ...

How to test NgRx

2 minute read

Ngrx is a framework for angular that helps to separate the backend logic from the frontend, making the code easier cleaner. To know more about how it works...

NgRx Explained

8 minute read

Often times, when our angular applications grows, our code become quite messy to follow. We have multiple components, referencing a myriad number of servic...

Back to Top ↑

Windows

Resolve git SSL certificate problem on windows

less than 1 minute read

While trying to push my project to Azure DevOps on my corporate windows machine, I got this error message when I am trying to push my code - SSL certificate ...

Git detect dubious ownership in repository

2 minute read

When working in the corporate environment, we usually have a designated user space for each authenticated user on our computer. For example, in Windows, if...

Fix for filename too long in Git for Windows

less than 1 minute read

If you are running git on windows, with a deeply nested folder structure in your code, you might get the error message - “Filename too long”. That is because...

Back to Top ↑

GraphQL

Getting started with Spring and GraphQl

7 minute read

The most common way of creating APIs is using REST (Representational State Transfer), of which we make use of the http verbs (POST, GET, PUT, DELETE) to stat...

Back to Top ↑

Javascript

Java HashMap Explained

4 minute read

The implementation details of the java hashmap is a very common interview question for java developers, though I’m strongly against asking such question fo...

Code coverage in Angular

1 minute read

Unit testing has been the quintessential way to ensure whatever code we add to our program doesn’t break anything, but how do we tell if the unit tests are a...

Back to Top ↑

git

How to remove accidental commits in git

1 minute read

This happens when I forgot to create the .gitignore file, resulting in the target folder containing the class files got uploaded to git. Solution git rm -r...

The fatal refusing to merge unrelated history

less than 1 minute read

It occurs to me a few times when I have written my code, then I want to create a git repository to store it. Then I selected the option to create a README fi...

Back to Top ↑

React

Back to Top ↑

documentation

Adding Swagger to Kotlin Spring

1 minute read

Spring makes it extremely easy to create REST api, but as a consumer of APIs, we need documentations to know what is available and how to use it. That’s wher...

My ingredient list for good code

less than 1 minute read

My ingredient list for good code Ample documentation Automated testing with good coverage Clean, legible and side-effect free Second opinion (code ...

Back to Top ↑

Lombok

How to exempt lombok generated code from Jacoco

1 minute read

Lombok makes life easier for java developers by generating the mundane code (e.g. getters and setters) automatically, but if you are running code coverage, y...

Using Lombok in Intelli J

1 minute read

Lombok is a pretty neat tool when coding in Java, allowing me to save time writing repetitive codes. But when you are installing it in a new project or in a ...

Back to Top ↑

Jacoco

How to exempt lombok generated code from Jacoco

1 minute read

Lombok makes life easier for java developers by generating the mundane code (e.g. getters and setters) automatically, but if you are running code coverage, y...

Code coverage for Java - Jacoco

2 minute read

Testing is a very important process in software engineering to ensure the quality of the code we write, and we can ensure testing is adequate by doing code c...

Back to Top ↑

Cucumber

No tests found when running Cucumber JUnit

less than 1 minute read

Sometimes it can be pretty frustrating when the error message doesn’t show the root cause of the problem, usually that’s because it is not straightforward wh...

Cucumber testing on Spring Boot

2 minute read

Cucumber is a great way for users to automate acceptance testing, as it allows using somewhat natural language to define the test cases. With a little learni...

Back to Top ↑

Semantic Release

Using Semantic Release with Github Actions

3 minute read

The purpose of having Semantic-Release is so that we can release workable versions to our users frequently. So we shouldn’t be releasing non-workable version...

Basic guide to Semantic Release

7 minute read

When it comes to releasing software projects to production, versioning can be a topic that is easily overlooked as something that is too trivial and done man...

Back to Top ↑

JPA

How to create generic JPA repository

1 minute read

Generics makes it possible to reuse code, which is great. But when it needs to apply on a JPA repository, it can get messy. As any small mistake is going to ...

Back to Top ↑

Swagger

Adding Swagger to Kotlin Spring

1 minute read

Spring makes it extremely easy to create REST api, but as a consumer of APIs, we need documentations to know what is available and how to use it. That’s wher...

Back to Top ↑

SpringDoc

Upgrade SpringDoc dependencies for Spring 3.0

less than 1 minute read

In my previous article on how to add Swagger on Spring with Kotlin, the examples were built on Spring 2. With the introduction of Spring 3, there are some up...

Adding Swagger to Kotlin Spring

1 minute read

Spring makes it extremely easy to create REST api, but as a consumer of APIs, we need documentations to know what is available and how to use it. That’s wher...

Back to Top ↑

MacOSX

Homebrew explained

5 minute read

What is Homebrew Homebrew is the missing package manager for macOS. What does that mean? In layman terms, it is like the Appstore, but for opensource softwa...

Enable accented characters on Mac OSX

less than 1 minute read

I used to be able to type accented characters on Mac OSX by long pressing the character I want to accent. But this functionality was somehow gone after an OS...

Back to Top ↑

Homebrew

Installing MariaDB on MacOS with Homebrew

1 minute read

MariaDB is a community-driven fork of the then open sourced MySql which was acquired by Oracle, and it is created by the original developers of MySql, and is...

Homebrew explained

5 minute read

What is Homebrew Homebrew is the missing package manager for macOS. What does that mean? In layman terms, it is like the Appstore, but for opensource softwa...

Back to Top ↑

Docker

Deploying multi-container application to Docker

4 minute read

In my last post - Getting started Spring Boot Application, I demonstrated how to create a sample forum application with Spring Boot using MariaDB as the data...

Containerizing with Docker explained

4 minute read

After you have created your application, it is always nice to have it containerized so that it can be readily used whenever you need it, without having to cl...

Back to Top ↑

NodeJS

Getting started with NestJS

6 minute read

NestJS is a nodejs framework for building backend applications, that is secure and scaleable. Following the SOLID principle, and having a modular architectur...

Getting started with Angular

9 minute read

What is Angular? In my opinion, Angular is the platform and framework for building your own customized html tags. While html has a fixed set of tags (e.g. &...

Back to Top ↑

RxJs

Observables Explained

1 minute read

We all know what is a function. It takes some or no inputs and produce just 1 output. function doSomething(input1, input2){ return input1 + input2; } Wh...

NgRx Explained

8 minute read

Often times, when our angular applications grows, our code become quite messy to follow. We have multiple components, referencing a myriad number of servic...

Back to Top ↑

Stream

Java Arrays Lists & Streams Reference

less than 1 minute read

// Initialize Arrays Integer[] integerArray = {1, 2, 3, 4, 5}; System.out.println(Arrays.toString(integerArray)); // Initialize List List<Integer> int...

Back to Top ↑

Theming

Defining your own theme in Angular Material

6 minute read

Having your own theme in your web application is essential to make it look professional. Imagine using the default color themes provided from the framework y...

Back to Top ↑

Angular Material

Defining your own theme in Angular Material

6 minute read

Having your own theme in your web application is essential to make it look professional. Imagine using the default color themes provided from the framework y...

Back to Top ↑

Frontend

How to pass data from angular to css

1 minute read

I am creating an angular template whereby I can create forms from a data file automatically, such as a json or yaml. For displaying on the monitor screen, ...

Back to Top ↑

MariaDB

Installing MariaDB on MacOS with Homebrew

1 minute read

MariaDB is a community-driven fork of the then open sourced MySql which was acquired by Oracle, and it is created by the original developers of MySql, and is...

Deploying multi-container application to Docker

4 minute read

In my last post - Getting started Spring Boot Application, I demonstrated how to create a sample forum application with Spring Boot using MariaDB as the data...

Back to Top ↑

Mockito

Back to Top ↑

Spring Web

How to create custom validation annotation

2 minute read

When we have an application that collects inputs from users, we usually need to have some validation checks to ensure user inputs are within what is expected...

Back to Top ↑

Validation

How to create custom validation annotation

2 minute read

When we have an application that collects inputs from users, we usually need to have some validation checks to ensure user inputs are within what is expected...

Back to Top ↑

Rebase

How to squash commits

2 minute read

Why do we need to squash commits Sometimes when we are working on a feature, we might forget to run all the tests before we commit, and we could get test fa...

Back to Top ↑

OAuth2

OpenID Connect login with Spring Boot

4 minute read

OpenID Connect (OIDC) is an identity authentication protocol, using the mechanism of OAuth2, to allow applications to delegate their login function to identi...

Back to Top ↑

OpenID Connect

OpenID Connect login with Spring Boot

4 minute read

OpenID Connect (OIDC) is an identity authentication protocol, using the mechanism of OAuth2, to allow applications to delegate their login function to identi...

Back to Top ↑

MongoDB

Back to Top ↑

HttpGraphQlTester

Back to Top ↑

Spring Boot GraphQL Starter

Back to Top ↑

Azure DevOps

Back to Top ↑

Artifact Feed

Back to Top ↑

Pipeline

Back to Top ↑

CI/CD

Back to Top ↑

AWS

Back to Top ↑

AWS SAM

Back to Top ↑

AWS Lambda

Back to Top ↑

Cloud Computing

Back to Top ↑

Istanbul JS

Code coverage in Angular

1 minute read

Unit testing has been the quintessential way to ensure whatever code we add to our program doesn’t break anything, but how do we tell if the unit tests are a...

Back to Top ↑

NPM

How to publish Angular component to NPM

1 minute read

There are some requirements that a module needs to fullfil before it can be published to npm. For example, you’ll need a main field in your package.json http...

Back to Top ↑

Http Server

Back to Top ↑

Typescript

Back to Top ↑

PMP

Back to Top ↑

PMI

Back to Top ↑

e2e testing

Back to Top ↑

Good Code

My ingredient list for good code

less than 1 minute read

My ingredient list for good code Ample documentation Automated testing with good coverage Clean, legible and side-effect free Second opinion (code ...

Back to Top ↑

automated testing

My ingredient list for good code

less than 1 minute read

My ingredient list for good code Ample documentation Automated testing with good coverage Clean, legible and side-effect free Second opinion (code ...

Back to Top ↑

clean code

My ingredient list for good code

less than 1 minute read

My ingredient list for good code Ample documentation Automated testing with good coverage Clean, legible and side-effect free Second opinion (code ...

Back to Top ↑

code review

My ingredient list for good code

less than 1 minute read

My ingredient list for good code Ample documentation Automated testing with good coverage Clean, legible and side-effect free Second opinion (code ...

Back to Top ↑

pair programming

My ingredient list for good code

less than 1 minute read

My ingredient list for good code Ample documentation Automated testing with good coverage Clean, legible and side-effect free Second opinion (code ...

Back to Top ↑

time management

My ingredient list for good code

less than 1 minute read

My ingredient list for good code Ample documentation Automated testing with good coverage Clean, legible and side-effect free Second opinion (code ...

Back to Top ↑

Harvard Business Review

Back to Top ↑

Consultant

Back to Top ↑

AWS Amplify

Back to Top ↑

Machine Learning

Machine Learning in a nutshell

2 minute read

A simple explanation of the use of machine learning, is the prediction of result based on past data. In order to do that, you’ll need a lot of data, because ...

Back to Top ↑

Github

Back to Top ↑

Mutation Testing

Mutation testing with Pitest

1 minute read

Beyond just ensuring every line of code is executed with Code Coverage test, there is another way to ensure the test cases written are adequate, and that is ...

Back to Top ↑

Pitest

Mutation testing with Pitest

1 minute read

Beyond just ensuring every line of code is executed with Code Coverage test, there is another way to ensure the test cases written are adequate, and that is ...

Back to Top ↑

BDD

Cucumber testing on Spring Boot

2 minute read

Cucumber is a great way for users to automate acceptance testing, as it allows using somewhat natural language to define the test cases. With a little learni...

Back to Top ↑

Semantic Versioning

Basic guide to Semantic Release

7 minute read

When it comes to releasing software projects to production, versioning can be a topic that is easily overlooked as something that is too trivial and done man...

Back to Top ↑

GitHub Actions

Basic guide to Semantic Release

7 minute read

When it comes to releasing software projects to production, versioning can be a topic that is easily overlooked as something that is too trivial and done man...

Back to Top ↑

Continuous Integration

Basic guide to Semantic Release

7 minute read

When it comes to releasing software projects to production, versioning can be a topic that is easily overlooked as something that is too trivial and done man...

Back to Top ↑

JUnit

No tests found when running Cucumber JUnit

less than 1 minute read

Sometimes it can be pretty frustrating when the error message doesn’t show the root cause of the problem, usually that’s because it is not straightforward wh...

Back to Top ↑

ImportanceOfDocumentation

Back to Top ↑

ImportanceOfGoodNaming

Back to Top ↑

SOLID

The SOLID Principle in internet lingo

1 minute read

The SOLID principle is one of the most common acronym to describe the principles of object-oriented programming, which is subset of the many principles intro...

Back to Top ↑

Single Responsibility

The SOLID Principle in internet lingo

1 minute read

The SOLID principle is one of the most common acronym to describe the principles of object-oriented programming, which is subset of the many principles intro...

Back to Top ↑

Open-Closed

The SOLID Principle in internet lingo

1 minute read

The SOLID principle is one of the most common acronym to describe the principles of object-oriented programming, which is subset of the many principles intro...

Back to Top ↑

Liskov Substitution

The SOLID Principle in internet lingo

1 minute read

The SOLID principle is one of the most common acronym to describe the principles of object-oriented programming, which is subset of the many principles intro...

Back to Top ↑

Interface Segregation

The SOLID Principle in internet lingo

1 minute read

The SOLID principle is one of the most common acronym to describe the principles of object-oriented programming, which is subset of the many principles intro...

Back to Top ↑

Dependency Inversion

The SOLID Principle in internet lingo

1 minute read

The SOLID principle is one of the most common acronym to describe the principles of object-oriented programming, which is subset of the many principles intro...

Back to Top ↑

Object-oriented Design

The SOLID Principle in internet lingo

1 minute read

The SOLID principle is one of the most common acronym to describe the principles of object-oriented programming, which is subset of the many principles intro...

Back to Top ↑

Dependency Injection

Dependency Injection

3 minute read

Dependency Injection is like a job matching service for variables in your code. You specify the job description, in the form of interface, or in a less ideal...

Back to Top ↑

Jackson

Back to Top ↑

Json

Back to Top ↑

Generics

How to create generic JPA repository

1 minute read

Generics makes it possible to reuse code, which is great. But when it needs to apply on a JPA repository, it can get messy. As any small mistake is going to ...

Back to Top ↑

Protractor

Upgrade Angular project from v11 to v13

less than 1 minute read

I’m slow…. It’s been a while since I last touched my Angular repository, that was created in early 2020, running on Angular 11. When I just went back to it y...

Back to Top ↑

Tslint

Upgrade Angular project from v11 to v13

less than 1 minute read

I’m slow…. It’s been a while since I last touched my Angular repository, that was created in early 2020, running on Angular 11. When I just went back to it y...

Back to Top ↑

Eslint

Upgrade Angular project from v11 to v13

less than 1 minute read

I’m slow…. It’s been a while since I last touched my Angular repository, that was created in early 2020, running on Angular 11. When I just went back to it y...

Back to Top ↑

External Configuration

How to get external configuration in Spring

1 minute read

Sometimes we have some configuration data that we need in our code, that can be changed periodically, like mail server information, proxy server, etc. We can...

Back to Top ↑

Cakebrew

Homebrew explained

5 minute read

What is Homebrew Homebrew is the missing package manager for macOS. What does that mean? In layman terms, it is like the Appstore, but for opensource softwa...

Back to Top ↑

Algebra

Algrebra, XOR, and its applications

2 minute read

Recently, I chanced upon this neat solution to a rather simple interview question, that exploits the special property of the binary XOR operation. It leads m...

Back to Top ↑

XOR

Algrebra, XOR, and its applications

2 minute read

Recently, I chanced upon this neat solution to a rather simple interview question, that exploits the special property of the binary XOR operation. It leads m...

Back to Top ↑

binary operations

Algrebra, XOR, and its applications

2 minute read

Recently, I chanced upon this neat solution to a rather simple interview question, that exploits the special property of the binary XOR operation. It leads m...

Back to Top ↑

Containerization

Containerizing with Docker explained

4 minute read

After you have created your application, it is always nice to have it containerized so that it can be readily used whenever you need it, without having to cl...

Back to Top ↑

Frontend Development

Getting started with Angular

9 minute read

What is Angular? In my opinion, Angular is the platform and framework for building your own customized html tags. While html has a fixed set of tags (e.g. &...

Back to Top ↑

Hiring

Back to Top ↑

Technical Assessment

Back to Top ↑

Coding Assessment

Back to Top ↑

Github Actions

Using Semantic Release with Github Actions

3 minute read

The purpose of having Semantic-Release is so that we can release workable versions to our users frequently. So we shouldn’t be releasing non-workable version...

Back to Top ↑

Jekyll

Escaping the {{ }} in markdown for Jekyll

less than 1 minute read

I just realised that in one of my previous posts, the code I had for ${{ secrets.GH_TOKEN }} became just $. After a bit of research, I found out that it is ...

Back to Top ↑

Markdown

Escaping the {{ }} in markdown for Jekyll

less than 1 minute read

I just realised that in one of my previous posts, the code I had for ${{ secrets.GH_TOKEN }} became just $. After a bit of research, I found out that it is ...

Back to Top ↑

Liquid Templating Language

Escaping the {{ }} in markdown for Jekyll

less than 1 minute read

I just realised that in one of my previous posts, the code I had for ${{ secrets.GH_TOKEN }} became just $. After a bit of research, I found out that it is ...

Back to Top ↑

Router

How to do navigation in Angular

1 minute read

When you create a new angular app using ng new <application name>, the first question you get asked is ? Would you like to add Angular routing? (y/N). ...

Back to Top ↑

Environment Variable

How to use environment variable in Angular

1 minute read

Angular automatically creates 2 files - environment.ts and environment.prod.ts, in the environment folder when the project is first created. Both of them has...

Back to Top ↑

HttpClientModule

How to test HttpClient in Angular

1 minute read

This is a simple method to call http using the HttpClientModule. getBooks(): Observable<Book[]>{ return this.http.get<Book[]>(BooksService.b...

Back to Top ↑

HttpClientTestingModule

How to test HttpClient in Angular

1 minute read

This is a simple method to call http using the HttpClientModule. getBooks(): Observable<Book[]>{ return this.http.get<Book[]>(BooksService.b...

Back to Top ↑

Array

Java Arrays Lists & Streams Reference

less than 1 minute read

// Initialize Arrays Integer[] integerArray = {1, 2, 3, 4, 5}; System.out.println(Arrays.toString(integerArray)); // Initialize List List<Integer> int...

Back to Top ↑

List

Java Arrays Lists & Streams Reference

less than 1 minute read

// Initialize Arrays Integer[] integerArray = {1, 2, 3, 4, 5}; System.out.println(Arrays.toString(integerArray)); // Initialize List List<Integer> int...

Back to Top ↑

Effects

How to test NgRx

2 minute read

Ngrx is a framework for angular that helps to separate the backend logic from the frontend, making the code easier cleaner. To know more about how it works...

Back to Top ↑

Functional Programming

Back to Top ↑

Rubik's Cube

Simulating Rubik Cube Actions with Java

12 minute read

Let’s work on something fun today, simulating a rubik’s cube. This is the precursor to my next topic to provide the solution to solve rubik’s cube. Modell...

Back to Top ↑

Router-Store

How to use router-store in NgRx

2 minute read

What is the purpose of the router-store in NgRx? As explained in my previous article on NgRx, the purpose of NgRx is to separate the data management part ...

Back to Top ↑

HashMap

Java HashMap Explained

4 minute read

The implementation details of the java hashmap is a very common interview question for java developers, though I’m strongly against asking such question fo...

Back to Top ↑

Observable

Observables Explained

1 minute read

We all know what is a function. It takes some or no inputs and produce just 1 output. function doSomething(input1, input2){ return input1 + input2; } Wh...

Back to Top ↑

Observer Pattern

Observables Explained

1 minute read

We all know what is a function. It takes some or no inputs and produce just 1 output. function doSomething(input1, input2){ return input1 + input2; } Wh...

Back to Top ↑

CSS

How to pass data from angular to css

1 minute read

I am creating an angular template whereby I can create forms from a data file automatically, such as a json or yaml. For displaying on the monitor screen, ...

Back to Top ↑

MatSelect

Testing MatOptionHarness in MatSelectHarness

less than 1 minute read

Reminder to self: When trying to get the options in the MatSelectHarness in Angular Material, you need to simulate a click on the MatSelectHarness - await se...

Back to Top ↑

MatOption

Testing MatOptionHarness in MatSelectHarness

less than 1 minute read

Reminder to self: When trying to get the options in the MatSelectHarness in Angular Material, you need to simulate a click on the MatSelectHarness - await se...

Back to Top ↑

Material Angular

Testing MatOptionHarness in MatSelectHarness

less than 1 minute read

Reminder to self: When trying to get the options in the MatSelectHarness in Angular Material, you need to simulate a click on the MatSelectHarness - await se...

Back to Top ↑

SID

Git detect dubious ownership in repository

2 minute read

When working in the corporate environment, we usually have a designated user space for each authenticated user on our computer. For example, in Windows, if...

Back to Top ↑

Security

Git detect dubious ownership in repository

2 minute read

When working in the corporate environment, we usually have a designated user space for each authenticated user on our computer. For example, in Windows, if...

Back to Top ↑

Spring 3.0

Upgrade SpringDoc dependencies for Spring 3.0

less than 1 minute read

In my previous article on how to add Swagger on Spring with Kotlin, the examples were built on Spring 2. With the introduction of Spring 3, there are some up...

Back to Top ↑

Docker Compose

Deploying multi-container application to Docker

4 minute read

In my last post - Getting started Spring Boot Application, I demonstrated how to create a sample forum application with Spring Boot using MariaDB as the data...

Back to Top ↑

Multi Stage Build

Deploying multi-container application to Docker

4 minute read

In my last post - Getting started Spring Boot Application, I demonstrated how to create a sample forum application with Spring Boot using MariaDB as the data...

Back to Top ↑

Spring Data

How to test Spring Data repository

2 minute read

Usually we do not need to write tests for the functionalities provided by the framework, but we can do so when certain functionalities we use from the framew...

Back to Top ↑

Integration Testing

Back to Top ↑

Code review

Integrate code quality review with SonarQube

3 minute read

In today’s environment, when we are having tons of dependencies in our application project, as developers we need to take care not just of the business logic...

Back to Top ↑

SonarQube

Integrate code quality review with SonarQube

3 minute read

In today’s environment, when we are having tons of dependencies in our application project, as developers we need to take care not just of the business logic...

Back to Top ↑

BA

Integrate code quality review with SonarQube

3 minute read

In today’s environment, when we are having tons of dependencies in our application project, as developers we need to take care not just of the business logic...

Back to Top ↑

CSRF

Back to Top ↑

Authentication

Back to Top ↑

Squash

How to squash commits

2 minute read

Why do we need to squash commits Sometimes when we are working on a feature, we might forget to run all the tests before we commit, and we could get test fa...

Back to Top ↑

Sequel Pro

Installing MariaDB on MacOS with Homebrew

1 minute read

MariaDB is a community-driven fork of the then open sourced MySql which was acquired by Oracle, and it is created by the original developers of MySql, and is...

Back to Top ↑

Heidi SQL

Installing MariaDB on MacOS with Homebrew

1 minute read

MariaDB is a community-driven fork of the then open sourced MySql which was acquired by Oracle, and it is created by the original developers of MySql, and is...

Back to Top ↑

Database

Installing MariaDB on MacOS with Homebrew

1 minute read

MariaDB is a community-driven fork of the then open sourced MySql which was acquired by Oracle, and it is created by the original developers of MySql, and is...

Back to Top ↑

TestContainers

Back to Top ↑

NoSQL

Back to Top ↑

NestJS

Getting started with NestJS

6 minute read

NestJS is a nodejs framework for building backend applications, that is secure and scaleable. Following the SOLID principle, and having a modular architectur...

Back to Top ↑

Spring Cloud

Back to Top ↑

Netflix Eureka

Back to Top ↑

Microservices

Back to Top ↑

OpenFeign

Back to Top ↑

Webflux

Back to Top ↑

Project Reactor

Back to Top ↑