Languages
100%
English
100%
Cantonese (廣東話)
40%
Putonghua (普通话)
10%
Japanese (日本語)
10%
German (Deutsch)
10%
Spanish (Español)
10%
Italian (Italiano)
Skills
Project management
Scrum

10+ years of experience; in teams running fully Agile Scrum; also in teams transitioning from Waterfall to Agile Scrum; also in teams running Agile Scrum but the rest of the company is still running Waterfall and help them to transition to Agile Scrum

Waterfall

8 years of experience; understanding of Waterfall model; from planning and creating functional specifications to testing

Microsoft
C#

10+ years of experience; version 1.1 and after

.NET Core

10 years of experience; version 2.0 and after

Entity Framework Core

10 years of experience; version 2.0 and after

ASP.NET Core

10 years of experience; version 2.0 and after

.NET Framework

10+ years of experience; version 1.1 - 4.7

Entity Framework

4 years of experience; version 4.1 - 6.0

ASP.NET

10+ years of experience; version 2.0 - 4.7

VS Unit Test

7 years of experience

MSBuild

10+ years of experience

WinForm

4 years of experience

Containerisation
Docker

10+ years of experience; version 1.5 and after; encapsulating application written in .NET Core, node.js, python and Go

Kubernetes

9 years of experience; running applications written in .NET Core, node.js, python and Go; deployments include long-running services, cron jobs, public and internal facing endpoints, and load balancers; mounting files of configuration, secrets, or file shares onto containers; Let’s Encrypt certificate management using cert-manager; csi-secret-store to connect to secret management service in public cloud; configured Workload Identity Federation to allow pods to access Google services

OpenTelemetry

4 years of experience; collecting distributed traces from application running on Kubernetes including .NET Core and Go

Prometheus

9 years of experience; collecting metrics from application running on Kubernetes

Grafana

6 years of experience; visualising metrics collected by Prometheus by creating dashboards

Redis

9 years of experience; used as a cache

Hashicorp Vault

6 years of experience; storing secrets used by applications on Kubernetes

Messaging
GCP Cloud Pub/Sub

4 years of experience; used in a microservice architecture to allow services to communicate asynchronously and to provide better isolation and error handling

Microsoft Message Queuing (MSMQ)

10+ years of experience; one of the use-cases is to connect servers between multiple locations which requires internet connections; another use-case is to simply allow background jobs to finish in a orderly manner to avoid overwhleming the platform

RabbitMQ

1 years of experience

Cloud
Terraform

9 years of experience; managing infrastructure on Azure and GCP

GCP Kubernetes Engine (GKE)

5 years of experience; managing size of nodes (machines) and number of nodes in a cluster; configuring RBAC

GCP Compute Engine (GCE)

5 years of experience; both Windows and Linux machines

GCP Cloud SQL

5 years of experience; managing database servers of Microsoft SQL Server and PostgreSQL

GCP Monitoring

5 years of experience; creating and managing dashboards from metrics from a managed Prometheus service; created metrics from logs; created alerts from metrics

GCP IAM

5 years of experience; managing users, user groups, service accounts and its permissions; configuring Workload Identity Federation

GCP Security

5 years of experience; monitoring threats and compliance requirements in Security Command Center; configured to run Web Security Scanner on web applications; Key Management, Certificate Manager and Secret Manager to manage various secrets required by applications

GCP Storage

5 years of experience; storing static files, backups and temporary storage of application message exchanges in buckets

GCP VPC

5 years of experience; managing network configurations and firewall rules

GCP Cloud NAT

5 years of experience; managing NAT configurations for outgoing IP addresses of GKE clusters to minimise the work of whitelisting IP addresses by clients

GCP Cloud DNS

5 years of experience; managing multiple DNS zones

GCP Filestore

5 years of experience; storing files shared by multiple services; using NFS storage; it was used until applications were migrated to use GCP Storage

GCP Artifact Registry

5 years of experience; storing Docker images

GCP App Engine (GAE)

