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