1. Binary Search

Binary search is an efficient algorithm for finding an element from a sorted list of elements. It is a searching algorithm based on the design paradigm of divide and conquer. It gives us a pretty decent run time of O(log n) as compared to the O(n) of linear search in…

Image from here

1. Variance

Variance is the interconnection of subtyping relationship between complex types and their component types.

Variance is all about sub-typing. It tells us if a type constructor is a subtype of another type constructor. Variance defines inheritance relationships of parameterized types(types that have parameters within them).


Every programming language supports the…

This is the logo for JavaFX.

1. Overview

JavaFX is a Java library used to build Rich Internet Applications (RIA). It provides a set of graphics and media packages that enables developers to design, create, test, debug, and deploy rich client applications that operate consistently across diverse platforms.

JavaFX provides a rich graphical user interface. JavaFX has the…

Scala with Cats

1. Overview

In this tutorial, we’ll take a look at Functor type class in Cats. The idea of Functor is “something that can be mapped over”, we’ll see what is actually mapped and how. In functional programming, Functors come into play when we have types or values wrapped inside contexts or containers…


Git Flow is an abstract idea of a Git workflow. It helps with continuous software development and implementing DevOps practices. The Git Flow Workflow defines a strict branching model designed around the project release. This provides a robust framework for managing larger projects.

Git Flow is ideally suited for projects…

In my previous article Dev Tools to the Rescue — Part 1, we looked at some of the best developer tools for software development, project management, continuous delivery/integrity, designing, testing, etc.

In this article, we’ll continue with tools that are helpful for purposes like monitoring, analysis, cloud development, security, etc.


Whether you are a software developer working on someone else’s projects or you run a business yourself, utilizing the right tools of the trade is essential.

The market of software development tools is an ever-changing one and increasingly competitive. …

Photo by Kate Stone Matheson on Unsplash

If you’re new to the concept of type classes I suggest you read my other article explaining them. The Cats library makes extensive use of type classes and a basic understanding is a prerequisite for this article.

In previous articles, we talked about Semigroups and Monoids, which are abstractions that…

Photo by Chris Barbalis on Unsplash

Today we are going to deep dive into the Scala Cats again to find out about Monoids. If you haven’t already read my post about Diving into Scala Cats — Semigroups I suggest you do so now.

What are Monoids?

The Monoid extends Semigroup and adds a default or fallback value for the…

Photo by Clément Falize on Unsplash

New to Cats? No worries, go through my previous article Getting Started with Scala Cats to understand how amazing Cats is.

In this article, we will cover the concepts and implementation of Semigroups in Cats.

What are Semigroups?

In functional programming terms a Semigroup is a concept which encapsulates aggregation with an associative…

Mansi Babbar

Software Developer | Tech Blogger | Scala | Java | Akka | Reactive Microservices

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