-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
22 lines (21 loc) · 33.5 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!doctype html>
<html lang="en" dir="ltr" class="blog-wrapper blog-list-page plugin-blog plugin-id-default">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="generator" content="Docusaurus v2.0.1">
<link rel="alternate" type="application/rss+xml" href="/rss.xml" title="The Data Column RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/atom.xml" title="The Data Column Atom Feed">
<link rel="preconnect" href="https://www.google-analytics.com">
<script>window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","G-QTSVXZQKSV","auto"),ga("set","anonymizeIp",!0),ga("send","pageview")</script>
<script async src="https://www.google-analytics.com/analytics.js"></script><title data-rh="true">The Data Column | The Data Column</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://ivishalgandhi.github.io/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property="og:title" content="The Data Column | The Data Column"><meta data-rh="true" name="description" content="Blog"><meta data-rh="true" property="og:description" content="Blog"><meta data-rh="true" name="docusaurus_tag" content="blog_posts_list"><meta data-rh="true" name="docsearch:docusaurus_tag" content="blog_posts_list"><link data-rh="true" rel="canonical" href="https://ivishalgandhi.github.io/"><link data-rh="true" rel="alternate" href="https://ivishalgandhi.github.io/" hreflang="en"><link data-rh="true" rel="alternate" href="https://ivishalgandhi.github.io/" hreflang="x-default"><script data-rh="true">function maybeInsertBanner(){window.__DOCUSAURUS_INSERT_BASEURL_BANNER&&insertBanner()}function insertBanner(){var n=document.getElementById("docusaurus-base-url-issue-banner-container");if(n){n.innerHTML='\n<div id="docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseurl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">/</span> (default value)</p>\n <p>We suggest trying baseUrl = <span id="docusaurus-base-url-issue-banner-suggestion-container" style="font-weight: bold; color: green;"></span></p>\n</div>\n';var e=document.getElementById("docusaurus-base-url-issue-banner-suggestion-container"),s=window.location.pathname,r="/"===s.substr(-1)?s:s+"/";e.innerHTML=r}}window.__DOCUSAURUS_INSERT_BASEURL_BANNER=!0,document.addEventListener("DOMContentLoaded",maybeInsertBanner)</script><link rel="stylesheet" href="/assets/css/styles.8ca1ac2b.css">
<link rel="preload" href="/assets/js/runtime~main.065cac92.js" as="script">
<link rel="preload" href="/assets/js/main.d0cd64fc.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div id="docusaurus-base-url-issue-banner-container"></div><div role="region"><a href="#" class="skipToContent_fXgn">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/vishal.png" alt="logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/vishal.png" alt="logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">The Data Column</b></a><a class="navbar__item navbar__link" href="/about">About</a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" aria-label="GitHub repository"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"><div class="navbar__search searchBarContainer_NW3z"><input placeholder="Search" aria-label="Search" class="navbar__search-input"><div class="loadingRing_RJI3 searchBarLoadingRing_YnHq"><div></div><div></div><div></div><div></div></div><div class="searchHintContainer_Pkmr"><kbd class="searchHint_iIMx">ctrl</kbd><kbd class="searchHint_iIMx">K</kbd></div></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div class="main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class="row"><aside class="col col--3"><nav class="sidebar_re4s thin-scrollbar" aria-label="Blog recent posts navigation"><div class="sidebarItemTitle_pO2u margin-bottom--md">All posts</div><ul class="sidebarItemList_Yudw clean-list"><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/bi-as-code">BI as Code</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/api-clients">The Transformation of API Clients - A Strategic Analysis</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/essential-skills">Essential Skills and Tools for Aspiring Software Developers and Database Engineers</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/fav-open-source-repo">My favorite Open Source Projects in 2022</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/doc-as-code">Documentation as a code</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/rest-api-design-rules">Understanding REST API Design Rules</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/mongodb-replicaset-write-concern-read-pref">Understanding MongoDB Replicasets and Write Concern - Part 1</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/docker-sbom">Guide to Software Bill of Materials(SBoM) and Docker SBOM CLI</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/percona-mongo-replicaset-minio">How to configure Percona MongoDB Replicaset, Percona Backup Manager, Backup Agent using Docker and perform Replicaset backup, restore using S3 compatible object storage – MINIO</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/local-home-lab">Local Home Lab DNS Setup with DNSMasq and NGINX</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/sharding-mongo-docker">Configure Sharding in MongoDB on Docker Containers</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/mongodb-rs-docker-persistent-volume">MongoDB Replicaset with Persistent Volume using Docker Compose</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/create-mongodb-docker">Create MongoDB Standalone and Replica Set containers using Docker</a></li></ul></nav></aside><main class="col col--7" itemscope="" itemtype="http://schema.org/Blog"><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/bi-as-code">BI as Code</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2024-09-21T00:00:00.000Z" itemprop="datePublished">September 21, 2024</time> · <!-- -->4 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/ivishalgandhi.png" alt="Vishal Gandhi"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Vishal Gandhi</span></a></div></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>In today's data-driven world, Business Intelligence (BI) has become indispensable for organizations seeking to gain insights from their data. Traditionally, BI solutions have been associated with hefty price tags and complex implementations. However, the landscape is rapidly changing with the emergence of open-source BI solutions that are flexible in adoption, run on commodity hardware, integrate with multiple existing data sources, and leverage a code-first approach. This shift is not only making BI more accessible but also more flexible, innovative, and powerful than ever before. Open source BI solutions are democratizing data analytics, allowing organizations of all sizes to harness the power of their data. Furthermore, the integration of cutting-edge, in-memory database technologies like <a href="https://duckdb.org" target="_blank" rel="noopener noreferrer">DuckDB</a> is supercharging these solutions. DuckDB's ability to process large datasets with lightning speed, coupled with its low memory footprint and seamless integration capabilities, is enabling real-time analytics and complex data manipulations that were once the domain of expensive, enterprise-grade systems. This powerful combination of open-source BI tools and efficient in-memory databases is truly revolutionizing the way organizations approach data analysis, making sophisticated BI capabilities accessible and affordable for businesses of all sizes.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/evidence">evidence</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/streamlit">streamlit</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/rill">rill</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/bi-as-a-code">bi-as-a-code</a></li></ul></div><div class="col text--right col--3"><a aria-label="Read more about BI as Code" href="/bi-as-code"><b>Read More</b></a></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/api-clients">The Transformation of API Clients - A Strategic Analysis</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2024-08-25T00:00:00.000Z" itemprop="datePublished">August 25, 2024</time> · <!-- -->7 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/ivishalgandhi.png" alt="Vishal Gandhi"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Vishal Gandhi</span></a></div></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>The world of API development tools is experiencing a major shift, fueled by new technologies and changing developer preferences. In this blog post, I dive into the dynamic ecosystem of API clients, highlighting well-known names like Postman and Insomnia, alongside innovative open-source alternates such as <a href="https://usebruno.com" target="_blank" rel="noopener noreferrer">Bruno</a> and <a href="https://hurl.dev" target="_blank" rel="noopener noreferrer">HURL</a>. We'll explore how these developments are impacting enterprise IT strategies, boosting developer productivity, and enhancing overall business agility.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/bruno">bruno</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/hurl">hurl</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/postman">postman</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/insomnia">insomnia</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/api">api</a></li></ul></div><div class="col text--right col--3"><a aria-label="Read more about The Transformation of API Clients - A Strategic Analysis" href="/api-clients"><b>Read More</b></a></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/essential-skills">Essential Skills and Tools for Aspiring Software Developers and Database Engineers</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2024-01-21T00:00:00.000Z" itemprop="datePublished">January 21, 2024</time> · <!-- -->15 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/ivishalgandhi.png" alt="Vishal Gandhi"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Vishal Gandhi</span></a></div></div></div></div></div></header><div class="markdown" itemprop="articleBody"><h2 class="anchor anchorWithStickyNavbar_LWe7" id="introduction">Introduction<a class="hash-link" href="#introduction" title="Direct link to heading"></a></h2><p>Starting a career as a software developer in the fast-paced and ever-evolving IT industry can be both exciting and challenging. To thrive in this field, it is essential to equip yourself with the right skills, tools, and technologies. In this article, we will highlight key areas of focus that will help you establish a solid foundation as a software developer.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/career">career</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/fundamentals">fundamentals</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/essential-skills">essential-skills</a></li></ul></div><div class="col text--right col--3"><a aria-label="Read more about Essential Skills and Tools for Aspiring Software Developers and Database Engineers" href="/essential-skills"><b>Read More</b></a></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/fav-open-source-repo">My favorite Open Source Projects in 2022</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2022-12-30T00:00:00.000Z" itemprop="datePublished">December 30, 2022</time> · <!-- -->7 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/ivishalgandhi.png" alt="Vishal Gandhi"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Vishal Gandhi</span></a></div></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>Open Source is a great way to learn and contribute to the community. With a nearly endless array of open source projects available to consume and contribute to these days, Need some inspiration? Whether you’re new to the world of open source, are gearing up for Open Source in the new year, or just want to see what other folks are excited about, check out a few of my favorite open source projects i discovered during 2022.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/open-source">open-source</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/2022">2022</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/favourite-repo">favourite-repo</a></li></ul></div><div class="col text--right col--3"><a aria-label="Read more about My favorite Open Source Projects in 2022" href="/fav-open-source-repo"><b>Read More</b></a></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/doc-as-code">Documentation as a code</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2022-10-22T00:00:00.000Z" itemprop="datePublished">October 22, 2022</time> · <!-- -->5 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/ivishalgandhi.png" alt="Vishal Gandhi"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Vishal Gandhi</span></a></div></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>Documentation is the most critical activity of any product development. The engineer and user experience improve when there is up-to-date Documentation. Most often, in organizations and products, Documentation is an afterthought, and this is not a good practice. If we want more engineers to contribute to the product, Documentation should be considered as code and part of the product development. Engineers should be encouraged to write Documentation before writing the source code.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/docops">docops</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/doc-as-code">doc-as-code</a></li></ul></div><div class="col text--right col--3"><a aria-label="Read more about Documentation as a code" href="/doc-as-code"><b>Read More</b></a></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/rest-api-design-rules">Understanding REST API Design Rules</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2022-10-02T00:00:00.000Z" itemprop="datePublished">October 2, 2022</time> · <!-- -->11 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/ivishalgandhi.png" alt="Vishal Gandhi"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Vishal Gandhi</span></a></div></div></div></div></div></header><div class="markdown" itemprop="articleBody"><h2 class="anchor anchorWithStickyNavbar_LWe7" id="introduction-to-rest-api">Introduction to REST API<a class="hash-link" href="#introduction-to-rest-api" title="Direct link to heading"></a></h2><p>REST (Representational State Transfer) is an architectural style for building distributed systems. A Web API conforms to the REST architectural style, called RESTful Web API. </p><p>REST APIs are stateless, client-server, cacheable, layered systems designed around resources. The set of resources is known as the REST API's <em>resource model</em></p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/rest">rest</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/restapi">restapi</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/rest-api-design-rules">rest-api-design-rules</a></li></ul></div><div class="col text--right col--3"><a aria-label="Read more about Understanding REST API Design Rules" href="/rest-api-design-rules"><b>Read More</b></a></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/mongodb-replicaset-write-concern-read-pref">Understanding MongoDB Replicasets and Write Concern - Part 1</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2022-08-21T00:00:00.000Z" itemprop="datePublished">August 21, 2022</time> · <!-- -->7 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/ivishalgandhi.png" alt="Vishal Gandhi"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Vishal Gandhi</span></a></div></div></div></div></div></header><div class="markdown" itemprop="articleBody"><h2 class="anchor anchorWithStickyNavbar_LWe7" id="introducing-replicasets">Introducing Replicasets<a class="hash-link" href="#introducing-replicasets" title="Direct link to heading"></a></h2><p>The way to achieve fault tolerance in MongoDB is through the use of <code>replica sets</code>. </p><div></div><p>Two or more <code>secondary</code> nodes along with a <code>primary</code> node forms a replica set. Application makes all the read/write calls to the primary node which propagate all the write requests synchronously or asynchronously to the secondary nodes. </p><p>The Secondary nodes fetches the data via Oplog pull from Primary or other nodes.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/mongodb">mongodb</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/replicaset">replicaset</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/write-concern">write-concern</a></li></ul></div><div class="col text--right col--3"><a aria-label="Read more about Understanding MongoDB Replicasets and Write Concern - Part 1" href="/mongodb-replicaset-write-concern-read-pref"><b>Read More</b></a></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/docker-sbom">Guide to Software Bill of Materials(SBoM) and Docker SBOM CLI</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2022-07-09T00:00:00.000Z" itemprop="datePublished">July 9, 2022</time> · <!-- -->3 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/ivishalgandhi.png" alt="Vishal Gandhi"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Vishal Gandhi</span></a></div></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>An <strong>Software Bill of Materials (SBoM)</strong> is a formal record containing the details and supply chain relationships of various components used in building the software. These components, including libraries and modules, can be proprietary or open source,free or paid and the data can be widely available or access-restricted.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/docker-desktop">docker-desktop</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/sbom">SBOM</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/docker">docker</a></li></ul></div><div class="col text--right col--3"><a aria-label="Read more about Guide to Software Bill of Materials(SBoM) and Docker SBOM CLI" href="/docker-sbom"><b>Read More</b></a></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/percona-mongo-replicaset-minio">How to configure Percona MongoDB Replicaset, Percona Backup Manager, Backup Agent using Docker and perform Replicaset backup, restore using S3 compatible object storage – MINIO</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2022-05-29T00:00:00.000Z" itemprop="datePublished">May 29, 2022</time> · <!-- -->5 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/ivishalgandhi.png" alt="Vishal Gandhi"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Vishal Gandhi</span></a></div></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>In this blog post, i will walk you through the steps required to containerize <a href="https://github.com/percona/percona-server-mongodb" target="_blank" rel="noopener noreferrer">Percona Server for MongoDB</a>, <a href="https://github.com/percona/percona-backup-mongodb" target="_blank" rel="noopener noreferrer">Percona Backup Manager</a>, and Agent from source and configure cloud-native S3(<strong>S</strong>imple <strong>S</strong>torage <strong>S</strong>ervice) compatible distributed object storage <a href="https://min.io/" target="_blank" rel="noopener noreferrer">MINIO</a> to backup and restore Percona MongoDB snapshot backups.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/mongodb">mongodb</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/containers">containers</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/docker">docker</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/s-3">s3</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/minio">minio</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/pbm">pbm</a></li></ul></div><div class="col text--right col--3"><a aria-label="Read more about How to configure Percona MongoDB Replicaset, Percona Backup Manager, Backup Agent using Docker and perform Replicaset backup, restore using S3 compatible object storage – MINIO" href="/percona-mongo-replicaset-minio"><b>Read More</b></a></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/local-home-lab">Local Home Lab DNS Setup with DNSMasq and NGINX</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2022-04-10T00:00:00.000Z" itemprop="datePublished">April 10, 2022</time> · <!-- -->4 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/ivishalgandhi.png" alt="Vishal Gandhi"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/ivishalgandhi" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Vishal Gandhi</span></a></div></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>As I explored and set up an increased number of FOSS software using containers(Docker and LXD) and virtual machines(Multipass) in my home lab environment, I realized the difficulty in remembering the different ports the applications and containers are running. The solution to address this problem was to have a Domain Name System for the local network, which works to resolve local and external addresses with a reverse proxy to redirect calls based on DNS resolution.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/reverse-proxy">reverse-proxy</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/nginx">NGINX</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/dnsmasq">DNSMASQ</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tags/lab">Lab</a></li></ul></div><div class="col text--right col--3"><a aria-label="Read more about Local Home Lab DNS Setup with DNSMasq and NGINX" href="/local-home-lab"><b>Read More</b></a></div></footer></article><nav class="pagination-nav" aria-label="Blog list page navigation"><a class="pagination-nav__link pagination-nav__link--next" href="/page/2"><div class="pagination-nav__label">Older Entries</div></a></nav></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2024 Vishal Gandhi. Built with Docusaurus.</div></div></div></footer></div>
<script src="/assets/js/runtime~main.065cac92.js"></script>
<script src="/assets/js/main.d0cd64fc.js"></script>
</body>
</html>