Self Introduction
About Me

As a Programmer
Having 6 years of experience in IT industry, I am currently a full-stack Software Engineer with 2 years of experience fully in charge of Cloud Infrastructure.
I am also an active Vibe Coder for frontend applications (half of the code in this personal page is vibed).
For Frontend I specialize in React and React-Native for web and mobile applications.
For Backend I specialize in Spring Boot and Nestjs, with intensive use of ORM and SQL when only necessary. I enjoy solving business problems with object-oriented domain model, especially with:
- The tactical methodology advocated in DDD;
- The strategic design using Event Storming; and
- The context-first approach to schema design.
For Cloud, I am proficient in designing cloud solution and maintaining them with infrastructure as code using Terraform.
Education
03/2019 - 06/2019
MicroMaster in A.I. and ProgrammingTecky Academy, Hong Kong09/2012 - 08/2014
M.Phil. in MathematicsThe Hong Kong University of Science and Technology, Hong KongThesis Interpolating Sequences and Extremal Problems09/2009 - 06/2012
B.Sc. in Mathematics (First Class Honor)The Hong Kong University of Science and Technology, Hong KongPublication Supercongruences on Binomial Coefficients (First Author)
Experience (IT Related: 6.36 Years)
- 15 Dec 2025 -Present1.5 Months
System AnalystBank of China (Hong Kong) LimitedIT Department - Data Application Development Division - 15 May 2023 -12 Dec 20252 yrs 6.8 mos
Software EngineerWonderbricks LimitedBillie OnsiteJob Summary.- DevOps.
- Fully in charge of all tasks in devops and cloud infrastructure in AWS
- AWS resources are fully controlled by Terraform for easy replication of the entire infrastructure, which include:▶AWS Resources
- Designed Cleanup Flow to completely remove all resources in a VPC and resolve the related chanllenges involving dependencies among resources
- Created and hosted web-based infra-dashboard to display every detail deployed in our infrastructure
- Frontend Development.
- Developed a real-time application in both React and React-Native, for both web and mobile applications
- Apply Redux-Toolkit and Redux-RTK-Query to build clean and performant react component
- Worked on app submission to App Store and Google Play using EXPO
- Refactor messy code generated by LovableUI vibed by our product manager, reduced a single component from 4000 lines of code into 1000 lines for maintainability.
- Backend Development.
- Maintained multiple micro-services in different usecases using two frameworks:
- Nodejs. Nestjs, TypeORM (file generation, pdf is craeted by React-PDF)
- Java, Kotlin. Spring Boot, JOOQ, JPA (all serious business logic, split by domain context)
Designed database schema and performed schema migration for PostgreSQL using Prisma
Schema Design strictly follows Context-First approach from Domain Driven Design.
Due to skillsets among the team, we still follow elementary controller-service-repository achitecture to avoid any misalignment
- Created complex SQL for specific requirement such as dashboard with filtering, or SQL that cannot be auto-generated from ORM
- Make comprehensive documentation on Stripe-API using Kotlin such as how to create subscription and how to schedule subscription changes with proration rate
- Used Redis to implement distributive lock for handler of Stripe events because Stripe may send the same webhook event multiple times to ensure it gets delivered successfully
Skills NeededTypescript / Frontend|───React|───Redux-Toolkit|───RTK-Query|───Zustand with React-Query|───Tailwind|───React-Native|───React Native Reanimated|───Expo-Cli (Development Build, ad-hoc Internal Distribution, etc)|───Algolia (Search Engine)|───Socket.io-client|───Push Notification for iOS, Android via EXPOTypescript / Backend|───Nestjs|───Express|───Mongoose|───Socket.io|───Algolia (Search Engine)|───Googleapis + Nodemailer (for Sending Emails)|───Prisma (db migration only)|───Stripe (For Reading stripe content, e.g., Products, Subscription-end-date, metadata, etc)|───Prisma-Kysely (as type-safe query builder, a counterpart of JOOQ in java; and go-jet in golang)|───Expo Push NotificationKotlin / Backend|───Stripe (For Subscription and webhook events handling)|───Spring Boot|───|───JOOQ as Query Builder and DAO auto-generator|───JUnit5 For Integration Test and Unit Test|───Mockk For Mocking Services|───Algolia (Search Engine)Python / Backend|───Flask|───Boto3|───OpenpyxlInfrastructure as Code|───TerraformCloud (AWS)|───Lambda FunctionsFor File Generation (Python Application) and Google Authentication (Nodejs Application)|───Lambda FunctionsVia docker image when unzipped file size exceeds 250Mb|───Lambda FunctionsAs a snap-started lamda function for Spring Boot Application|───S3, Cloudfront and Route53 for hosting React Application|───ECS Fargate|───Load-Balancer, listeners and target groups|───Security Groups|───VPC, VPC Endpoints and Lambda inside VPC for Elastic Network Interface|───RDS and RDS-proxy|───IAM role for access right among resources (e.g., create policy to let lambda function access RDS-Proxy)|───Delayed Queue by means of Dead-letter Queue, e.g., pin a message to the top and restore its position 1 week later|───Direct Exchange with prefetchCount for rate limitCICD / Github Actions|───CICD Workflow for Frontend Deployment|───CICD Workflow for Backend Deployment via pushing image to ECR, updating ECS Task and updating ECS Service|───CICD Workflow for Serverless Functions Deployment in Python (Flask) and in Nodejs (Express) and in Kotlin (Spring Boot)Docker|───Containerization of Python, Node.js, Java and Kotlin application into images for deployment via ECSDocumentation (I wrote alot)|───Reason. Every company should have a wiki explaining all projects and common terminologies used among projects, I initiated one as the company lacked of it|───Implemented CICD to encourage contributions from staffs|───Google Authenticated via backend served in Lambda|───Comprehensive documentation on cloud infrastructure before leaving the companyRedis|───Mainly used to implement distributive lockiOS Deployment to AppStore with EXPO|───Create production build for publishing to app store|───Manage and version the builds for uat, prod, implement force update accordinly|───Handle App Submissions and and understand Rejections|───Manage everything above with 2 stages (UAT, PROD) and perform OTA update in UAT when there is no changes in native module. - 15 Aug 2022 -April 20238.4 Months
AI EngineerEye Catching LimitedJob Summary.- Study eye-tracing related algorithm.
- Study and deploy machine leanring algorihtm in web-app and desktop-app.
- Completely translate a BlazeFace model in python into the same model in libtorch of C++ for GUI application.
- Implement methods to ensure weights in pytorch model can be used in libtorch model.
- Study CMake and develop software to combine libtorch model and imgui application.
Skills NeededPython|───PyTorchTypescript|───Tensorflow|───Onnx - Sep 2021 -July 202210.9 Months
Senior Software DeveloperRaSpect Intelligence Inspection LimitedJob Summary.- Object Detection Related.
- Text Detection. Implemented text detection (EAST) to facilitate signboard defect classification.
- Crack Detection. Help implement detection model for crack and spalling.
- Rust Detection. Implemented two solutions: (i) Text removal -> classifcation pipeline; and (ii) direct object detection model using faster rcnn.
- Image Generation/Inpainting.
- DefectGAN. Implemented image-generation model following this paper that generate synthetic data on cracks and spallings for training defect detection models on facades.
- Text Removal. Experimented with existing algorithms like various GAN or image-inpainting method in pytorch. Finally I follow this paper to obtain a text eraser with satisfactory performance.
For an example of failed model, we refer the results to here.
- Web or Hardware Related.
- Maintain React Next project.
- Data scrapping for house transactions records.
- Automation on tracking latest rtk-data from official geodetic website and data-processing pipeline.
- Work with a local grpc based service in Python to interact with a compiled binary (.exe), messed with multi-threading stuff.
Skills NeededPython|───Selenium|───Boto3 (AWS SDK)|───Mongoengine|───gRPC|───PyTorchData Annotation Tool|───CVAT|───COCO-AnnotatorAI-General|───Data Annotation|───DataLoader with Various Data Augmentations|───Model Training for Rust Detection|───Model Training for Crack DetectionAI-Models|───GAN for Producing Synthetic Data|───Faster RCNN from Scratch and its Modification|───Single Stage Headless Face Detector into Rust DetectorJavascript (Legacy Project)|───Next - Object Detection Related.
- Aug 2020 -Mid-Aug 20211 yr 0.4 mos
Software EngineerEAB Systems (Hong Kong) LimitedJob Summary.- Build video conferencing frontend and backend application in React, Twilio and express.
- Build CMS system that lets users create their own single page application.
- Machine Learning Related. Build CSV Importer (together with an express layer and a Flask layer) that can parse a csv/excel file and perform:Data Classification and Auto Date-refomatting are separately two models placed inside tensorflow-serving for deployment.
Skills NeededTypescript|───React|───Redux|───React-Native|───Express|───Mongoose|───Sendgrid|───TwilioNetworking|───socket.ioPython|───Pandas|───Tensorflow v2 - Sep 2019 -Aug 202011.9 Months
Front-end DevelopereLearningProJob Summary.- Create HTML5 Coursewares
- Maintain web pages and construct React frontend application
- Created a python GUI project for text extraction from an image (a work necessary to translate old fresh game into html5 game).
Steps for the App:
- Press Screenshot button in our app (image of preselected monitor will be recorded)
- Select the area for text extraction
- Text will be captured by calling google vision API
Detail can be found here.
Skills NeededJavascript|───ReactPython|───tkinter|───pyinstallerArt|───Adobe Premiere|───Adobe Photoshop|───Saola Animate (CSS Animation) Jan 2018 - Dec 2018
11 Months
2D Game Artist深圳疯点子科技有限公司Job Summary.Responsible for constructing 3d accessories, creating environment art and character design.Skills NeededSoftware|───Unity|───Autodesk 3ds Max|───Adobe PhotoshopArtistic Skills|───2D Character Design|───UI Assets Design|───Low-poly 3D Model ConstructionOct 2015 to Dec 2017
UnemployedHome GuardianSkills NeededThick SkinSelf-DisciplineParental SupportI was striving to become an artist within two years. Of this time I was taking online courses and drawing on a daily basis. I aimed at being able to draw a variety of game assets (not just character).
My outcome based on this period can be seen here.Mar 2015 - Oct 2015
6.9 Months
Senior Research AssistantDepartment of Mathematics, Hong Kong Baptist UniversityStudy HJB equations arised in specific financial games.Sep 2014 - Feb 2015
6 Months
Research AssistantDepartment of Mathematics, Hong Kong University of Science and TechnologyStudy the property of viscosity solution of HJB equations.Sep 2012 - June 2014
1 yr 9.8 mosTeaching AssistantDepartment of Mathematics, Hong Kong University of Science and TechnologyFulfill teaching duty as required in obtaining studentship in the course of M.Phil study. Subjects include:- Calculus II
- Linear Algebra
- Mathematical Analysis
- Real Analysis
Programming Skills
- Git
- Docker
- Basic CI/CD Pipeline in Gitlab
- Github Actions
- Terraform
- Security Group
- Target Group
- Load Balancer
- ECS Fargate
- Route53
- S3
- CloudFront
- Lambda Functions
- API-Gateway
- API-Gateway with Websocket API
- RDS
- RDS-Proxy
- IAM Policies
- SQS
- React
- React-Native
- Redux
- Redux-Saga
- Next.js
- Electron.js
- Electron with Next.js
- Node.js
- Express.js
- Socket.io
- Twilio.js
- Knex.js
- Mongoose.js
- Prisma.js
- Prisma-Kysely.js
- Spring Boot
- Coroutines
- SSE
- Domain Driven Design
- JOOQ
- Spring Boot
- Hibernate
- iBatis
- Windows Presentation Foundation
- CMake Ecosystem
- Libtorch
- OpenCV
- ImGui for Desktop App
- Gin
- Goose
- Sqlc
- Azure-sdk for Voice
- Go-Jet
- Tensorflow v2
- PyTorch
- Pandas
- Flask
- ONNX
- Openpyxl
- Boto3
- Elliptic Curve Digital Signature Algorithm, Code Implementation
- Debezium (Kafka)
- RabbitMQ
- PostgreSQL
- MongoDB
- Embed custom trained pytorch model in ONNX format into frontend
- Implementation from scratch and training experience with CNN such as
- Object Detection
- Text Detection with Rotation
- Image Classification
- Image Generation and Image In-painting
- Implementation and training experience with LSTM Model and Transformer to do:
- Summarization on a column of data
- Translation of random date format into standard YYYY-MM-DD one
Art Skills
- Photoshop CC
- 3DS Max
- 2D Character
- 2D Environment
