Mincong HUANG

Software Engineer working on data engineering, with a strong background in Java, Elasticsearch, and DevOps.

About Me

Hi, I am a software engineer at Composable, helping companies to automate and augment their business processes with LLMs. I have 11 years of experience working on different projects, mainly in France. My blog posts are bits and pieces of my tech journey. Most of them are related to software development and operations for a SaaS business. Hope you enjoy them!

Software Development

Developing tailored software solutions that meet your unique business requirements in Java, Go, Typescript, or Python.

Database Management

Expert management and optimization of databases, with a focus on Elasticsearch and MongoDB. I ensure your data is secure, accessible, and performant.

CI/CD

Automate the process of software lifecycle development with GitHub, GitLab or other solutions.

Infrastructure

Design and implement cloud-based infrastructure that scales with your business. I am a Certified Kubernetes Administrator (CKA) and have experience with AWS, GCP, Azure, and Alibaba Cloud.

SRE

Ensure the site reliability of your system. Design and implement metrics, alerts, dashboards, logs, APM, and other technologies to observe your system. Participate in the 24/7 on-call, incident commanding, and post-mortem.

Documentation

Design and write documentation for knowledge sharing and operational guidelines for the whole team, from newcomers, seasoned participants, and core team members.

Projects

Here are some projects that I participated in the past.

Developing the next generation of CI/CD tool at Datadog

Unify the existing CI/CD tools and provide a consistent experience for all internal engineers across all environments.

23 Aug 2024

Elasticsearch

What Is Vector?

This article discusses what is vector in the world of AI, its definition, vectorization, the motivation of using it, the usage of vector in Elasticsearch and MongoDB, and some personal thoughts.

28 Aug 2024

Supporting Chinese Content in Elasticsearch

This article discusses how to support Chinese content in Elasticsearch using the Internaltional Components for Unicode (ICU) plugin.

23 Aug 2024

Understanding the Explain API in Elasticsearch

This article shows you how to use the Explain API to troubleshoot your query and your documents in Elasticsearch.

09 Aug 2024

How to test an analyzer in Elasticsearch?

Understanding how your content is processed by Elasticsearch even if you have little experience with Elasticsearch using the Analyze API.

04 Aug 2024

Implementing Search-as-you-type in "ChatGPT QuickSearch"

The mechanism of the search-as-you-type feature for the Chrome extension "ChatGPT QuickSearch".

28 Jul 2024

Internal Structure Of Elasticsearch Java High-Level REST Client

This article explores the implementation of Elasticsearch Java High-Level REST Client (HLRC) by analyzing the structure of the client, the dependencies, the error handling mechanism, serialization, its observability, and more.

23 Jan 2022

Read more... (32 articles)

Automation

Internal Working of Temporal Java Service Client

The internal working of Temporal Java service client: module structure, protobuf messages, code generation, data conversion, authorization service stubs, and more.

25 Sep 2022

Activity in Temporal

This article explains the definition of an activity, execution, observability, testing, use-cases, and trade-offs in the workflow engine Temporal.

30 Jul 2022

Error Retries in Temporal Workflow

This article discusses the error retries in workflow engine Temporal, including retryable and non-retryable application errors, error types in retry policy, retry policy usage in different levels, maximum attempts, and more.

09 Oct 2021

Read more... (3 articles)

Java

BlogSearch Architecture

The overview of the BlogSearch, a simple search service for blog posts.

26 May 2022

Setting Up Monitoring For Java With Datadog

This article explains how to set up Datadog monitoring for a Java application and an Elasticsearch service running in Alibaba Cloud.

27 Mar 2022

Change Log Level At Runtime in Logback

This Q&A explains how to change logger level dynamically at runtime via RESTful API for your Java application when using Logback.

18 Dec 2021

Audit Logs

This article discusses how to implement a simple audit logs solution with Java JAX-RS, including requirements, considerations for the implementation, and 3 different solutions based on Java Servlet, Jetty, and JAX-RS filter.

20 Nov 2021

Using Java Time In Different Frameworks

How to use Java Time in different frameworks? This article shares examples in Java concurrency classes, Jackson, Akka, and Elasticsearch.

25 Oct 2020

Controlling Time with Java Clock

Use java.time.Clock to control time in your unit tests. This article will mainly focus on usage of fixed clock and offset clock.

24 May 2020

Read more... (31 articles)

Testing

JUnit 5: Dynamic Tests with TestFactory

