A simple definitive guide for beginners in Go to build a REST API and running inside a docker container

Go compiler can produce a binary file which is can natively run on any machine(given its built for that). However, there are times it is more convenient to containerize your application and this tutorial will help you to build a basic RESTFul API built-in go and containerize it.

Building a Web Server in Go

We will write a simple Go application which exposes a simple greeting when a call is made to URI http:localhost:8080. In order to build this first, we will create a folder, and let's say we call it as Go-App and inside it we will create a folder called server which is the…


It's a daunting task to prepare for an interview, let alone system design but there is a better approach one can

Photo by Christina @ on Unsplash

So you have your interview with a company in which you always to longed to work say Google and you aced that pair-programming session and next comes whiteboard session which is a very subjective topic as there are no few right answers like how you solved that coding challenge but you want to ace that 1-hour session and show your abilities that you could design an efficient system to crack that job. But how can you plan your preparation for this type of interview?

In this series of posts, I will try to layout a systemic approach to ace your…


JEP’s in Java 15 that will help developers

Photo by Kelsey Curtis on Unsplash


Java 15 which came into General availability brought a very good set of 14 features. Out of those 14 features, few are additions and few are removed/disabled from current java eco-system. Here is the list of features added

  • Edwards-Curve Digital Signature Algorithm (EdDSA)
  • Sealed Classes (Preview)
  • Hidden Classes
  • Remove the Nashorn JavaScript Engine
  • Reimplement the Legacy DatagramSocket API
  • Disable and Deprecate Biased Locking
  • Pattern Matching for instanceof (Second Preview)
  • ZGC: A Scalable Low-Latency Garbage Collector
  • Text Blocks
  • Shenandoah: A Low-Pause-Time Garbage Collector
  • Remove the Solaris and SPARC Ports
  • Foreign-Memory Access API (Second Incubator)
  • Records (Second Preview)
  • Deprecate RMI Activation for…

Most often the question arises if it has to be the experienced people on the team who should review the code

Photo by Alvaro Reyes on Unsplash

Junior developers are the right people to Review Code to start with. One of the main reason being is “Code Readability”. There is a saying that “If you can’t explain it to a 6-year-old, you don’t understand it yourself”. …


Have you ever thought what's the difference between go build, go run and go install? Three almost similar go commands.

Go has three variations of similar commands go run, go build, and go install. We will see in this story what is the purpose of each command and how to use them.

Each of these commands either takes a single Go file or a list of Go files. Here in this story, we will use a Go hello world program for example to refer along the way.

// file name : hello.go
package main
import "fmt"func main(){

fmt.Println("Hello, world!")

go run

If you run the command go run hello.go in your terminal/command prompt you should see the output as Hello…


Understanding the SOLID principle while developing java is very important as…

Photo by Merlene Goulet on Unsplash

Interface Segregation Principle

Interfaces play an important role in Java programming language and they are widely used for abstraction and to support multiple inheritances.

Interface is achieved by using a keyword interface and declare methods in it. Classes can implement interfaces with the implements keyword, and then provide implementations for the declared methods. One of the design principles to keep in mind while writing interfaces is the Interface Segregation Principle.

In Interface Segregation Principle interface should not have methods that implementing classes don’t require. Implementing classes are for no reason forced to provide implementations for those methods it does not require to. …


A simple definitive guide for beginners in Go to work in environment variables


One of the principles from the twelve-factor app is store application configuration in the environment because it is most likely application config will determine the variations of deployment to various regions such as staging, production, developer environments, etc

Configurations here are such as :

  1. Database, other supporting services URL’s
  2. Application secrets

GO provides a standard os package which consists of functions that can help to work with environment variables programmatically. Below are the functions that can be used to interact with environment variables


This function sets the value into the system environment, In order to set you to need to…


There are must-know topics to get a fundamental understanding right before your next system design interview

Photo by Agnieszka Boeske on Unsplash

If you were following me from the previous blog where I have explained about the mindset and preparation method before appearing your next system design interview, you are in the right place as promised here in this following blogs.

I will list out important topics, provide a brief overview and additional reading material of fundamentals to improve your system design, problem-solving. Although it’s a big list, by no means it’s an exhaustive list. So what I’m going to do is go through them one by one and give a one-line explanation on each of the concepts. Obviously, I cannot go…


RSocket is a binary protocol for use on byte stream transports such as TCP, WebSockets, and Aeron.


RSocket (Reactive Socket) is a messaging protocol that works over TCP or Websockets. Communication modes this protocol provides are fire-and-forget, request-response, and streaming. Since RSocket is fully reactive, it's ideal for high-throughput applications.

In this post, we will explore three communications modes which are fire-and-forget, request-response and streaming and test with the RSocket Client CLI (RSC), a postman-type application but to test application over the socket.


  1. Install Java preferably version 15.
  2. Spring boot skeleton project
  3. Navigate to, select RSocket as a dependency and a stable version of spring boot version at the point of time and clicking on Generate

Rakesh Mothukuri

Sr Software eng @Wipro 🥇 I love computers 💻, travel ✈️ I write about tech👩‍💻 Website: Twitter:

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