Everyone has heard about Microservices. But do you know how to design one?

Microservices is a trending topic among software engineers today. Let’s understand how we can build truly modular, business agile IT systems with Microservices architectural style.

Microservices Concept

Microservices architecture consists of collections of light-weight, loosely-coupled services. Each service implements a single business capability. Ideally, these services should be cohesive enough to develop, test, release, deploy, scale, integrate, and maintain independently.

Formal Definition Microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. …

Deciding what to choose for your next web API design

There are so many classifications for APIs. But when it comes to web communication, we can identify two significant API types — Web Service APIs (e.g. SOAP, JSON-RPC, XML-RPC, REST) and Websocket APIs. But, what do these really mean? Let’s dive into the world of web communication protocols and discuss how to choose the best API mechanisms at the end.


HTTP is the underlying communication protocol of the World Wide Web. HTTP functions as a request-response protocol in the client-server computing model. HTTP/1.1 is the most common version of HTTP used in modern web browsers and servers. In comparison to early versions of HTTP, this version could implement critical performance optimizations and feature enhancements such as persistent and pipelined connections, chunked transfers, new header fields in request/response body etc. …

Understanding Java Memory Model is an essential learning for serious Java developers who develop, deploy, monitor, test, and tune performance of a Java application. In this blog post, we are going to discuss on Java memory model and how each part of JVM memory contributes to run our programs.

First of all, check whether you understand the following diagram of JVM architecture. If you are not familiar with it, I highly suggest you to skim through my previous post (“Java Ecosystem (Part 1): Understanding JVM Architecture“) and refresh your knowledge.

Image for post
Image for post
JVM Architecture

JVM Memory Model

You must have used some of the following JVM memory configurations when running resource-intensive Java programs. …

Understanding JVM architecture and how Java really works under the hood is an important learning for every Java developer in order to effectively make use of the Java ecosystem. This blog post series will provide you with a solid foundation on JVM internals and technologies around the Java ecosystem.


Designed in 1995 by James Gosling for Sun Microsystems, Java is a multi-paradigm (i.e. object-oriented class-based, structural, imperative, generic, reflective, concurrent) programming language which is loved by millions of developers. On any given ranking index, Java becomes the most popular language for the past 15 years. …

Becoming an expert — one book at a time

Software Architects are primarily responsible for maintaining the conceptual integrity of a software system. In order to become one of them, you need both theoretical and practical exposure in technology and business domains. With this curated list of all-time best Software Architecture books, you will be able to significantly speed up your learning process.

Disclaimer: This article does not include any affiliate links.

#1 — Get your hands dirty with some clean coding

Image for post
Image for post
GoF | Design Patterns: Elements of Reusable Object-Oriented Software [1994] by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (Gang of Four a.k.a. GoF) | Learn: 23 OOP patterns to improve the reusability and flexibility of code | Amazon: 4.7/5 (1,147) | Goodreads: 4.18/5 (9,972) | ⭐⭐⭐⭐

Let’s write meaningful log messages that everyone loves!

computer code on a screen
computer code on a screen
Image source: Author

Application logs reveal information on both internal and external events that are visible to the application during its runtime. When a bug, security breach, or anomaly is present in software deployment, application logs are the most helpful and reliable evidence to conduct a proper root cause analysis of the incident.

In this article, let’s understand how to write meaningful application log messages that everyone loves.

1. What to Log

✅ Incoming and outgoing messages

When components communicate with each other via message passing, both incoming and outgoing messages must be recorded with API endpoint URLs, request parameters, request origin and intermediary IPs, request headers, auth info, request and response bodies, business context, timestamps, and internal processing steps. …

Tips to improve the clarity and searchability of your Git commit log

List of commits
List of commits
This was me building a shopping cart app in 2017. Back then, I didn’t see the importance of commit messages because they were just one-time projects fully managed by me.


Git does not define official standards/developer guidelines for commit messages, so the commit message formats usually depend on the discretion of developers. Sometimes, this arrangement can turn your Git commit log into a total mess (especially when developers from multiple backgrounds and teams contribute to the same source code and do not follow a common convention).

$ git log --oneline -10xxxxxxx unit tests updated - good to go
xxxxxxx New customers added
xxxxxxx renew certificates - fullchain.pem & privkey.pem
xxxxxxx Merge branch 'xxxx' of bitbucket.org:xxxxx/xxx-xx …

Create great value at work during the early days of your software career

Image for post
Image for post
Background Image by Arnold Francisca on Unsplash

Junior developers are one of the biggest assets to any software company. After 5–10 years time, these young guys are the ones who decide where the company is heading to in the future. Therefore, turning them into great individual contributors is a win-win for both those developers and the company. Based on my past experiences at work, here’s my advice for you to become a successful 𝐉𝐮𝐧𝐢𝐨𝐫 𝐃𝐞𝐯𝐞𝐥𝐨𝐩𝐞𝐫 and have a rocking career ahead! 😎

#1 — Understand the product

The best chefs in the world love to make people happy by bringing their taste buds to life. To do that, these chefs must first develop good taste buds themselves and pay attention to every detail of the food end-to-end — from collecting supplies to serving the final dish to the table. …

“Be good to me, my little War Machine ❤”

Image for post
Image for post
Background Image by Arnold Francisca on Unsplash


  1. 🥇 MacOS | 🥈 Debian | 🥉Windows 10
  2. ⛔ Cleanup
  3. 🌏 Web browsers + 🔌 Dev plugins
  4. ⏲ System resources
  5. 💼 Professional IDEs
  6. ☕ Technology stacks + 🔨 Build tools
  7. 📑 Bash scripting
  8. 🔐 SSH secure access
  9. 🚀 Git version controlling
  10. 💻 Safe usage practices


When I see a newbie developer whose laptop has the OS vendor’s default desktop and pre-installed bloatware programs popping up, or he has to type the entire SSH command to access daily-using servers, I clearly know that he has gaps in his prior hands-on knowledge and sometimes can be unfit for serious work in the future. For the next few weeks, I will share tips and tricks to help him reduce the time spent on non-value-adding tasks and focus better on what matters the most. My argument is that if he can save15–30 minutes every day, then he gets 2 extra working weeks each year and can significantly reduce unnecessary stress on boring tasks. …

Creating a Debian 9.7.0 Virtual Machine on Oracle VM VirtualBox 6.0 with Guest Additions Installation


01) Install Oracle VM VirtualBox

Download the correct version of VirtualBox software for your OS from Oracle Download page and install it locally.

02) Download Debian ISO Image

If you have a stable internet connection, download a Debian ISO image for Network Install (netinst).

Image for post
Image for post

If you want to install Debian without an internet connection, download a classic bootable ISO image.


Thilina Ashen Gamage

Optimist & Product Person • Building things and learning how things work • Senior Software Engineer at Yaala Labs • Formerly MillenniumIT (LSEG Tech)

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store