How to write dynamic tests using @TestFactory in JUnit 5? This article explains the syntax, different return types, the test lifecycle, and potential use-cases.

09 Apr 2021

Writing Parameterized Tests in JUnit 5

Improving code quality using parameterized tests of JUnit 5! This article explains the motivation, the basic syntax, different annotations, and IDE-related actions about parameterized tests. Also, when you should or shouldn't use it and how to go further from here.

31 Jan 2021

Controlling Time with Java Clock

Use java.time.Clock to control time in your unit tests. This article will mainly focus on usage of fixed clock and offset clock.

24 May 2020

How CompletableFuture is tested in OpenJDK?

How CompletableFuture is tested in OpenJDK 14? What can we learn from it?

10 May 2020

Mockito: 3 Ways to Init Mock in JUnit 5

Initialize Mockito mock objects in JUnit 5 using MockitoExtension, MockitoAnnotations#initMocks, or Mockito#mock.

19 Apr 2020

Testing Elasticsearch With Docker And Java High Level REST Client

Testing Elasticsearch with docker and Java High Level REST Client

05 Apr 2020

Read more... (14 articles)

Concurrency

Wrap Elasticsearch Response Into CompletableFuture

Wrap Elasticsearch client response into CompletableFuture in Java for Elasticsearch transport client or Java high level REST client.

26 Jul 2020

Why Do We Need Completable Future?

Why do we need CompletableFuture? What is its strength compared to synchronous code and classic future in Java? How to remember its APIs?

26 Jun 2020

Write An Actor In Akka

How to write a new actor in Akka in Java? This post explains actor creation, message reception, and testing.

20 Jun 2020

3 Ways to Handle Exception In Completable Future

How to handle exception in CompletableFuture? This article explains the difference between handle(), whenComplete(), and exceptionally().

30 May 2020

How CompletableFuture is tested in OpenJDK?

How CompletableFuture is tested in OpenJDK 14? What can we learn from it?

10 May 2020

Asynchronous Processing in JAX-RS 2.x

Quick introduction of asynchrnous processing in JAX-RS 2.x on both server-side and client-side.

15 Mar 2020

Read more... (10 articles)

RESTful APIs

Internal Working of the GitLab API Go Client

The internal working of the GitLab API Go Client (xanzy/go-gitlab): usage, structure, request, marshaling, error handling, CI, advanced features, and more.

04 Dec 2022

OpenAPI Overview

The key concepts provided by the OpenAPI Initiative, e.g. OpenAPI spec, code generator, schema, build, api-diff, and how they may be useful for your project.

31 Oct 2022

Asynchronous Processing in JAX-RS 2.x

Quick introduction of asynchrnous processing in JAX-RS 2.x on both server-side and client-side.

15 Mar 2020

Testing JAX-RS Resources

This article explains how to set up and tear down a Grizzly Server for testing JAX-RS resources, how to create a HTTP request and assert the response using JUnit 4. And finally, the limits of testing API in reality.

18 Dec 2018

JAX-RS Client API

This post explains what is JAX-RS Client API and how to use it via Jersey Client API. We will talk about the Maven dependencies, Client, WebTarget, and HTTP response.

11 Dec 2018

Exception Handling in JAX-RS

This post explains exception mapper, how to register it in JAX-RS application programmatically or via annotation, the exception matching mechanism (nearest-superclass), and more.

03 Dec 2018

Read more... (10 articles)

Git

JGit: Config Loading Optimization

How JGit optimizes internally the configuration loading process using file snapshots and reduces unnecessary file I/O?

08 Sep 2019

Prepare Commit Message using Git Hook

Create a Git hook prepare-commit-msg for inferring JIRA ticket as commit message prefix, based on the branch name.

23 Jul 2019

Merging 20 Git Repositories

Recently, I merged 20 Git repositories into a single one while keeping the history. Here's how I did it.

09 Mar 2019

Customize Git Prompt in MinGW

Customize Git prompt to show dirty-state, untracked files, stash, upstream in your Bash console: MinGW64 (Minimalist GNU for Windows x64).

11 Nov 2018

Merging Git Repositories

Engineering story: how I merge two Git repositories and what are the hidden tasks you didn't think about.

06 Nov 2018

JGit: Protect Branches on Git Server

If you're using JGit for your Git server, you can combine Git config (.git/config) and a customized pre-receive hook to protect branches on a specific Git repository.

30 Jul 2018

Read more... (17 articles)

All Categories

If you didn't find what you want in the highlighted categories above, here are more categories to discover :D