There are a number of DevOps tools available which improves our product delivery including Jenkins, Gitlab, TeamCity, SonarQube, Jira etc. Source Code Management(SCM), build, code-analysis, deployments, Sprint progress are the areas these above mentioned tools try to target specifically. Hygieia from CapitalOne combines them and show the appropriate results on a single-pane-of-glass HTML.

Hygieia dashboards assist in achieving process transparency and therefore help establish feedback loops that are the underlying concept of lean and DevOps. They contain interactive elements which enable drill-down and linking to the connected tools.

It’s not a replacement for Gitlab or Jenkins but a tool which…

Source —

Concurrency is achieved when the app is capable to run multiple tasks at the same time. Latest A13 Bionic comes with 6 cores which means that it has the capacity to execute 6 tasks at a time. Yes, one core can execute at-most one task at at time. To learn more about the cores, please go through Cores

All the latest iphones has the capacity to run multiple tasks at a time which improves the performance of the app. But how does it do that? Let’s understand this in this post.

When we tap on the app icon on the…

If you’ve come here to read this article, one thing is certain, that you’re curious to know the truth about Truth. But in reality, truth is very complex. Many people think what they believe is the truth, be it the basis on the holy scriptures or based on some findings from others like science. But in reality, belief isn’t something which is always true(or shouldn’t be considered as truth). Most of the times we accept some entities so much that whatever they say or convey, we consider that or believe that to be true. …

Properties in Swift are used to hold some kind of data. Sometimes these properties have some kind of logic to be triggered when they’re modified. For Example - having a property which maintains the state of the cache, when it’s changed, the application needs to update the values to UserDefaults. Something like this -

In this example, when isCacheUpdated and isUserDetailsUpdated are modified, it needs to save the values to UserDefaults to maintain the state of the cache. If you notice, the logic for updating the userDefaults is repetitive and not generic. …

Often an iOS app would be running multiple threads in a process. Sometimes these threads are used to do some local computations or downloading content from the internet. We often create a background thread whenever we are doing any computation or downloading task which can be run in the background. But we often ignore the cost of creating threads.

Nowadays all the devices come up with at least 3 to 4 cores, which makes our processor executing more than one task at a moment. But utilizing these cores comes up with the cost of creating and maintaining them. …

Design patterns are typical solutions to common problems in software design. Each pattern is like a blueprint that you can customize to solve a particular design problem in your code.

One of the biggest benefits of the design patterns is that it gives developers a common vocabulary to talk about software solutions. It does define a common language which can be understood by developers all over the world

Let’s Start!!!

There is a task to design a duck pond simulation game. The game can show a large variety of duck species swimming and making a quacking sound. The old and obvious approach…


We learned the basic usages of Protocols and Delegate pattern in the first chapter. Now Let’s dive into some other topics in Protocols. If you missed Part 1 of this series, I would suggest you go through it Part 1

Generic Protocols Or Protocols with Associated Type

So why do we need generic type at first place? Let’s look at this example below

//Protocol Associated Types
enum AssetType{
case Computer
case Laptop
case Mobile
case Wifi
struct InventoryList<T> {
var items: [T]
mutating func add(item: T) {
mutating func remove() -> T {
return items.removeLast()
func isCapacityLow() -> Bool {
return items.count …

Gentle Protocols


The motive of this post to go through one of the best coding objects, Protocols. We can enhance our coding practices and architecture using Protocols. Protocols not only works as an interface for many classes but also provides you a strong architecture, which is reusable and less error-prone. We all are fond of classes, now lets dive into the universe of Protocols. Let’s begin.


Protocols are a way to specify how to use objects. They specify properties, methods which can be implemented by classes, structs, and you know one thing, they can also be implemented by enums in…


This post is aiming to help you understand the heap data structure and implement it in Swift. Prior knowledge of swift and heap are a must before we get into the implementation part.

What’s is Heap

Heap is a special type of complete binary tree where it’s parent is compared with its child nodes to give you the maximum or minimum value in the data structure.

There are two types in general.

  1. Max Heap: In Max-Heap, the parent node will always be greater than it’s child nodes. All the other nodes can be in any order
  2. Min Heap: In Min-Heap, the parent node…

Linked List


This post is all about learning linked list implementation in Swift. This post is strictly for those who are familiar with Swift and Linked list in general. So let’s get some hands-on it.

Creating Node

Ankur JAIN

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