Experiences from hobby weekend projects and freelance work

GCP Cloud Build

Experiences from hobby weekend projects and freelance work

Azure Kubernetes Service (AKS)

5 years of experience; lift and shift applications on Windows machines on AWS EC2 to Linux machines on AKS; support work on applications running on AKS due to its instability in the early days of the service

Azure SQL Database

5 years of experience; managing database servers of Microsoft SQL Server

Azure Virtual Machines

9 years of experience; on both Windows and Linux machines

AWS CloudWatch

3 years of experience; mostly used a log aggregator and log search

AWS CodeDeploy

3 years of experience; setup to replace Jenkins

AWS EC2

3 years of experience; on both Windows and Linux machines

AWS IAM

3 years of experience; managing users, user groups, roles and its permissions

AWS Lambda

3 years of experience; a small implementation using .NET to perform integration with clients

AWS RDS

3 years of experience; with database severs of Microsoft SQL Server and PostgreSQL

AWS S3

3 years of experience; storing static files and backups

AWS SNS

3 years of experience; used mainly with AWS Lambda

Security
Let’s Encrypt

10+ years of experience; setup made in VM, Docker and Kubernetes

OAuth 2.0

10+ years of experience; implementing auth server in node.js, .NET Core and Go

Database
Microsoft SQL Server

10+ years of experience; since version 2005

PostgreSQL

10+ years of experience; used as a low-cost alternative to Microsoft SQL Server

RavenDB

4 years of experience; used as a major NoSQL database at workplace

Sybase

4 years of experience; wrote banking software for investment banks

MSSQL Analysis Services

2 years of experience; version 2008

MongoDB

1 years of experience; plus more experiences from weekend hobby projects and freelance work

SQLite

4 years of experience; plus more experiences from weekend hobby projects and freelance work

API Services
SendGrid

9 years of experience; sedning emails

Language
Transact-SQL

10+ years of experience; designing database schema and indexes; writing database views, stored procedures, functions and triggers

Go

10+ years of experience; version 1.5 and after; used in building developer tools and smaller microservices at workplace

Javascript

10+ years of experience; used in building web front-end and node.js back-ends

Dart

Experiences from hobby weekend projects and freelance work; experiences in verison 2 and after

Java

Experiences from hobby weekend projects and freelance work; used mainly with Android development

Python

10+ years of experience; and experiences from hobby weekend projects and freelance work; version 2.7 and after

Swift

1 years of experience; Experiences from hobby weekend projects and freelance work

Apex

4 years of experience; a language used automations on Salesfore with a Java-like syntax

SuiteTalk

4 years of experience; a language used to implement automations on NetSuite

Continuous Integration
Bitbucket Pipelines

9 years of experience; running unit tests, Docker builds, Kubernetes deployments and Terraform deployments

Jenkins

10+ years of experience; MSBuild and Docker

TeamCity

4 years of experience; builing artifacts of ASP.NET applications

Travis CI

Experiences from hobby weekend projects and freelance work

Coveralls

Experiences from hobby weekend projects and freelance work

Documentation
Swagger

10+ years of experience; used with node.js and .NET Core

d2

5 years of experience; generated architecture diagrams and data flow diagrams for technical documentation from simple declarative code

Shell
Bash shell

10+ years of experience

Powershell

6 years of experience

Server
Nginx

10+ years of experience; used as a reverse proxy and web server

Caddy

4 years of experience; used as a reverse proxy and TLS termination

HAProxy

Experiences from hobby weekend projects and freelance work

IIS

10+ years of experience; version 5.1 - 8.5

Operating System
Debian

4 years of experience; currently using it in Docker containers; previously used as my desktop

alpine

10+ years of experience; using it in Docker containers

ArchLinux

4 years of experience; used as my desktop

Fedora

10+ years of experience; currently using it in Docker containers; previously used as my desktop

Ubuntu

10+ years of experience; Used as my Linux environment at workplaces

Windows

10+ years of experience; version XP and after; and Server 2000 and after

