Home

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)

Elasticsearch

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

The Decision System For Shard Allocation in Elasticsearch

Curious about how does a decision system work? This article explains the deciders for shard allocation in Elasticsearch by going through their responsibility, structure, decision making, lifecycle, testing, and more.

27 Dec 2021

Slow Query Logs In Elasticsearch

Better understand the slow queries in Elasticsearch by using the slow logs. In this article, we discuss the log structure, the thresholds, and some potential root causes.

27 Nov 2021

Elasticsearch Snapshot Plugins

Elasticsearch snapshot repository plugins for AWS, GCP, and Azure

01 Nov 2021

Elasticsearch Snapshot APIs

This article summarizes the list of APIs for "Snapshot and Restore" in Elasticsearch, which allows you to perform operations easily and navigate to official documentation if you need more detail.

25 Oct 2021

Internal Structure Of Snapshot Repository

This article takes you to the Elasticsearch snapshot repository to explore its internal structure and understand the contents and uses of different files.

04 Sep 2021

Read more... (27 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

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

JAX-RS Param Annotations

This post explains different param annotations in JAX-RS 2.1 and their use-cases, including @QueryParam, @MatrixParam, @PathParam, @HeaderParam, @CookieParam, @FormParam and @BeanParam.

27 Nov 2018

Read more... (9 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