MacOS

10+ years of experience; used as my laptop

Source Control
git

10+ years of experience

MS TFS

4 years of experience; version 2010 and 2012

Subversion

1 years of experience

Development management
BitBucket

10+ years of experience; managing code repositories and pull requests

Confluence

10+ years of experience; managing technical documentation

JIRA

10+ years of experience; including setting up a brand new company and/or workflow

Github

10+ years of experience

YouTrack

4 years of experience; managing project tracking

Mobile
Flutter

Experiences from hobby weekend projects and freelance work; experiences in version 0.5 and after

Android

Experiences from hobby weekend projects and freelance work; Started with 2.3 (Gingerbread); used Java and Dart (with Flutter)

iOS

Experiences from hobby weekend projects and freelance work; experiences in version 9 - 10

Web
AngularJS

7 years of experience; version 1.2 - 1.5

Angular

Experiences from hobby weekend projects and freelance work

ava

1 years of experience

Bootstrap

10+ years of experience; version 2 and after

CSS 3

10+ years of experience

express.js

1 years of experience

grunt

10+ years of experience

gulp

10+ years of experience

HTML 5

10+ years of experience

istanbul

1 years of experience

jasmine

10+ years of experience

jest

10+ years of experience

jQuery

9 years of experience

karma

10+ years of experience

mocha

10+ years of experience

node.js

10+ years of experience

nyc

1 years of experience

protractor

4 years of experience

React

9 years of experience

webpack

10+ years of experience

.NET Nuget Packages
OpenTelemetry

4 years of experience; passing .NET metrics, traces and logs to side-car POD in Kubernetes; the metrics will then be pushed to a public cloud infrastructure

prometheus-net

9 years of experience; exposing metrics from .NET applications to Prometheus scraping

Serilog

10+ years of experience; structured logging

SendGrid

9 years of experience; sending emails and to avoid setting SMTP server

SlackAPI

5 years of experience; sending error notifications to Slack

StackExchange.Redis

9 years of experience; to talk to Redis server

Unity

10+ years of experience; a dependency injection library

HangFire

10+ years of experience; to run scheduled jobs

ComponentSpace

10 years of experience; a service provider implementation of SAML for Single Sign-On (SSO)

FluentFTP

10+ years of experience; to talk to FTP servers

Npgsql

9 years of experience; to talk to PostgreSQL databases

OpenIddict

3 years of experience; an implementation of OAuth 2.0 and OpenID Connect replacing IdentityServer4

Swashbuckle

9 years of experience; to generate Swagger documentation

NodaTime

10+ years of experience; a nicer library for date and time especially for handling time zones

Portable.BouncyCastle

10 years of experience; a library for encryption and decryption; mostly used for OAuth 2.0

AutoMapper

10+ years of experience; to map objects from one type to another

ValueInjecter

10+ years of experience; to map objects from one type to another

xunit

10+ years of experience; a unit testing framework

NUnit

10+ years of experience; a unit testing framework

AltCover

10+ years of experience; generating code coverage

FakeItEasy

10+ years of experience; a mocking library

Faker.Net

10+ years of experience; a library to generate fake data for unit testing

NBuilder

10+ years of experience; a library to generate fake data for unit testing

Shouldly

10+ years of experience; a library for assertion

FluentAssertions

10+ years of experience; a library for assertion

NSubstitute

10+ years of experience; a mocking library

Moq

10+ years of experience; a mocking library

IdentityServer4

8 years of experience; an implementation of OAuth 2.0 and OpenID Connect

NServiceBus

4 years of experience; used with MSMQ

AutoFac

4 years of experience; a library for dependency injection

Dapper

4 years of experience; a lightweight and faster framework than Entity Framework

ELMAH

4 years of experience; a library for logging and a nice interface to errors

Log4Net

10 years of experience; a library for logging

NHibernate

4 years of experience; an ORM library

NLog

4 years of experience; a library for logging

Quartz.Net

8 years of experience; a library for scheduling jobs