<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~files/feed-premium.xsl"?>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedpress="https://feed.press/xmlns" xmlns:media="http://search.yahoo.com/mrss/" xmlns:podcast="https://podcastindex.org/namespace/1.0" version="2.0">
  <channel>
    <feedpress:locale>en</feedpress:locale>
    <feedpress:newsletterId>algorithms</feedpress:newsletterId>
    <atom:link rel="hub" href="https://feedpress.superfeedr.com/"/>
    <title>Algorithms</title>
    <atom:link href="https://feedpress.me/algorithms" rel="self" type="application/rss+xml"/>
    <link>https://vmlogger.com/algorithms/</link>
    <description>Welcome to the World of Algorithms</description>
    <lastBuildDate>Fri, 19 Apr 2024 16:54:49 +0000</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>
hourly</sy:updatePeriod>
    <sy:updateFrequency>
1</sy:updateFrequency>
    <generator>https://wordpress.org/?v=6.6.2</generator>
    <item>
      <title>Gigabytes vs. Gibibytes: Decoding the Storage Capacity Confusion</title>
      <link>https://feedpress.me/link/23668/16655160/gigabytes-vs-gibibytes-decoding-the-storage-capacity-confusion</link>
      <comments>https://vmlogger.com/algorithms/2024/04/19/gigabytes-vs-gibibytes-decoding-the-storage-capacity-confusion/#respond</comments>
      <dc:creator><![CDATA[Vishwamitra Mishra]]></dc:creator>
      <pubDate>Fri, 19 Apr 2024 16:54:49 +0000</pubDate>
      <category><![CDATA[Data Science]]></category>
      <guid isPermaLink="false">https://vmlogger.com/algorithms/?p=641</guid>
      <description><![CDATA[<p>GB and GiB: Do you think that GB and GiB are used interchangeably and they mean the same thing? Are they equal? Well, they both look simple by definition however having a long and complicated history. In this article, we will explore, all those aspects, stories, and interesting facts behind these two. Let&#8217;s imagine, you [&#8230;]</p>
<p>The post <a href="https://vmlogger.com/algorithms/2024/04/19/gigabytes-vs-gibibytes-decoding-the-storage-capacity-confusion/">Gigabytes vs. Gibibytes: Decoding the Storage Capacity Confusion</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
]]></description>
      <content:encoded><![CDATA[<p id="7574" class="pw-post-body-paragraph lh li fr lj b lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me fk bj" data-selectable-paragraph="">GB and GiB: Do you think that GB and GiB are used interchangeably and they mean the same thing? Are they equal? Well, they both look simple by definition however having a long and complicated history.</p>
<p id="de09" class="pw-post-body-paragraph lh li fr lj b lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me fk bj" data-selectable-paragraph="">In this article, we will explore, all those aspects, stories, and interesting facts behind these two.</p>
<p id="cd57" class="pw-post-body-paragraph lh li fr lj b lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me fk bj" data-selectable-paragraph="">Let&#8217;s imagine, you buy a brand new <strong class="lj fs">1TB hard drive</strong>, happily boasting about all that extra space for your photos, videos, and games. But when you plug it in and check the capacity, it shows up as only about <strong class="lj fs">931GB.</strong></p>
<p id="5c4c" class="pw-post-body-paragraph lh li fr lj b lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me fk bj" data-selectable-paragraph=""><strong class="lj fs"><em class="mf">Feel Scammed? …. Nope, not really!</em></strong></p>
<p id="7b2d" class="pw-post-body-paragraph lh li fr lj b lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me fk bj" data-selectable-paragraph="">Welcome to the confusing yet interesting story of Gigabytes (GB) vs. Gibibytes (GiB).</p>
<figure class="mj mk ml mm mn mo mg mh paragraph-image">
<div class="mg mh mi"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*BltmZ45u3f0Nv4oboom0Qg.jpeg 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*BltmZ45u3f0Nv4oboom0Qg.jpeg 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*BltmZ45u3f0Nv4oboom0Qg.jpeg 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*BltmZ45u3f0Nv4oboom0Qg.jpeg 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*BltmZ45u3f0Nv4oboom0Qg.jpeg 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*BltmZ45u3f0Nv4oboom0Qg.jpeg 1100w, https://miro.medium.com/v2/resize:fit:1024/format:webp/1*BltmZ45u3f0Nv4oboom0Qg.jpeg 1024w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 512px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*BltmZ45u3f0Nv4oboom0Qg.jpeg 640w, https://miro.medium.com/v2/resize:fit:720/1*BltmZ45u3f0Nv4oboom0Qg.jpeg 720w, https://miro.medium.com/v2/resize:fit:750/1*BltmZ45u3f0Nv4oboom0Qg.jpeg 750w, https://miro.medium.com/v2/resize:fit:786/1*BltmZ45u3f0Nv4oboom0Qg.jpeg 786w, https://miro.medium.com/v2/resize:fit:828/1*BltmZ45u3f0Nv4oboom0Qg.jpeg 828w, https://miro.medium.com/v2/resize:fit:1100/1*BltmZ45u3f0Nv4oboom0Qg.jpeg 1100w, https://miro.medium.com/v2/resize:fit:1024/1*BltmZ45u3f0Nv4oboom0Qg.jpeg 1024w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 512px" data-testid="og" /><img loading="lazy" decoding="async" class="bg kp mp c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1024/1*BltmZ45u3f0Nv4oboom0Qg.jpeg" alt="" width="512" height="512" /></picture></div>
</figure>
<h1 id="f306" class="mq mr fr be ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn bj" data-selectable-paragraph=""><strong class="al">Background information: Binary vs Decimal</strong></h1>
<p id="dd81" class="pw-post-body-paragraph lh li fr lj b lk no lm ln lo np lq lr ls nq lu lv lw nr ly lz ma ns mc md me fk bj" data-selectable-paragraph="">The root of the confusion lies in how computers and humans think about numbers. As we all know computers use the binary system (base-2), where everything is based on powers of two. We, humans, however, generally use the decimal system (base-10) using powers of ten. That is where the whole thing gets confusing.</p>
<p id="9816" class="pw-post-body-paragraph lh li fr lj b lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me fk bj" data-selectable-paragraph="">Before we dive into details, let’s understand a few key units and their conversion:</p>
<ul class="">
<li id="f732" class="lh li fr lj b lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me nt nu nv bj" data-selectable-paragraph=""><strong class="lj fs">Kilobyte (KB):</strong> Technically it means <strong class="lj fs">1024 bytes</strong> (<strong class="lj fs">2¹⁰</strong>). Note that this is again <strong class="lj fs">“Byte”</strong> and not <strong class="lj fs">“Bit”</strong>. 8 Bits = 1 Byte. But for making it simple, 1000 bytes was easier to work with.</li>
<li id="f92d" class="lh li fr lj b lk nw lm ln lo nx lq lr ls ny lu lv lw nz ly lz ma oa mc md me nt nu nv bj" data-selectable-paragraph=""><strong class="lj fs">Megabyte (MB):</strong> This should be <strong class="lj fs">1024 KB</strong>(2<strong class="lj fs">¹⁰</strong>), but marketing-wise, it was easier to deal with 1000 KB and it was used.</li>
<li id="410d" class="lh li fr lj b lk nw lm ln lo nx lq lr ls ny lu lv lw nz ly lz ma oa mc md me nt nu nv bj" data-selectable-paragraph=""><strong class="lj fs">Gigabyte (GB):</strong> Referring to the above trend it is equivalent to <strong class="lj fs">1024 MB</strong>, but often labeled as <strong class="lj fs">1000MB</strong>.</li>
</ul>
<figure class="mj mk ml mm mn mo mg mh paragraph-image">
<div class="oc od ee oe bg of" tabindex="0" role="button">
<div class="mg mh ob"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*iBz7amXzRjZOX_ABx1LO1g.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*iBz7amXzRjZOX_ABx1LO1g.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*iBz7amXzRjZOX_ABx1LO1g.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*iBz7amXzRjZOX_ABx1LO1g.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*iBz7amXzRjZOX_ABx1LO1g.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*iBz7amXzRjZOX_ABx1LO1g.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*iBz7amXzRjZOX_ABx1LO1g.png 1400w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*iBz7amXzRjZOX_ABx1LO1g.png 640w, https://miro.medium.com/v2/resize:fit:720/1*iBz7amXzRjZOX_ABx1LO1g.png 720w, https://miro.medium.com/v2/resize:fit:750/1*iBz7amXzRjZOX_ABx1LO1g.png 750w, https://miro.medium.com/v2/resize:fit:786/1*iBz7amXzRjZOX_ABx1LO1g.png 786w, https://miro.medium.com/v2/resize:fit:828/1*iBz7amXzRjZOX_ABx1LO1g.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*iBz7amXzRjZOX_ABx1LO1g.png 1100w, https://miro.medium.com/v2/resize:fit:1400/1*iBz7amXzRjZOX_ABx1LO1g.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" data-testid="og" /><img loading="lazy" decoding="async" class="bg kp mp c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1400/1*iBz7amXzRjZOX_ABx1LO1g.png" alt="" width="700" height="373" /></picture></div>
</div>
</figure>
<blockquote class="og oh oi">
<p id="4dd4" class="lh li mf lj b lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me fk bj" data-selectable-paragraph="">We can understand that a metric/decimal “kilo” equals 1,000, but a binary “kilo” equals 1,024.</p>
</blockquote>
<p id="2588" class="pw-post-body-paragraph lh li fr lj b lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me fk bj" data-selectable-paragraph="">This difference isn’t huge at smaller scales, but it compounds when grows bigger such as TB (Terrabyte), PB (Petabyte), and so on&#8230;</p>
<h2 id="0e76" class="oj mr fr be ms ok ol om mw on oo op na ls oq or os lw ot ou ov ma ow ox oy oz bj" data-selectable-paragraph=""><strong class="al">The introduction of the letter “i” by IEC in these Units</strong></h2>
<p id="4320" class="pw-post-body-paragraph lh li fr lj b lk no lm ln lo np lq lr ls nq lu lv lw nr ly lz ma ns mc md me fk bj" data-selectable-paragraph="">To avoid this confusion, The IEC (International Electrotechnical Commission) came up with a new unit for binary systems. They created new units to definitively represent powers of two (binary)</p>
<ul class="">
<li id="2451" class="lh li fr lj b lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me nt nu nv bj" data-selectable-paragraph=""><strong class="lj fs">Kibibyte (KiB):</strong> 1024 bytes</li>
<li id="081b" class="lh li fr lj b lk nw lm ln lo nx lq lr ls ny lu lv lw nz ly lz ma oa mc md me nt nu nv bj" data-selectable-paragraph=""><strong class="lj fs">Mebibyte (MiB):</strong> 1024 KiB</li>
<li id="8de0" class="lh li fr lj b lk nw lm ln lo nx lq lr ls ny lu lv lw nz ly lz ma oa mc md me nt nu nv bj" data-selectable-paragraph=""><strong class="lj fs">Gibibyte (GiB):</strong> 1024 MiB</li>
<li id="98e9" class="lh li fr lj b lk nw lm ln lo nx lq lr ls ny lu lv lw nz ly lz ma oa mc md me nt nu nv bj" data-selectable-paragraph=""><strong class="lj fs">Tebibyte (TiB):</strong> 1024 GiB, and so on…</li>
</ul>
<figure class="mj mk ml mm mn mo mg mh paragraph-image">
<div class="oc od ee oe bg of" tabindex="0" role="button">
<div class="mg mh pa"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*6nz0iXsoCWtKbLmx9Om0Lw.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*6nz0iXsoCWtKbLmx9Om0Lw.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*6nz0iXsoCWtKbLmx9Om0Lw.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*6nz0iXsoCWtKbLmx9Om0Lw.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*6nz0iXsoCWtKbLmx9Om0Lw.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*6nz0iXsoCWtKbLmx9Om0Lw.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*6nz0iXsoCWtKbLmx9Om0Lw.png 1400w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*6nz0iXsoCWtKbLmx9Om0Lw.png 640w, https://miro.medium.com/v2/resize:fit:720/1*6nz0iXsoCWtKbLmx9Om0Lw.png 720w, https://miro.medium.com/v2/resize:fit:750/1*6nz0iXsoCWtKbLmx9Om0Lw.png 750w, https://miro.medium.com/v2/resize:fit:786/1*6nz0iXsoCWtKbLmx9Om0Lw.png 786w, https://miro.medium.com/v2/resize:fit:828/1*6nz0iXsoCWtKbLmx9Om0Lw.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*6nz0iXsoCWtKbLmx9Om0Lw.png 1100w, https://miro.medium.com/v2/resize:fit:1400/1*6nz0iXsoCWtKbLmx9Om0Lw.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" data-testid="og" /><img loading="lazy" decoding="async" class="bg kp mp c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1400/1*6nz0iXsoCWtKbLmx9Om0Lw.png" alt="" width="700" height="326" /></picture></div>
</div>
</figure>
<p id="e7f6" class="pw-post-body-paragraph lh li fr lj b lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me fk bj" data-selectable-paragraph="">The aim was to have a distinction between decimal metrics such as KB, MG, GB, etc., and binary metrics. Your 1TB hard drive should be labeled 1TB (decimal systems) or 931 GiB (binary system). Easy, right?</p>
<p id="5ebb" class="pw-post-body-paragraph lh li fr lj b lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me fk bj" data-selectable-paragraph="">Chaos does not stop here…</p>
<h2 id="dd55" class="oj mr fr be ms ok ol om mw on oo op na ls oq or os lw ot ou ov ma ow ox oy oz bj" data-selectable-paragraph=""><strong class="al">The class action lawsuit against major hard-disk and storage manufacturer</strong></h2>
<p id="2389" class="pw-post-body-paragraph lh li fr lj b lk no lm ln lo np lq lr ls nq lu lv lw nr ly lz ma ns mc md me fk bj" data-selectable-paragraph="">Because of the discrepancies mentioned above like 1TB = 931 GB instead of 1000 GB — <a class="af pb" href="https://www.cnet.com/culture/gigabytes-vs-gibibytes-class-action-suit-nears-end/" target="_blank" rel="noopener ugc nofollow">The class action lawyers sued five flash memory card makers, alleging breach of contract, fraud, and violations of California’s unfair competition laws.</a> This case highlighted the real-world impact of the GB/GiB mess.</p>
<h2 id="354c" class="oj mr fr be ms ok ol om mw on oo op na ls oq or os lw ot ou ov ma ow ox oy oz bj" data-selectable-paragraph=""><strong class="al">So where do we stand today?</strong></h2>
<p id="1c6e" class="pw-post-body-paragraph lh li fr lj b lk no lm ln lo np lq lr ls nq lu lv lw nr ly lz ma ns mc md me fk bj" data-selectable-paragraph="">Unfortunately, there’s still no single standard. Here’s what you’ll usually encounter:</p>
<ul class="">
<li id="35aa" class="lh li fr lj b lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me nt nu nv bj" data-selectable-paragraph=""><strong class="lj fs">Hard Drives/Flash Storage:</strong> Listed in decimal (GB = 1000 MB) but with an actual capacity that is closer to the binary value (GiB).</li>
<li id="ad85" class="lh li fr lj b lk nw lm ln lo nx lq lr ls ny lu lv lw nz ly lz ma oa mc md me nt nu nv bj" data-selectable-paragraph=""><strong class="lj fs">RAM:</strong> Uses accurate binary measurements (GiB)</li>
<li id="32ed" class="lh li fr lj b lk nw lm ln lo nx lq lr ls ny lu lv lw nz ly lz ma oa mc md me nt nu nv bj" data-selectable-paragraph=""><strong class="lj fs">Operating Systems:</strong> A mixed bag! Some show decimal GB and some GiB. Pay attention to units.</li>
</ul>
<h2 id="9ed0" class="oj mr fr be ms ok ol om mw on oo op na ls oq or os lw ot ou ov ma ow ox oy oz bj" data-selectable-paragraph=""><strong class="al">Tips for the Savvy Tech User</strong></h2>
<ol class="">
<li id="0c1e" class="lh li fr lj b lk no lm ln lo np lq lr ls nq lu lv lw nr ly lz ma ns mc md me pc nu nv bj" data-selectable-paragraph=""><strong class="lj fs">Check the Units:</strong> Look for whether a capacity is specified as GB or GiB.</li>
<li id="b86a" class="lh li fr lj b lk nw lm ln lo nx lq lr ls ny lu lv lw nz ly lz ma oa mc md me pc nu nv bj" data-selectable-paragraph=""><strong class="lj fs">Do your Math:</strong> When in doubt, remember 1GB is about 0.93 GiB.</li>
<li id="2e48" class="lh li fr lj b lk nw lm ln lo nx lq lr ls ny lu lv lw nz ly lz ma oa mc md me pc nu nv bj" data-selectable-paragraph=""><strong class="lj fs">Support Accurate Labeling:</strong> Push for companies to adopt unambiguous labeling. Consumer awareness matters!</li>
</ol>
<p id="59d8" class="pw-post-body-paragraph lh li fr lj b lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me fk bj" data-selectable-paragraph=""><strong class="lj fs">The Final Word</strong></p>
<p id="f934" class="pw-post-body-paragraph lh li fr lj b lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me fk bj" data-selectable-paragraph="">The GB vs. GiB saga is a reminder of how the technical world sometimes clashes with a traditional use case. While it might be a minor annoyance for most, understanding the difference sheds light on the importance of accurate standards and the occasional battle between technical precision and established marketing practices.</p>
<span class="et_bloom_bottom_trigger"></span><p>The post <a href="https://vmlogger.com/algorithms/2024/04/19/gigabytes-vs-gibibytes-decoding-the-storage-capacity-confusion/">Gigabytes vs. Gibibytes: Decoding the Storage Capacity Confusion</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
<img src="https://feedpress.me/link/23668/16655160.gif" height="1" width="1"/>]]></content:encoded>
      <wfw:commentRss>https://vmlogger.com/algorithms/2024/04/19/gigabytes-vs-gibibytes-decoding-the-storage-capacity-confusion/feed/</wfw:commentRss>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>How does I’m not a robot” checkbox work?</title>
      <link>https://feedpress.me/link/23668/16621157/how-does-im-not-a-robot-checkbox-work</link>
      <comments>https://vmlogger.com/algorithms/2024/03/15/how-does-im-not-a-robot-checkbox-work/#respond</comments>
      <dc:creator><![CDATA[Vishwamitra Mishra]]></dc:creator>
      <pubDate>Fri, 15 Mar 2024 18:56:07 +0000</pubDate>
      <category><![CDATA[Algorithms]]></category>
      <category><![CDATA[Data Science]]></category>
      <guid isPermaLink="false">https://vmlogger.com/algorithms/?p=636</guid>
      <description><![CDATA[<p>When you’re prompted to tick a basic checkbox “I am not a Robot,” you might wonder: if robots can accomplish nearly anything, why would clicking this seemingly straightforward checkbox be difficult for a robot? It appears to be an ineffective measure if a robot could easily perform such a task. Isn’t it? But before diving [&#8230;]</p>
<p>The post <a href="https://vmlogger.com/algorithms/2024/03/15/how-does-im-not-a-robot-checkbox-work/">How does I’m not a robot” checkbox work?</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
]]></description>
      <content:encoded><![CDATA[<p id="49b6" class="pw-post-body-paragraph lu lv fr lw b lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr fk bj" data-selectable-paragraph="">When you’re prompted to tick a basic checkbox “I am not a Robot,” you might wonder: if robots can accomplish nearly anything, why would clicking this seemingly straightforward checkbox be difficult for a robot? It appears to be an ineffective measure if a robot could easily perform such a task.</p>
<p id="1fe2" class="pw-post-body-paragraph lu lv fr lw b lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr fk bj" data-selectable-paragraph="">Isn’t it?</p>
<p id="b91d" class="pw-post-body-paragraph lu lv fr lw b lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr fk bj" data-selectable-paragraph="">But before diving into the magic behind this mystery checkbox, let&#8217;s take a look at CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart). It was designed to differentiate between bots and human activities over the internet. This was to prevent websites and other online services from being spammed by bots.</p>
<blockquote class="ms mt mu">
<p id="9051" class="lu lv mv lw b lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr fk bj" data-selectable-paragraph=""><strong class="lw fs">Note: </strong>The term <strong class="lw fs">CAPTCHA</strong> was coined by <a class="af mw" href="https://en.wikipedia.org/wiki/Luis_von_Ahn" target="_blank" rel="noopener ugc nofollow">Luis von Ahn</a> and <a class="af mw" href="https://en.wikipedia.org/wiki/Manuel_Blum" target="_blank" rel="noopener ugc nofollow">Manuel Blum</a> at Carnegie Mellon University in 2000.</p>
</blockquote>
<h1 id="6dc0" class="mx my fr be mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu bj" data-selectable-paragraph="">Early days of CAPTCHA — <strong class="al">Text-Based Puzzles</strong></h1>
<p id="193c" class="pw-post-body-paragraph lu lv fr lw b lx nv lz ma mb nw md me mf nx mh mi mj ny ml mm mn nz mp mq mr fk bj" data-selectable-paragraph="">The concept behind the checkbox came about in the late 1990s. Initially, CAPTCHA presented users with distorted text that they had to recognize and input correctly to prove that they were human. Most of you would be familiar with these fonts and texts:</p>
<figure class="ob oc od oe of lo lg lh paragraph-image">
<div class="lg lh oa"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/0*1S9WhdPBYMXBvUVr.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*1S9WhdPBYMXBvUVr.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*1S9WhdPBYMXBvUVr.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*1S9WhdPBYMXBvUVr.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*1S9WhdPBYMXBvUVr.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*1S9WhdPBYMXBvUVr.png 1100w, https://miro.medium.com/v2/resize:fit:876/format:webp/0*1S9WhdPBYMXBvUVr.png 876w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 438px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/0*1S9WhdPBYMXBvUVr.png 640w, https://miro.medium.com/v2/resize:fit:720/0*1S9WhdPBYMXBvUVr.png 720w, https://miro.medium.com/v2/resize:fit:750/0*1S9WhdPBYMXBvUVr.png 750w, https://miro.medium.com/v2/resize:fit:786/0*1S9WhdPBYMXBvUVr.png 786w, https://miro.medium.com/v2/resize:fit:828/0*1S9WhdPBYMXBvUVr.png 828w, https://miro.medium.com/v2/resize:fit:1100/0*1S9WhdPBYMXBvUVr.png 1100w, https://miro.medium.com/v2/resize:fit:876/0*1S9WhdPBYMXBvUVr.png 876w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 438px" data-testid="og" /><img loading="lazy" decoding="async" class="bg ko lt c" role="presentation" src="https://miro.medium.com/v2/resize:fit:876/0*1S9WhdPBYMXBvUVr.png" alt="" width="438" height="317" /></picture></div><figcaption class="og oh oi lg lh oj ok be b bf z dw" data-selectable-paragraph="">Initial Captcha Images [popular ones]</figcaption></figure>
<p id="42bf" class="pw-post-body-paragraph lu lv fr lw b lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr fk bj" data-selectable-paragraph="">The idea was very simple — humans are good at reading slightly warped text, but bots at that time were not. While we all used to get annoyed by these texts, these early CAPTCHAs were relatively effective because bots were not smart yet.</p>
<h1 id="a9d0" class="mx my fr be mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu bj" data-selectable-paragraph="">Bots get smarter…</h1>
<p id="d2a2" class="pw-post-body-paragraph lu lv fr lw b lx nv lz ma mb nw md me mf nx mh mi mj ny ml mm mn nz mp mq mr fk bj" data-selectable-paragraph="">As bots get smarter, the above method of identifying humans, started becoming ineffective. Google acquired reCAPTCHA in 2009. They massively expanded the concept by using scanned images of real-world text (from books and street signs). Again who is not annoyed by this other type of test that humanity has to go through to prove they are human 😉</p>
<figure class="ob oc od oe of lo lg lh paragraph-image">
<div class="lg lh ol"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/0*pnXcNVDo6A0dcsfG.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*pnXcNVDo6A0dcsfG.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*pnXcNVDo6A0dcsfG.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*pnXcNVDo6A0dcsfG.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*pnXcNVDo6A0dcsfG.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*pnXcNVDo6A0dcsfG.png 1100w, https://miro.medium.com/v2/resize:fit:1098/format:webp/0*pnXcNVDo6A0dcsfG.png 1098w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 549px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/0*pnXcNVDo6A0dcsfG.png 640w, https://miro.medium.com/v2/resize:fit:720/0*pnXcNVDo6A0dcsfG.png 720w, https://miro.medium.com/v2/resize:fit:750/0*pnXcNVDo6A0dcsfG.png 750w, https://miro.medium.com/v2/resize:fit:786/0*pnXcNVDo6A0dcsfG.png 786w, https://miro.medium.com/v2/resize:fit:828/0*pnXcNVDo6A0dcsfG.png 828w, https://miro.medium.com/v2/resize:fit:1100/0*pnXcNVDo6A0dcsfG.png 1100w, https://miro.medium.com/v2/resize:fit:1098/0*pnXcNVDo6A0dcsfG.png 1098w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 549px" data-testid="og" /><img loading="lazy" decoding="async" class="bg ko lt c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1098/0*pnXcNVDo6A0dcsfG.png" alt="" width="549" height="800" /></picture></div>
</figure>
<p id="97a9" class="pw-post-body-paragraph lu lv fr lw b lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr fk bj" data-selectable-paragraph="">Over time, Captcha has undergone numerous iterations to maintain its effectiveness with the advancing intelligence of bots.</p>
<h1 id="22d3" class="mx my fr be mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu bj" data-selectable-paragraph="">Birth of “I’m not a robot” check box</h1>
<p id="7e3b" class="pw-post-body-paragraph lu lv fr lw b lx nv lz ma mb nw md me mf nx mh mi mj ny ml mm mn nz mp mq mr fk bj" data-selectable-paragraph="">Apart from the main purpose which is identifying bots, one of the common things was that it was getting hard for humans too and therefore annoying. To address this challenge, Google introduced the “No CAPTCHA reCAPTCHA” in 2014, which later evolved into the<strong class="lw fs"> “I’m not a robot”</strong> checkbox we see today.</p>
<p id="643d" class="pw-post-body-paragraph lu lv fr lw b lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr fk bj" data-selectable-paragraph="">With this latest advancement in reCAPTCHA, it has become so streamlined that you may question its efficacy, wondering if it’s genuinely functional or just there for amusement! 😄</p>
<blockquote class="ms mt mu">
<p id="eaa6" class="lu lv mv lw b lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr fk bj" data-selectable-paragraph="">This Google solution is like saying: “You don’t always need a complicated answer to solve tricky problems. Sometimes, a simple solution can work just as well.”</p>
</blockquote>
<figure class="ob oc od oe of lo lg lh paragraph-image">
<div class="lp lq ee lr bg ls" tabindex="0" role="button">
<div class="lg lh li"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*pDG273WJFTTcUolnVFqMNw.gif 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*pDG273WJFTTcUolnVFqMNw.gif 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*pDG273WJFTTcUolnVFqMNw.gif 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*pDG273WJFTTcUolnVFqMNw.gif 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*pDG273WJFTTcUolnVFqMNw.gif 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*pDG273WJFTTcUolnVFqMNw.gif 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*pDG273WJFTTcUolnVFqMNw.gif 1400w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*pDG273WJFTTcUolnVFqMNw.gif 640w, https://miro.medium.com/v2/resize:fit:720/1*pDG273WJFTTcUolnVFqMNw.gif 720w, https://miro.medium.com/v2/resize:fit:750/1*pDG273WJFTTcUolnVFqMNw.gif 750w, https://miro.medium.com/v2/resize:fit:786/1*pDG273WJFTTcUolnVFqMNw.gif 786w, https://miro.medium.com/v2/resize:fit:828/1*pDG273WJFTTcUolnVFqMNw.gif 828w, https://miro.medium.com/v2/resize:fit:1100/1*pDG273WJFTTcUolnVFqMNw.gif 1100w, https://miro.medium.com/v2/resize:fit:1400/1*pDG273WJFTTcUolnVFqMNw.gif 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" data-testid="og" /><img loading="lazy" decoding="async" class="bg ko lt c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1400/1*pDG273WJFTTcUolnVFqMNw.gif" alt="" width="700" height="179" /></picture></div>
</div>
</figure>
<p id="cfa7" class="pw-post-body-paragraph lu lv fr lw b lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr fk bj" data-selectable-paragraph="">When you look at that checkbox up there, you might wonder if it works.</p>
<p id="7aaa" class="pw-post-body-paragraph lu lv fr lw b lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr fk bj" data-selectable-paragraph="">But once you know the secret behind it, you’ll be amazed at how effective it is!</p>
<h1 id="bd7d" class="mx my fr be mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu bj" data-selectable-paragraph="">How does the “I’m not a robot” checkbox work?</h1>
<p id="f9da" class="pw-post-body-paragraph lu lv fr lw b lx nv lz ma mb nw md me mf nx mh mi mj ny ml mm mn nz mp mq mr fk bj" data-selectable-paragraph="">When you see this “I’m not a robot” checkbox, it’s not merely a simple checkbox you check with your mouse click. Behind the scenes, a complex algorithm is evaluating your interactions to determine whether you’re human or not. So, let&#8217;s deep dive into — how does it work?</p>
<h2 id="6890" class="om my fr be mz on oo op nd oq or os nh mf ot ou ov mj ow ox oy mn oz pa pb pc bj" data-selectable-paragraph="">1. Analyzing User Behavior [mouse hover and click behavior]:</h2>
<p id="ac66" class="pw-post-body-paragraph lu lv fr lw b lx nv lz ma mb nw md me mf nx mh mi mj ny ml mm mn nz mp mq mr fk bj" data-selectable-paragraph="">As you hover over the checkbox, move your mouse, and interact with the webpage, an invisible web of data is being collected. Every movement, click, and pause is carefully analyzed to distinguish human behavior from bot actions.</p>
<p id="eca3" class="pw-post-body-paragraph lu lv fr lw b lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr fk bj" data-selectable-paragraph="">This is also called “<strong class="lw fs"><em class="mv">Behavioral Biometrics</em></strong>”. This includes how you move your mouse, how long you hover over elements, and whether your movements exhibit human-like patterns. Bots often exhibit rapid, precise movements, whereas humans tend to move more erratically and with variations.</p>
<h2 id="96d1" class="om my fr be mz on oo op nd oq or os nh mf ot ou ov mj ow ox oy mn oz pa pb pc bj" data-selectable-paragraph="">2. Invisible Challenges:</h2>
<p id="ff8d" class="pw-post-body-paragraph lu lv fr lw b lx nv lz ma mb nw md me mf nx mh mi mj ny ml mm mn nz mp mq mr fk bj" data-selectable-paragraph="">In some cases, the checkbox may present you with invisible challenges, such as tracking your mouse movements while you navigate through the page. These challenges are designed to trick automated scripts purposefully that attempt to bypass the checkbox by mimicking human behavior.</p>
<h2 id="c820" class="om my fr be mz on oo op nd oq or os nh mf ot ou ov mj ow ox oy mn oz pa pb pc bj" data-selectable-paragraph="">3. Machine Learning:</h2>
<p id="0c1c" class="pw-post-body-paragraph lu lv fr lw b lx nv lz ma mb nw md me mf nx mh mi mj ny ml mm mn nz mp mq mr fk bj" data-selectable-paragraph="">Solution without machine learning?? Naeh it&#8217;s not cool 😀</p>
<p id="8c65" class="pw-post-body-paragraph lu lv fr lw b lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr fk bj" data-selectable-paragraph="">Behind the scenes, machine learning algorithms continuously analyze vast amounts of data to improve the accuracy of distinguishing humans from bots. These algorithms learn from patterns in user behavior and adapt over time to stay ahead of evolving bot technologies. So this CAPTCHA has become self-evolving and therefore would always be ahead in the game 😉</p>
<h2 id="f9b5" class="om my fr be mz on oo op nd oq or os nh mf ot ou ov mj ow ox oy mn oz pa pb pc bj" data-selectable-paragraph="">4. Confidence Score:</h2>
<p id="356c" class="pw-post-body-paragraph lu lv fr lw b lx nv lz ma mb nw md me mf nx mh mi mj ny ml mm mn nz mp mq mr fk bj" data-selectable-paragraph="">Based on the data collected and analyzed, the system generates a confidence score that indicates the likelihood of whether you’re human or not. If the score surpasses a certain threshold, you’ll pass the verification without any additional steps. This is like every machine learning algorithm you train.</p>
<p id="04ca" class="pw-post-body-paragraph lu lv fr lw b lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr fk bj" data-selectable-paragraph="">However, if there’s any uncertainty, you may be prompted to complete further challenges, such as selecting specific images or solving puzzles like old style.</p>
<p id="b580" class="pw-post-body-paragraph lu lv fr lw b lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr fk bj" data-selectable-paragraph="">Isn’t it genius?</p>
<p id="ca06" class="pw-post-body-paragraph lu lv fr lw b lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr fk bj" data-selectable-paragraph="">Now, every time you are prompted with this checkbox and you click, you know how complex things have happened behind the scenes.</p>
<span class="et_bloom_bottom_trigger"></span><p>The post <a href="https://vmlogger.com/algorithms/2024/03/15/how-does-im-not-a-robot-checkbox-work/">How does I’m not a robot” checkbox work?</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
<img src="https://feedpress.me/link/23668/16621157.gif" height="1" width="1"/>]]></content:encoded>
      <wfw:commentRss>https://vmlogger.com/algorithms/2024/03/15/how-does-im-not-a-robot-checkbox-work/feed/</wfw:commentRss>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Two simple Steps to Animate your Draw.io diagram</title>
      <link>https://feedpress.me/link/23668/16564007/two-simple-steps-to-animate-your-draw-io-diagram</link>
      <comments>https://vmlogger.com/algorithms/2024/02/07/two-simple-steps-to-animate-your-draw-io-diagram/#respond</comments>
      <dc:creator><![CDATA[Vishwamitra Mishra]]></dc:creator>
      <pubDate>Wed, 07 Feb 2024 14:42:42 +0000</pubDate>
      <category><![CDATA[Cloud]]></category>
      <category><![CDATA[Data Science]]></category>
      <guid isPermaLink="false">https://vmlogger.com/algorithms/?p=629</guid>
      <description><![CDATA[<p>Ever felt lost trying to understand how a website works or how your data gets from point A to point B? Flow diagrams are like the superheroes of the software and data world, saving the day by making things crystal clear! Think of them as maps for complex systems. They show how information flows, where [&#8230;]</p>
<p>The post <a href="https://vmlogger.com/algorithms/2024/02/07/two-simple-steps-to-animate-your-draw-io-diagram/">Two simple Steps to Animate your Draw.io diagram</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
]]></description>
      <content:encoded><![CDATA[<p id="b0fa" class="pw-post-body-paragraph wu wv sk ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo fy bj" data-selectable-paragraph="">Ever felt lost trying to understand how a website works or how your data gets from point A to point B? Flow diagrams are like the superheroes of the software and data world, saving the day by making things crystal clear!</p>
<p id="a374" class="pw-post-body-paragraph wu wv sk ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo fy bj" data-selectable-paragraph="">Think of them as maps for complex systems. They show how information flows, where decisions are made, and how different parts work together. It’s like having a magic decoder ring that unlocks the secrets of how things tick.</p>
<p id="f9b3" class="pw-post-body-paragraph wu wv sk ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo fy bj" data-selectable-paragraph="">Static diagrams are great for conveying information, but sometimes you need a little extra pop. Imagine visualizing a data flow with lines that flow in real-time or highlighting a specific connection with a pulsating arrow. <strong class="ww fz"><em class="xp">This is where the magic of animated lines in draw.io comes in!</em></strong></p>
<p id="c7d0" class="pw-post-body-paragraph wu wv sk ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo fy bj" data-selectable-paragraph="">Following is a sample diagram created by an AWS Architect who is trying to show the flow of information across different systems/modules/apps in AWS. <em class="xp">Note that this is a dummy sample created and not for a specific application</em></p>
<figure class="xr xs kk ki kg wo wg wh paragraph-image">
<div class="xt xu cq xv bg xw" tabindex="0" role="button">
<div class="wg wh xq"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*htiIAGm5HLVwvgt0PBFmoA.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*htiIAGm5HLVwvgt0PBFmoA.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*htiIAGm5HLVwvgt0PBFmoA.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*htiIAGm5HLVwvgt0PBFmoA.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*htiIAGm5HLVwvgt0PBFmoA.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*htiIAGm5HLVwvgt0PBFmoA.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*htiIAGm5HLVwvgt0PBFmoA.png 1400w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*htiIAGm5HLVwvgt0PBFmoA.png 640w, https://miro.medium.com/v2/resize:fit:720/1*htiIAGm5HLVwvgt0PBFmoA.png 720w, https://miro.medium.com/v2/resize:fit:750/1*htiIAGm5HLVwvgt0PBFmoA.png 750w, https://miro.medium.com/v2/resize:fit:786/1*htiIAGm5HLVwvgt0PBFmoA.png 786w, https://miro.medium.com/v2/resize:fit:828/1*htiIAGm5HLVwvgt0PBFmoA.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*htiIAGm5HLVwvgt0PBFmoA.png 1100w, https://miro.medium.com/v2/resize:fit:1400/1*htiIAGm5HLVwvgt0PBFmoA.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" data-testid="og" /><img loading="lazy" decoding="async" class="bg kp wp c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1400/1*htiIAGm5HLVwvgt0PBFmoA.png" alt="" width="700" height="426" /></picture></div>
</div>
</figure>
<p id="89fa" class="pw-post-body-paragraph wu wv sk ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo fy bj" data-selectable-paragraph="">Now, the same diagram is re-created where every static arrow is replaced with an animated pulsating arrow like this:</p>
<figure class="xr xs kk ki kg wo wg wh paragraph-image">
<div class="wg wh wi"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*KnraAh7ewuzNtcG8NU-PRQ.gif 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*KnraAh7ewuzNtcG8NU-PRQ.gif 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*KnraAh7ewuzNtcG8NU-PRQ.gif 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*KnraAh7ewuzNtcG8NU-PRQ.gif 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*KnraAh7ewuzNtcG8NU-PRQ.gif 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*KnraAh7ewuzNtcG8NU-PRQ.gif 1100w, https://miro.medium.com/v2/resize:fit:1200/format:webp/1*KnraAh7ewuzNtcG8NU-PRQ.gif 1200w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 600px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*KnraAh7ewuzNtcG8NU-PRQ.gif 640w, https://miro.medium.com/v2/resize:fit:720/1*KnraAh7ewuzNtcG8NU-PRQ.gif 720w, https://miro.medium.com/v2/resize:fit:750/1*KnraAh7ewuzNtcG8NU-PRQ.gif 750w, https://miro.medium.com/v2/resize:fit:786/1*KnraAh7ewuzNtcG8NU-PRQ.gif 786w, https://miro.medium.com/v2/resize:fit:828/1*KnraAh7ewuzNtcG8NU-PRQ.gif 828w, https://miro.medium.com/v2/resize:fit:1100/1*KnraAh7ewuzNtcG8NU-PRQ.gif 1100w, https://miro.medium.com/v2/resize:fit:1200/1*KnraAh7ewuzNtcG8NU-PRQ.gif 1200w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 600px" data-testid="og" /><img loading="lazy" decoding="async" class="bg kp wp c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1200/1*KnraAh7ewuzNtcG8NU-PRQ.gif" alt="" width="600" height="368" /></picture></div>
</figure>
<p id="67e1" class="pw-post-body-paragraph wu wv sk ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo fy bj" data-selectable-paragraph="">In my opinion, the second GIF file looks cooler than the first one.</p>
<blockquote class="xx xy xz">
<p id="0537" class="wu wv xp ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo fy bj" data-selectable-paragraph=""><strong class="ww fz">However, It would be over-enthusiastic to say that the second one gives more clarity than the first one as I do not have any scientific research data to support my argument.</strong></p>
</blockquote>
<h1 id="77bf" class="ya yb sk be yc is yd it iu iv ye iw ix iy yf iz ja jb yg jc jd je yh jf jg yi bj" data-selectable-paragraph="">How to add animated flow lines in Draw.io diagrams</h1>
<p id="41c7" class="pw-post-body-paragraph wu wv sk ww b wx yj wz xa xb yk xd xe pe yl xg xh ph ym xj xk pk yn xm xn xo fy bj" data-selectable-paragraph="">Today, we’ll explore how to easily add animation to your draw.io diagrams, taking your architecture, data flow, pipeline, or any type of diagrams to a whole new level.</p>
<h2 id="acd4" class="yo yb sk be yc pa yp pb iu pc yq pd ix pe yr pf pg ph ys pi pj pk yt pl pm yu bj" data-selectable-paragraph="">The Power of Flow Animation:</h2>
<p id="27bf" class="pw-post-body-paragraph wu wv sk ww b wx yj wz xa xb yk xd xe pe yl xg xh ph ym xj xk pk yn xm xn xo fy bj" data-selectable-paragraph="">draw.io offers a built-in feature called Flow Animation. This allows you to animate the path of any connector (line) in your diagram, mimicking the flow of data, information, or processes. It’s perfect for:</p>
<ul class="">
<li id="9a88" class="wu wv sk ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo yv yw yx bj" data-selectable-paragraph=""><strong class="ww fz">Visualizing workflows: </strong>Showcase how data moves through different stages.</li>
<li id="78c5" class="wu wv sk ww b wx yy wz xa xb yz xd xe pe za xg xh ph zb xj xk pk zc xm xn xo yv yw yx bj" data-selectable-paragraph=""><strong class="ww fz">Creating engaging presentations: </strong>Grab your audience’s attention with visually appealing animations.</li>
</ul>
<p id="e729" class="pw-post-body-paragraph wu wv sk ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo fy bj" data-selectable-paragraph="">Let’s Get Animated!</p>
<p id="2597" class="pw-post-body-paragraph wu wv sk ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo fy bj" data-selectable-paragraph="">Follow these simple steps to unleash the power of animation:</p>
<ol class="">
<li id="cb03" class="wu wv sk ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo zd yw yx bj" data-selectable-paragraph=""><strong class="ww fz">Create your diagram: </strong>Build your masterpiece using draw.io’s diverse shapes and connectors.</li>
<li id="f259" class="wu wv sk ww b wx yy wz xa xb yz xd xe pe za xg xh ph zb xj xk pk zc xm xn xo zd yw yx bj" data-selectable-paragraph=""><strong class="ww fz">Select the connector(s): </strong>Click on the line you want to animate. If you want to select all of them together, then you can right-click on the diagram and click on <strong class="ww fz"><em class="xp">Select Edges</em></strong> [Cmd+Shift+E] and all the connectors will get selected automatically</li>
<li id="99ce" class="wu wv sk ww b wx yy wz xa xb yz xd xe pe za xg xh ph zb xj xk pk zc xm xn xo zd yw yx bj" data-selectable-paragraph=""><strong class="ww fz">Activate Flow Animation: G</strong>o to the Style tab and click Properties. Scroll down and check the Flow Animation box.</li>
<li id="2fd1" class="wu wv sk ww b wx yy wz xa xb yz xd xe pe za xg xh ph zb xj xk pk zc xm xn xo zd yw yx bj" data-selectable-paragraph=""><strong class="ww fz">Customize (optional): </strong>Play with animation speed, color, and style in the Style tab.</li>
</ol>
<p id="2e91" class="pw-post-body-paragraph wu wv sk ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo fy bj" data-selectable-paragraph="">All the above steps are shown in the below gif:</p>
<figure class="xr xs kk ki kg wo wg wh paragraph-image">
<div class="wg wh wi"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*pnzmZl8odnfyXdBF1fmDDg.gif 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*pnzmZl8odnfyXdBF1fmDDg.gif 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*pnzmZl8odnfyXdBF1fmDDg.gif 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*pnzmZl8odnfyXdBF1fmDDg.gif 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*pnzmZl8odnfyXdBF1fmDDg.gif 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*pnzmZl8odnfyXdBF1fmDDg.gif 1100w, https://miro.medium.com/v2/resize:fit:1200/format:webp/1*pnzmZl8odnfyXdBF1fmDDg.gif 1200w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 600px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*pnzmZl8odnfyXdBF1fmDDg.gif 640w, https://miro.medium.com/v2/resize:fit:720/1*pnzmZl8odnfyXdBF1fmDDg.gif 720w, https://miro.medium.com/v2/resize:fit:750/1*pnzmZl8odnfyXdBF1fmDDg.gif 750w, https://miro.medium.com/v2/resize:fit:786/1*pnzmZl8odnfyXdBF1fmDDg.gif 786w, https://miro.medium.com/v2/resize:fit:828/1*pnzmZl8odnfyXdBF1fmDDg.gif 828w, https://miro.medium.com/v2/resize:fit:1100/1*pnzmZl8odnfyXdBF1fmDDg.gif 1100w, https://miro.medium.com/v2/resize:fit:1200/1*pnzmZl8odnfyXdBF1fmDDg.gif 1200w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 600px" data-testid="og" /><img loading="lazy" decoding="async" class="bg kp wp c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1200/1*pnzmZl8odnfyXdBF1fmDDg.gif" alt="" width="600" height="321" /></picture></div>
</figure>
<blockquote class="xx xy xz">
<p id="f575" class="wu wv xp ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo fy bj" data-selectable-paragraph=""><strong class="ww fz"><em class="sk">Remember: </em></strong>Animation is a powerful tool, but use it wisely. Over-animation can be distracting, so focus on key elements and maintain clarity.</p>
</blockquote>
<h1 id="f680" class="ya yb sk be yc is yd it iu iv ye iw ix iy yf iz ja jb yg jc jd je yh jf jg yi bj" data-selectable-paragraph="">How to export Animated Draw.io diagram as a GIF:</h1>
<p id="e410" class="pw-post-body-paragraph wu wv sk ww b wx yj wz xa xb yk xd xe pe yl xg xh ph ym xj xk pk yn xm xn xo fy bj" data-selectable-paragraph="">Now you have created this animated diagram but you want to export it as a gif so that you can show this animated video in your presentation and impress your boss 😃.</p>
<p id="ce7b" class="pw-post-body-paragraph wu wv sk ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo fy bj" data-selectable-paragraph="">Exporting as a GIF file is not as easy as it was to create. Draw.io has refused to provide an option to export it as a GIF. But do not worry, there are a couple of workarounds to export your animated diagram as a GIF file.</p>
<h2 id="c01b" class="yo yb sk be yc pa yp pb iu pc yq pd ix pe yr pf pg ph ys pi pj pk yt pl pm yu bj" data-selectable-paragraph="">Workaround 1: Export as HTML file and <a class="af ze" href="https://recordit.co/" target="_blank" rel="noopener ugc nofollow">RecordIt tool</a></h2>
<p id="bb6d" class="pw-post-body-paragraph wu wv sk ww b wx yj wz xa xb yk xd xe pe yl xg xh ph ym xj xk pk yn xm xn xo fy bj" data-selectable-paragraph=""><strong class="ww fz">Step 1: </strong>Export your diagram as HTML file.</p>
<p id="fbb2" class="pw-post-body-paragraph wu wv sk ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo fy bj" data-selectable-paragraph=""><strong class="ww fz">Step 2: </strong>Open your HTML file</p>
<p id="c1b2" class="pw-post-body-paragraph wu wv sk ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo fy bj" data-selectable-paragraph=""><strong class="ww fz">Step 3: </strong>Now, using the <strong class="ww fz">RecordIt</strong> application, you can record the area that you want to capture in your gif file</p>
<p id="34be" class="pw-post-body-paragraph wu wv sk ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo fy bj" data-selectable-paragraph=""><strong class="ww fz">Step 4: </strong>Once the recording is done, you should be able to see the recording video file which can be saved as a gif file too.</p>
<h2 id="dbb3" class="yo yb sk be yc pa yp pb iu pc yq pd ix pe yr pf pg ph ys pi pj pk yt pl pm yu bj" data-selectable-paragraph="">Workaround 2: Screen record and convert recorded MP4 to GIF</h2>
<p id="8329" class="pw-post-body-paragraph wu wv sk ww b wx yj wz xa xb yk xd xe pe yl xg xh ph ym xj xk pk yn xm xn xo fy bj" data-selectable-paragraph=""><strong class="ww fz">Step 1: </strong>Using any screen recording software such as <a class="af ze" href="https://support.apple.com/downloads/quicktime" target="_blank" rel="noopener ugc nofollow">Quick Time player</a></p>
<p id="6ff5" class="pw-post-body-paragraph wu wv sk ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo fy bj" data-selectable-paragraph=""><strong class="ww fz">Step 2: </strong>Using any online tool or desktop tool, convert your MP4 video or any other format video to a gif file.</p>
<h1 id="5d95" class="ya yb sk be yc is yd it iu iv ye iw ix iy yf iz ja jb yg jc jd je yh jf jg yi bj" data-selectable-paragraph="">Conclusion:</h1>
<p id="6233" class="pw-post-body-paragraph wu wv sk ww b wx yj wz xa xb yk xd xe pe yl xg xh ph ym xj xk pk yn xm xn xo fy bj" data-selectable-paragraph="">With these tips and a little creativity, you can transform your static diagrams into engaging, animated storytelling tools. So go ahead, unleash your inner animator 😃 , and let your draw.io diagrams truly come alive!</p>
<p id="a0ea" class="pw-post-body-paragraph wu wv sk ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo fy bj" data-selectable-paragraph="">Do you have any creative uses for animated lines in draw.io?</p>
<p id="732e" class="pw-post-body-paragraph wu wv sk ww b wx wy wz xa xb xc xd xe pe xf xg xh ph xi xj xk pk xl xm xn xo fy bj" data-selectable-paragraph="">Share your ideas in the comments below!</p>
<span class="et_bloom_bottom_trigger"></span><p>The post <a href="https://vmlogger.com/algorithms/2024/02/07/two-simple-steps-to-animate-your-draw-io-diagram/">Two simple Steps to Animate your Draw.io diagram</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
<img src="https://feedpress.me/link/23668/16564007.gif" height="1" width="1"/>]]></content:encoded>
      <wfw:commentRss>https://vmlogger.com/algorithms/2024/02/07/two-simple-steps-to-animate-your-draw-io-diagram/feed/</wfw:commentRss>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Knapsack Problem: Algorithms, Real-world Applications, and Python Code</title>
      <link>https://feedpress.me/link/23668/16540644/knapsack-problem-algorithms-real-world-applications-and-python-code</link>
      <comments>https://vmlogger.com/algorithms/2024/01/19/knapsack-problem-algorithms-real-world-applications-and-python-code/#respond</comments>
      <dc:creator><![CDATA[Vishwamitra Mishra]]></dc:creator>
      <pubDate>Fri, 19 Jan 2024 18:39:39 +0000</pubDate>
      <category><![CDATA[Algorithms]]></category>
      <category><![CDATA[Difficult]]></category>
      <guid isPermaLink="false">https://vmlogger.com/algorithms/?p=550</guid>
      <description><![CDATA[<p>The post <a href="https://vmlogger.com/algorithms/2024/01/19/knapsack-problem-algorithms-real-world-applications-and-python-code/">Knapsack Problem: Algorithms, Real-world Applications, and Python Code</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
]]></description>
      <content:encoded><![CDATA[<div class="et_pb_section et_pb_section_0 et_section_regular" >






<div class="et_pb_row et_pb_row_0">
<div class="et_pb_column et_pb_column_4_4 et_pb_column_0  et_pb_css_mix_blend_mode_passthrough et-last-child">




<div class="et_pb_module et_pb_text et_pb_text_0  et_pb_text_align_left et_pb_bg_layout_light">




<div class="et_pb_text_inner"><p>Dear Enthusiast,</p>
<p>Personally, this is one of my favourite algorithm. Before we jump in to the maths and computer science part of this algorithms, first let&#8217;s understand this algorithm an analogy.</p>
<h2>What is 0/1 Knapsack Problem Algorithm</h2>
<p>We will first try to understand what kind of problem does it solve. We will understand with an analogy called &#8211; <code>The Treasure Hunter's Dilemma</code><br />Imagine you are a treasure hunter on a quest to find the most valuable treasures in a limited amount of time. Your challenge is to decide which treasures to pick, considering their weights and values, while abiding by the weight capacity constraints of your treasure bag. Limited space, indicating the maximum weight your treasure chest can hold.</p></div>
</div><div class="et_pb_module et_pb_text et_pb_text_1  et_pb_text_align_left et_pb_bg_layout_light">




<div class="et_pb_text_inner"><table class=" aligncenter" style="height: 349px; width: 604px; border-style: solid; border-color: #e3e1e1;" cellpadding="5">
<tbody>
<tr style="height: 23px;">
<th style="width: 136.555px; height: 23px;">Treasures</th>
<th style="width: 60.5px; height: 23px;">Weight</th>
<th style="width: 46.8906px; height: 23px;">Value</th>
<th style="width: 300.023px; height: 261px;" rowspan="7"><div id="attachment_597" style="width: 310px" class="wp-caption aligncenter"><img data-dominant-color="b89524" data-has-transparency="true" style="--dominant-color: #b89524;" loading="lazy" decoding="async" aria-describedby="caption-attachment-597" class="wp-image-597 size-medium has-transparency" src="https://vmlogger.com/algorithms/wp-content/uploads/sites/15/2024/01/knapsack-problem-300x260.png" alt="What is Knapsack problem" width="300" height="260" /><p id="caption-attachment-597" class="wp-caption-text">What is Knapsack&#8217;s problem</p></div></th>
</tr>
<tr style="height: 36px;">
<td style="width: 136.555px; height: 36px;">Gold coins</td>
<td style="width: 60.5px; height: 36px;">5</td>
<td style="width: 46.8906px; height: 36px;">4</td>
</tr>
<tr style="height: 36px;">
<td style="width: 136.555px; height: 36px;">Jewels</td>
<td style="width: 60.5px; height: 36px;">6</td>
<td style="width: 46.8906px; height: 36px;">3</td>
</tr>
<tr style="height: 36px;">
<td style="width: 136.555px; height: 36px;">Artifacts</td>
<td style="width: 60.5px; height: 36px;">4</td>
<td style="width: 46.8906px; height: 36px;">8</td>
</tr>
<tr style="height: 36px;">
<td style="width: 136.555px; height: 36px;">Rare gems</td>
<td style="width: 60.5px; height: 36px;">8</td>
<td style="width: 46.8906px; height: 36px;">10</td>
</tr>
<tr style="height: 36px;">
<td style="width: 136.555px; height: 36px;">Antique manuscripts</td>
<td style="width: 60.5px; height: 36px;">1</td>
<td style="width: 46.8906px; height: 36px;">6</td>
</tr>
<tr style="height: 36px;">
<td style="width: 136.555px; height: 58px;">Precious metals</td>
<td style="width: 60.5px; height: 58px;">9</td>
<td style="width: 46.8906px; height: 58px;">6</td>
</tr>
</tbody>
</table></div>
</div><div class="et_pb_module et_pb_text et_pb_text_2  et_pb_text_align_left et_pb_bg_layout_light">




<div class="et_pb_text_inner"><h3>Objective</h3>
<p>Now the objective is to pick up those items which are still within your treasure bag capacity maximize the total value of the treasures, where each treasure contributes to your overall wealth or value. Such problems are solved using Knapsack Algorithm.<br />
<code>Before solving, lets understand a bit of history about Knapsack Algorithms</code></p>
<h2>History &#8211; Origin of Knapsack Problem</h2>
<p>The term &#8220;knapsack&#8221; itself has its origins in the 17th century, derived from the German word &#8220;knapzak&#8221; which translates to &#8220;food bag.&#8221; Soldiers during that time would carry rations in a bag on their backs, facing the dilemma of selecting the most essential items without exceeding the bag&#8217;s capacity. So now you understand.. why &#8220;Knapsack&#8221; problem.</p>
<p>The Knapsack Problem became more formally recognized in computer science during the mid-20th century when researchers started to explore optimization problems and algorithms. Its formulation and study gained momentum as part of the broader field of combinatorial optimization.</p>
<h2>What is the significance of <code>0/1</code> in Knapsak Problem</h2>
<p>The term &#8220;0/1&#8221; in the context of the Knapsack Problem refers to the restriction placed on the items that can be included in the knapsack. Specifically, it means that for each item, you have a binary (0 or 1) choice — either include the entire item in the knapsack or exclude it completely. There is no option to include a fraction of an item.</p>
<p>This restriction distinguishes the 0/1 Knapsack Problem from the Fractional Knapsack Problem, where items can be divided and a fraction of an item can be included in the knapsack. In the 0/1 Knapsack Problem, the decision for each item is more straightforward: it&#8217;s an all-or-nothing choice.</div>
</div><div class="et_pb_module et_pb_text et_pb_text_3  et_pb_text_align_left et_pb_bg_layout_light">




<div class="et_pb_text_inner"><h2>Solving the Treasure Hunter&#8217;s 0/1 Knapsack Problem:</h2>
<p>In Knapsack problems, there can be two types of items. They are basically dependent of types of items you are choosing. Imagine if the items are divisible like grains NOT in a packet then you can pick those items partially. In those cases, Knapsack problmes are really not useful. </p>
<h3>1. Brute Force Approach:</h3>
<p>Trying out all possible combinations of treasures to see which combination gives the maximum value.<br />
However, as the number of treasures increases, this approach becomes impractical.<br />
The time complexity of the brute-force approach to solving the Knapsack Problem is exponential, specifically O(n*2^n), where &#8216;n&#8217; is the number of items. The reason for this high complexity lies in the nature of the brute-force method.</p>
<h3>2. Greedy Approach:</h3>
<p>The possible greedy strategies to the Knapsack problem is:</p>
<ol>
<li>Choose the item that has the maximum value from the remaining items; this increases the value of the knapsack as quickly as possible.</li>
<li>Choose the lightest item from the remaining items which uses up capacity as slowly as possible allowing more items to be stuffed in the knapsack.</li>
<li>Choose the items with as high a value per weight as possible.</li>
</ol>
<p>This approach works well for fractional selections if partial inclusion of treasures is allowed. Ofcourse it has a better complexity than the brute force method. It is <code>O(n*Log(n))</code></p>
<h3>3. Dynamic Programming Approach:</h3>
<p>Create a table to store intermediate results for different subproblems.<br />
Use a recurrence relation to fill in the table and find the optimal solution efficiently.<br />
This approach is suitable for the 0/1 Knapsack Problem, ensuring that a treasure is either included or excluded.</p>
<p>Let&#8217;s first make some assumption here. I am going to pass the input in the following format. It is going to be in the form of a list of tuples. Where each tuple would contain the name of the item, weight and its value. So the input array would like something like this:</p>
<p><code>[("Jewels", 2, 4) , ("Diamond", 3, 6)....]</code></p>
<p>and the second parameter would be the total capacity of the bag i.e. an Integer value.</p>
<p>This algorithm works something like filling this matrics to maximize the outcome of chosen items.<br />
<div id="attachment_596" style="width: 1034px" class="wp-caption aligncenter"><img data-dominant-color="000000" data-has-transparency="true" style="--dominant-color: #000000;" loading="lazy" decoding="async" aria-describedby="caption-attachment-596" src="https://vmlogger.com/algorithms/wp-content/uploads/sites/15/2024/01/Knapsack_problem_dynamic_programming-1024x460.gif" width="1024" height="460" alt="knapsack problem solving" class="wp-image-596 size-large has-transparency" srcset="https://vmlogger.com/algorithms/wp-content/uploads/sites/15/2024/01/Knapsack_problem_dynamic_programming-1024x460.gif 1024w, https://vmlogger.com/algorithms/wp-content/uploads/sites/15/2024/01/Knapsack_problem_dynamic_programming-980x440.gif 980w, https://vmlogger.com/algorithms/wp-content/uploads/sites/15/2024/01/Knapsack_problem_dynamic_programming-480x216.gif 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /><p id="caption-attachment-596" class="wp-caption-text">knapsack problem solving [Source wikipedia]</p></div></div>
</div><div class="et_pb_module et_pb_text et_pb_text_4  et_pb_text_align_left et_pb_bg_layout_light">




<div class="et_pb_text_inner"><pre class="vb-language">
def knapsack_problem(items, capacity):
    '''
    knapsack_problem _summary_

    _extended_summary_

    Args:
        items (_list_): List of a tuple - (Item name, weight, value)
        capacity (_integer_): The maximum weight/capacity of the bag 

    Returns:
        _tuple_: Maximum weight could be fit in the sack and list of
                 items which are chosen for that
    '''
    num_items = len(items)
    
    # metrics with all zeros to fill all the knapsack values
    knapsack_values = [[0] * (capacity + 1) for _ in range(num_items + 1)]
    
    for i in range(1, num_items + 1):
        item_name, item_weight, item_value = items[i - 1]

        for c in range(capacity + 1):
            if item_weight > c:
                knapsack_values[i][c] = knapsack_values[i - 1][c]
            else:
                knapsack_values[i][c] = max(
                    knapsack_values[i - 1][c],
                    knapsack_values[i - 1][c - item_weight] + item_value,
                )
    max_value, selected_items = knapsack_values[num_items][capacity], []
    i, c = num_items, capacity
    while i > 0 and c > 0:
        if knapsack_values[i][c] != knapsack_values[i - 1][c]:
            selected_items.append(items[i - 1][0])
            c = c - items[i - 1][1]
        i = i - 1
    return max_value, list(reversed(selected_items))
</pre></div>
</div><div class="et_pb_module et_pb_text et_pb_text_5  et_pb_text_align_left et_pb_bg_layout_light">




<div class="et_pb_text_inner"><h3>How to run the knapsack problem function</h3>
<p>This is how you can pass the input parameters in the above function and get the expected result.</p>
<pre class="vb-language">
# Example usage:
items_list = [
    ("Gold coins", 5, 4),
    ("Jewels", 6, 3),
    ("Artifacts", 4, 8),
    ("Rare gems", 8, 10),
    ("Antique manuscripts", 1, 6),
    ("Precious metals", 9, 6)
]
knapsack_capacity = 16

result = knapsack_problem(items_list, knapsack_capacity)
print("Maximum Value:", result[0])
print("Selected Items:", result[1])
</pre></div>
</div><div class="et_pb_module et_pb_text et_pb_text_6  et_pb_text_align_left et_pb_bg_layout_light">




<div class="et_pb_text_inner"><div id="attachment_593" style="width: 1034px" class="wp-caption aligncenter"><img data-dominant-color="f0efee" data-has-transparency="true" style="--dominant-color: #f0efee;" loading="lazy" decoding="async" aria-describedby="caption-attachment-593" class="wp-image-593 size-large has-transparency" src="https://vmlogger.com/algorithms/wp-content/uploads/sites/15/2024/01/Screenshot-2024-01-19-at-18.51.18-1024x552.png" alt="Result of knapsack problem" width="1024" height="552" srcset="https://vmlogger.com/algorithms/wp-content/uploads/sites/15/2024/01/Screenshot-2024-01-19-at-18.51.18-1024x552.png 1024w, https://vmlogger.com/algorithms/wp-content/uploads/sites/15/2024/01/Screenshot-2024-01-19-at-18.51.18-980x528.png 980w, https://vmlogger.com/algorithms/wp-content/uploads/sites/15/2024/01/Screenshot-2024-01-19-at-18.51.18-480x259.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /><p id="caption-attachment-593" class="wp-caption-text">Result of knapsack problem</p></div></p>
<h2>Real-world Applications of the Knapsack Problem:</h2>
<p><code>Resource Allocation in Project Management:</code> Optimizing the allocation of resources such as time, budget, and personnel to maximize project value.<br />
<code>Financial Portfolio Optimization:</code>Selecting a combination of investments with different returns and risks to maximize the overall portfolio value.<br />
<code>Data Compression:</code>Choosing a subset of files to compress within a given storage limit, optimizing for compression ratio and preserving important data.</div>
</div>
</div>




</div>


</div>
<span class="et_bloom_bottom_trigger"></span><p>The post <a href="https://vmlogger.com/algorithms/2024/01/19/knapsack-problem-algorithms-real-world-applications-and-python-code/">Knapsack Problem: Algorithms, Real-world Applications, and Python Code</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
<img src="https://feedpress.me/link/23668/16540644.gif" height="1" width="1"/>]]></content:encoded>
      <wfw:commentRss>https://vmlogger.com/algorithms/2024/01/19/knapsack-problem-algorithms-real-world-applications-and-python-code/feed/</wfw:commentRss>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>The Internet: An Endless Reservoir of Knowledge and “Confirmation Bias”</title>
      <link>https://feedpress.me/link/23668/16532880/the-internet-an-endless-reservoir-of-knowledge-and-confirmation-bias</link>
      <comments>https://vmlogger.com/algorithms/2024/01/12/the-internet-an-endless-reservoir-of-knowledge-and-confirmation-bias/#respond</comments>
      <dc:creator><![CDATA[Vishwamitra Mishra]]></dc:creator>
      <pubDate>Fri, 12 Jan 2024 20:45:35 +0000</pubDate>
      <category><![CDATA[Data Science]]></category>
      <guid isPermaLink="false">https://vmlogger.com/algorithms/?p=515</guid>
      <description><![CDATA[<p>The Internet is an immense reservoir of knowledge. When seeking information, the majority of individuals turn to the Internet. It serves as a vast repository of wisdom, offering a wealth of resources, including articles, blog posts, expert insights, surveys, academic papers, and more, covering nearly every conceivable topic. However, this abundant resource carries the risk [&#8230;]</p>
<p>The post <a href="https://vmlogger.com/algorithms/2024/01/12/the-internet-an-endless-reservoir-of-knowledge-and-confirmation-bias/">The Internet: An Endless Reservoir of Knowledge and &#8220;Confirmation Bias&#8221;</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
]]></description>
      <content:encoded><![CDATA[<p>The Internet is an immense reservoir of knowledge. When seeking information, the majority of individuals turn to the Internet. It serves as a vast repository of wisdom, offering a wealth of resources, including articles, blog posts, expert insights, surveys, academic papers, and more, covering nearly every conceivable topic. However, this abundant resource carries the risk of <strong class="mp gp"><em class="yi">confirmation bias</em></strong>, where individuals reinforce their existing beliefs by consuming biased information. This danger is particularly universal in subjects like health and diet, where one can easily find articles supporting or refuting various claims.</p>
<div id="attachment_546" style="width: 1034px" class="wp-caption aligncenter"><img data-dominant-color="edeeef" data-has-transparency="false" style="--dominant-color: #edeeef;" loading="lazy" decoding="async" aria-describedby="caption-attachment-546" src="https://vmlogger.com/algorithms/wp-content/uploads/sites/15/2024/01/confirmation-bias-1024x1024.webp" alt="Confirmation bias" width="1024" height="1024" class="size-large wp-image-546 not-transparent" srcset="https://vmlogger.com/algorithms/wp-content/uploads/sites/15/2024/01/confirmation-bias-980x980.webp 980w, https://vmlogger.com/algorithms/wp-content/uploads/sites/15/2024/01/confirmation-bias-480x480.webp 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /><p id="caption-attachment-546" class="wp-caption-text">Confirmation bias <br />
image source : https://www.simplypsychology.org/confirmation-bias.html</p></div>
<div class="alert alert-info">
<p>Bias, in various forms, has been long ingrained in our culture and history since very early if mankind. With the advent of the internet, even search engine algorithms exhibit biases. Search engines tailor their results to provide information that aligns with your preferences, without your awareness of the underlying factors, such as your likes, dislikes, and ideological standpoint. To quote Warren Buffett, <strong class="mp gp">“What human beings excel at is interpreting new information to reaffirm their prior convictions.”</strong></p>
<p>This article describes my reflections on one of the major challenges of the internet era where there is no control over the information available to everyone. The ease of information availability makes people more biased and isolated by their ideologies.</p>
</div>
<h2>Why Confirmation Bias Poses a Challenge:</h2>
<p>Challenging one’s own thought processes or beliefs can be an uncomfortable endeavor for individuals. It is deeply ingrained in human nature to seek validation and prove oneself right at every turn. In the age of the internet, a vast sea of information is readily accessible to support and reinforce personal beliefs, often with far-reaching consequences for society. This phenomenon has had a profound and, at times, catastrophic impact on our collective well-being.</p>
<p>In today’s world, whether an ideology benefits society or not, those who subscribe to it are constantly bombarded with a barrage of materials such as news, articles, posts, speeches, and more via the internet and social media. This unrelenting reinforcement of their beliefs has given rise to the alarming trend of radicalizing individuals for political or religious purposes, all the more prevalent due to the ubiquitous presence of the internet and social media on mobile devices. As a result, individuals are more inclined to embrace fake news if it aligns with their preconceived ideologies, often at the expense of accepting verifiable, objective information.</p>
<p>Consider, for instance, the notion of a flat Earth, which lacks scientific substantiation. Despite the absence of empirical evidence, there exists a multitude of articles, videos, and posts that lend credence to this theory, along with a dedicated following who proudly identify themselves as “The Flat Earth Society.”</p>
<p>Similarly, a group of individuals denies the existence of issues like “global warming” or “climate change,”. They think these ideas are made up to control various aspects of how we live. Their convictions grow stronger as they are continually exposed to content over the internet that validates their belief system. The sheer ease of accessing such information further perpetuates the trend of isolating individuals, making it increasingly simple to manipulate, and radicalize people based on various not-scientifically proven claims. Paradoxically, the internet, often regarded as a boundless source of knowledge, can, in practice, foster ignorance rather than enlightenment.</p>
<div class="alert alert-info">
<h2>Note: I am not a whistle-blower in this matter by the way😉</h2>
</div>
<h1 id="9542" class="za yn ti am yo zb zc zd lt ze zf zg ly zh zi zj zk zl zm zn zo zp zq zr zs zt br" data-selectable-paragraph="">Case Study 1:</h1>
<p id="0627" class="pw-post-body-paragraph xo xp ti mp b xq yv xs xt xu yw xw xx lz yx xz ya me yy yc yd mj yz yf yg yh jk br" data-selectable-paragraph="">A paper published by <a class="ba jc" href="https://watermark.silverchair.com/hcx213.pdf?token=AQECAHi208BE49Ooan9kkhW_Ercy7Dm3ZL_9Cf3qfKAc485ysgAAA1QwggNQBgkqhkiG9w0BBwagggNBMIIDPQIBADCCAzYGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMBvgqUiBsnNNYM2nrAgEQgIIDB0MO8avxg0f4wkXOLFFXEpAcJhdURQ1IYNM5dhRlj-om4f69xXwz48spUTvKuJiUPHYdZePUdl7YoyW-vf3e3UQMcPwi07txsWmZmvH5uZo74usYHFClQyK2woRS_5zkAyUCbn-4gBoE82TxbiIdWY-C9AVAq27bqy381lR41L6gVOr4p8RCYQRZOdiPXUUWPMj1GSeepEQeW2sD8w9FKFNNN3BXZfqpxcRQDx7NQ4cSKWgZn9WZkUGH3J3CEkxve0e7ge7qeisf1BH35984mlvSFqehCrpUp1jdmTMlQktELN3UcZ4aLgjrz_-PVf4mjVCL-kLcj4DR5wBwJHGsl5elNFezqa1F5yFfg0ziYSVhuwSlc9bZ4LSlRF3q4VNmP88dCQ7TZIsmQIcH0Qm-jm2wO0HXFXrCsgaPFLTfzDfwaSfBXLKMvbY4DoK7JU1fGMndSb3i75J2TwtaLi73Ewxm2jXZ7H8zubZtb2EGD8B8Y1niXW7mFKn35byP6EnJXcf1A9LdRPWd_DB3eOj-YRjyGabS9MBONcL6eO-AZqfEsL2pWEjUw6xSc2tjT_d3-DAe6C-Njf7WjDYmAOydFHroJ7DPPyT3_QaLdjGHrm4VaLdOFjU2o8Z6iw6XqxsgHzB2PymkF8sb74DJKOoF3v91Mtf4Woj-__ugKz8JMNeriujBKTBNvEK0Qa7p9fgmtlKw76Z1UkFxbZqnKjL84pCVnt5bGIyKNIW_Yu6x1Ob6gt6d_rh57Wpi4YZynLNLkuTrgSimKMhQMUJKTSgaNNS9l6DmgCWLTTygFTUFjDQwKIR_sec9Llqu9UxOvDRNipzoAvhCWJGWc4Ei7jOftOacQmdhs_OjnDOdHxBvab7ittMOdpGw9R7xsFHUiGovzYevx7YemTr740tt9JzPtD9v1qK0DweeT37YrKsJ08XrT7v6eXqod730vhlcuBiEhyAErn-E7-Xb9owsWgVkBL5VDhnPqK6I3hz_TvedeSdqVlz8pLbaqM0HtdJD1XDTKNBwbR7sUsk" target="_blank" rel="noopener ugc nofollow">R. DuBroff in Nov 2017</a>, highlights — how an expert opinion can, too, be confirmation-biased and therefore can not be trusted. The Paper illustrates 6 examples of confirmation bias that appear to distort the evidence to substantiate the opinions and recommendations of experts. This sounds scary, isn’t it? The experts in these cases tried to collect the “only” data points that proved their theory and ignored the rest. Chances of such unreliable information, recommendations, and opinions are increasingly high. Confirmation bias is one of the main reasons for this.</p>
<figure class="zv zw zx zy zz xe kw kx paragraph-image">
<div class="xf xg bz xh bo xi" tabindex="0" role="button">
<div class="kw kx zu"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*NtDpyn8an8kZfQiHXHfZUw.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*NtDpyn8an8kZfQiHXHfZUw.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*NtDpyn8an8kZfQiHXHfZUw.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*NtDpyn8an8kZfQiHXHfZUw.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*NtDpyn8an8kZfQiHXHfZUw.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*NtDpyn8an8kZfQiHXHfZUw.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*NtDpyn8an8kZfQiHXHfZUw.png 1400w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*NtDpyn8an8kZfQiHXHfZUw.png 640w, https://miro.medium.com/v2/resize:fit:720/1*NtDpyn8an8kZfQiHXHfZUw.png 720w, https://miro.medium.com/v2/resize:fit:750/1*NtDpyn8an8kZfQiHXHfZUw.png 750w, https://miro.medium.com/v2/resize:fit:786/1*NtDpyn8an8kZfQiHXHfZUw.png 786w, https://miro.medium.com/v2/resize:fit:828/1*NtDpyn8an8kZfQiHXHfZUw.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*NtDpyn8an8kZfQiHXHfZUw.png 1100w, https://miro.medium.com/v2/resize:fit:1400/1*NtDpyn8an8kZfQiHXHfZUw.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" data-testid="og" /><img loading="lazy" decoding="async" class="bo wo xj c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1400/1*NtDpyn8an8kZfQiHXHfZUw.png" alt="" width="700" height="261" /></picture></div>
</div><figcaption class="xk ij xl kw kx xm xn am b bn ah aj" data-selectable-paragraph="">Screenshot of the table published in the R. DuBroff Paper in Nov. 2017</figcaption></figure>
<h1 id="eaea" class="za yn ti am yo zb zc zd lt ze zf zg ly zh zi zj zk zl zm zn zo zp zq zr zs zt br" data-selectable-paragraph="">Case Study 2:</h1>
<p id="d2f1" class="pw-post-body-paragraph xo xp ti mp b xq yv xs xt xu yw xw xx lz yx xz ya me yy yc yd mj yz yf yg yh jk br" data-selectable-paragraph="">This study was done quite recently. This was <a class="ba jc" href="https://pubmed.ncbi.nlm.nih.gov/34840520/" target="_blank" rel="noopener ugc nofollow">published in Nov 2021</a> illustrating how confirmation bias views on the internet induced polarization during Covid 19. This study draws on how manifestations of confirmation bias contribute to the development of echo chambers in supply chain information sharing during the COVID-19 pandemic. While social media played a big role in providing a helping hand to the needy, one can not deny its role in polarizing the views on the COVID-19 pandemic.</p>
<p id="7be6" class="pw-post-body-paragraph xo xp ti mp b xq xr xs xt xu xv xw xx lz xy xz ya me yb yc yd mj ye yf yg yh jk br" data-selectable-paragraph="">Here I am quoting, as-is, the abstract from this case study published.</p>
<div class="alert alert-info">
<p>Social media has played a pivotal role in polarising views on politics, climate change, and more recently, the Covid-19 pandemic. Social media induced polarisation (SMIP) poses serious challenges to society as it could enable ‘digital wildfires’ that can wreak havoc worldwide. While the effects of SMIP have been extensively studied, there is limited understanding of the interplay between two key components of this phenomenon: confirmation bias (reinforcing one’s attitudes and beliefs) and echo chambers (i.e., hear their own voice). This paper addresses this knowledge deficit by exploring how manifestations of confirmation bias contributed to the development of ‘echo chambers’ at the height of the Covid-19 pandemic. Thematic analysis of data collected from 35 participants involved in supply chain information processing forms the basis of a conceptual model of SMIP and four key cross-cutting propositions emerging from the data that have implications for research and practice.</p>
</div>
<h1>My observation:</h1>
<p>During the COVID-19 pandemic, there was so much information being shared about the coronavirus, its origin, Vaccines, etc. I could broadly categorize my surroundings into two groups —</p>
<ol class="">
<li>one who believed the coronavirus pandemic was a political stunt across the world by the big political leaders and corporations.</li>
<li>The second was too scared and considered it the end of the world.</li>
</ol>
<p>There was a massive information circulated over social media to form your opinion and reinforce it in whichever group you want to belong to. The “truth”, perhaps, lies <em class="yi">in-between</em>/<em class="yi">far from</em> the above two beliefs.</p>
<p id="bfca" class="pw-post-body-paragraph xo xp ti mp b xq xr xs xt xu xv xw xx lz xy xz ya me yb yc yd mj ye yf yg yh jk br" data-selectable-paragraph="">During the pandemic, there was enough content being produced over the internet and social media to support the beliefs of both groups. One can form one&#8217;s opinion and reinforce it in whichever group one wants to belong to. But the “truth”, perhaps, lies <em class="yi">in-between</em>/<em class="yi">far from</em> the above two beliefs. During the year 2020–21, the Pandemic caused a huge loss in terms of human life as well as the economy. There was so much loss due to the misinformation being shared across social media platforms and tools such as Facebook, Twitter, wiki, etc. Due to the misinformation shared about the virus, vaccinations, precautionary measures, etc., huge effort had to be spent in order to convince people to follow them.</p>
<h1 id="5efa" class="za yn ti am yo zb zc zd lt ze zf zg ly zh zi zj zk zl zm zn zo zp zq zr zs zt br" data-selectable-paragraph="">Discussion</h1>
<p id="bf42" class="pw-post-body-paragraph xo xp ti mp b xq yv xs xt xu yw xw xx lz yx xz ya me yy yc yd mj yz yf yg yh jk br" data-selectable-paragraph="">In this article, mostly, I have been discussing and highlighting all the challenges that occur due to <strong class="mp gp"><em class="yi">Confirmation Bias</em></strong>. The impact of confirmation bias has much more than I have outlined here. Although I do not have a <strong class="mp gp"><em class="yi">perfect solution</em></strong> to eradicate the confirmation bias view from the internet, before thinking of a solution, I would like to categorize this bias into different levels where they are induced and how could “possibly” be reduced by using <strong class="mp gp"><em class="yi">Knowledge Management tools</em></strong> such as <strong class="mp gp"><em class="yi">Semantic Web</em></strong>, <strong class="mp gp">Linked Open Data Knowledge repository</strong>. Although the removal of confirmation bias completely is close to impossible, the following are a few solutions that can be tried out to reduce the confirmation-biased information available over the internet.</p>
<h1 id="c9cc" class="za yn ti am yo zb zc zd lt ze zf zg ly zh zi zj zk zl zm zn zo zp zq zr zs zt br" data-selectable-paragraph="">Possible Solutions</h1>
<h2 id="c126" class="ym yn ti am yo lp yp lq lt lu yq lv ly lz yr ma md me ys mf mi mj yt mk mn yu br" data-selectable-paragraph=""><em class="abi">1. Search Engine’s Algorithms and Open LinkedData</em></h2>
<p id="3642" class="pw-post-body-paragraph xo xp ti mp b xq yv xs xt xu yw xw xx lz yx xz ya me yy yc yd mj yz yf yg yh jk br" data-selectable-paragraph="">The very first category is <strong class="mp gp"><em class="yi">“serving content to the users based on their likes and dislikes”</em></strong>. At first, however, it may sound like a great feature but not always.</p>
<p id="f20d" class="pw-post-body-paragraph xo xp ti mp b xq xr xs xt xu xv xw xx lz xy xz ya me yb yc yd mj ye yf yg yh jk br" data-selectable-paragraph=""><strong class="mp gp"><em class="yi">An Example:</em></strong> You like or admire a political ideology called “X”. You simply agree with a few of their actions in the past and hence you incline this particular ideology “X”. Search engines, social media platforms, etc. start serving you content that directly or indirectly supports the same ideology. Eventually, it will condition you to become a believer, simply because you were exposed to only those contents which are in favor of “X”. You did not get a chance to evaluate against other ideologies available because they are not automatically served you. Sometimes, even worse, search engines start serving you negative about other ideologies that make you believe even more strongly in the one that is your favorite. Although, at first, as a user, you had a slight inclination towards the ideology “X” but, now you are completely biased because of such content served by the computers.</p>
<p id="52c1" class="pw-post-body-paragraph xo xp ti mp b xq xr xs xt xu xv xw xx lz xy xz ya me yb yc yd mj ye yf yg yh jk br" data-selectable-paragraph=""><em class="yi">In my opinion,</em> as it is well quoted in one of the papers published in 2018 — <strong class="mp gp"><em class="yi">Baeza-Yates 2018 </em></strong>— “<strong class="mp gp"><em class="yi">Any remedy for bias starts with awareness of its existence</em></strong>”. The developers must be trained and made aware of such biases and their consequences. Awareness about “confirmation bias” and its impact would be the first step towards finding the solution. Search engines, social media platforms, or tools algorithms should not apply any implicit filters before serving content to the users based on their past likes or dislikes. Sometimes, users are unknowingly trapped in a confirmation bias view and isolate themselves into some ideology.</p>
<p id="cd38" class="pw-post-body-paragraph xo xp ti mp b xq xr xs xt xu xv xw xx lz xy xz ya me yb yc yd mj ye yf yg yh jk br" data-selectable-paragraph="">As quoted in a paper published in 2011, <a class="ba jc" href="http://dx.doi.org/10.2200/S00334ED1V01Y201102WBE001" target="_blank" rel="noopener ugc nofollow"><strong class="mp gp"><em class="yi">Heath and Bizer</em></strong></a>, — “<strong class="mp gp"><em class="yi">Just as the World Wide Web has revolutionized the way we connect and consume documents, so can it revolutionize the way we discover, access, integrate, and use data</em></strong>”. LinkedData uses the same principle as search engine indexing. Search engines can use Open LinkedData to bring information and facts about the topic shared by the experts and publishers. The results from these experts can help in reducing the confirmation bias as these results are not influenced by the user’s behavior rather it is based on an expert’s opinion.</p>
<h2 id="4bf8" class="ym yn ti am yo lp yp lq lt lu yq lv ly lz yr ma md me ys mf mi mj yt mk mn yu br" data-selectable-paragraph=""><em class="abi">2: Use of Semantic Web and Artificial Intelligence</em></h2>
<p id="ea75" class="pw-post-body-paragraph xo xp ti mp b xq yv xs xt xu yw xw xx lz yx xz ya me yy yc yd mj yz yf yg yh jk br" data-selectable-paragraph="">Knowledge representation using semantic web technology can help organize all the information available over the internet. Organized knowledge representation can help “Artificial intelligence” to perform better and provide users with information which are “facts” or at least closure to “facts”. Whether or not the information is “fact”, can be categorized based on — multiple factors such as the publishers of the content, the organization which has published it, etc. Fact-checking processes using the Semantic Web and Artificial Intelligence can be implemented.</p>
<figure class="zv zw zx zy zz xe kw kx paragraph-image">
<div class="kw kx abj"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*Gucm-3-VI1xbOcjSNUYW6g.jpeg 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*Gucm-3-VI1xbOcjSNUYW6g.jpeg 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*Gucm-3-VI1xbOcjSNUYW6g.jpeg 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*Gucm-3-VI1xbOcjSNUYW6g.jpeg 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*Gucm-3-VI1xbOcjSNUYW6g.jpeg 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*Gucm-3-VI1xbOcjSNUYW6g.jpeg 1100w, https://miro.medium.com/v2/resize:fit:450/format:webp/1*Gucm-3-VI1xbOcjSNUYW6g.jpeg 450w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 225px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*Gucm-3-VI1xbOcjSNUYW6g.jpeg 640w, https://miro.medium.com/v2/resize:fit:720/1*Gucm-3-VI1xbOcjSNUYW6g.jpeg 720w, https://miro.medium.com/v2/resize:fit:750/1*Gucm-3-VI1xbOcjSNUYW6g.jpeg 750w, https://miro.medium.com/v2/resize:fit:786/1*Gucm-3-VI1xbOcjSNUYW6g.jpeg 786w, https://miro.medium.com/v2/resize:fit:828/1*Gucm-3-VI1xbOcjSNUYW6g.jpeg 828w, https://miro.medium.com/v2/resize:fit:1100/1*Gucm-3-VI1xbOcjSNUYW6g.jpeg 1100w, https://miro.medium.com/v2/resize:fit:450/1*Gucm-3-VI1xbOcjSNUYW6g.jpeg 450w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 225px" data-testid="og" /><img loading="lazy" decoding="async" class="bo wo xj c" role="presentation" src="https://miro.medium.com/v2/resize:fit:450/1*Gucm-3-VI1xbOcjSNUYW6g.jpeg" alt="" width="225" height="225" /></picture></div>
</figure>
<p id="9726" class="pw-post-body-paragraph xo xp ti mp b xq xr xs xt xu xv xw xx lz xy xz ya me yb yc yd mj ye yf yg yh jk br" data-selectable-paragraph="">I will be delighted to hear your opinion about this challenge, its consequences, and its solutions. Again, the whole idea of this article is “<strong class="mp gp"><em class="yi">NOT TO BE CONFIRMATION BIASED</em></strong>” while engaging any kind of research, articles, etc. Therefore, different thoughts and ideas are more welcomed than simply seconding my opinion on this topic <a class="ba jc" href="https://emojipedia.org/face-with-tears-of-joy" target="_blank" rel="noopener ugc nofollow">😂</a></p>
<h1 id="1762" class="za yn ti am yo zb zc zd lt ze zf zg ly zh zi zj zk zl zm zn zo zp zq zr zs zt br" data-selectable-paragraph="">References</h1>
<ul class="">
<li id="c616" class="xo xp ti mp b xq yv xs xt xu yw xw xx lz yx xz ya me yy yc yd mj yz yf yg yh abk abb abc br" data-selectable-paragraph="">Baeza-Yates 2018. <a class="ba jc" href="http://dx.doi.org/10.1145/3209581" target="_blank" rel="noopener ugc nofollow">Bias on the Web.</a> Communications of the ACM, 61(6).</li>
<li id="9878" class="xo xp ti mp b xq abd xs xt xu abe xw xx lz abf xz ya me abg yc yd mj abh yf yg yh abk abb abc br" data-selectable-paragraph="">Modgil, Sachin et al. <a class="ba jc" href="https://www.ncbi.nlm.nih.gov/pubmed/34840520" target="_blank" rel="noopener ugc nofollow">A Confirmation Bias View on Social Media Induced Polarisation During Covid-19.</a> Information Systems Frontiers (2021): 1–25.</li>
<li id="df0d" class="xo xp ti mp b xq abd xs xt xu abe xw xx lz abf xz ya me abg yc yd mj abh yf yg yh abk abb abc br" data-selectable-paragraph="">Meppelink, Corine S. et al. <a class="ba jc" href="https://www.tandfonline.com/doi/pdf/10.1080/10810730.2019.1583701?needAccess=true" target="_blank" rel="noopener ugc nofollow">“I was Right about Vaccination”: Confirmation Bias and Health Literacy in Online Health Information Seeking.”</a> Journal of Health Communication 24 (2019): 129–140.</li>
<li id="10b0" class="xo xp ti mp b xq abd xs xt xu abe xw xx lz abf xz ya me abg yc yd mj abh yf yg yh abk abb abc br" data-selectable-paragraph="">DuBroff, Robert. <a class="ba jc" href="https://academic.oup.com/qjmed/article-pdf/111/10/687/25880545/hcx213.pdf" target="_blank" rel="noopener ugc nofollow">“Confirmation bias, conflicts of interest and cholesterol guidance: can we trust expert opinions?”</a> QJM : monthly journal of the Association of Physicians 111 10 (2018): 687–689 .</li>
<li id="00d3" class="xo xp ti mp b xq abd xs xt xu abe xw xx lz abf xz ya me abg yc yd mj abh yf yg yh abk abb abc br" data-selectable-paragraph="">Berners-Lee, Hendler, and Lassila. 2001. <a class="ba jc" href="http://www.scientificamerican.com/article/the-semantic-web/" target="_blank" rel="noopener ugc nofollow">The Semantic Web.</a> Scientific American, 284(5).</li>
<li id="084c" class="xo xp ti mp b xq abd xs xt xu abe xw xx lz abf xz ya me abg yc yd mj abh yf yg yh abk abb abc br" data-selectable-paragraph="">Heath and Bizer. 2011. <a class="ba jc" href="http://dx.doi.org/10.2200/S00334ED1V01Y201102WBE001" target="_blank" rel="noopener ugc nofollow">Chapter 1 of Linked Data: Evolving the Web into a Global Data Space.</a> Synthesis Lectures on the Semantic Web: Theory and Technology, 1:1, 1–136. Morgan &amp; Claypool.</li>
</ul>
<span class="et_bloom_bottom_trigger"></span><p>The post <a href="https://vmlogger.com/algorithms/2024/01/12/the-internet-an-endless-reservoir-of-knowledge-and-confirmation-bias/">The Internet: An Endless Reservoir of Knowledge and &#8220;Confirmation Bias&#8221;</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
<img src="https://feedpress.me/link/23668/16532880.gif" height="1" width="1"/>]]></content:encoded>
      <wfw:commentRss>https://vmlogger.com/algorithms/2024/01/12/the-internet-an-endless-reservoir-of-knowledge-and-confirmation-bias/feed/</wfw:commentRss>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>How to create an “Interactive walkthrough” tutorial in Cloudshell</title>
      <link>https://feedpress.me/link/23668/16507814/how-to-create-an-interactive-walkthrough-tutorial-in-cloudshell</link>
      <comments>https://vmlogger.com/algorithms/2023/12/25/how-to-create-an-interactive-walkthrough-tutorial-in-cloudshell/#respond</comments>
      <dc:creator><![CDATA[Vishwamitra Mishra]]></dc:creator>
      <pubDate>Mon, 25 Dec 2023 10:16:25 +0000</pubDate>
      <category><![CDATA[Cloud]]></category>
      <guid isPermaLink="false">https://vmlogger.com/algorithms/?p=532</guid>
      <description><![CDATA[<p>While working on a Google open-source — Data Quality Monitor, I was introduced to Google’s interactive walkthrough by one of my colleagues Niels Overwijn while I was creating a step-by-step tutorial in Github’s Readme.md file for deploying the application in Google Cloud. It immediately caught my attention as it is so simple yet powerful tool. Just by exploring its simple documentation by [&#8230;]</p>
<p>The post <a href="https://vmlogger.com/algorithms/2023/12/25/how-to-create-an-interactive-walkthrough-tutorial-in-cloudshell/">How to create an “Interactive walkthrough” tutorial in Cloudshell</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
]]></description>
      <content:encoded><![CDATA[<p id="3841" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">While working on a Google open-source — <a class="af nr" href="https://github.com/google/data-quality-monitor" target="_blank" rel="noopener ugc nofollow">Data Quality Monitor</a>, I was introduced to Google’s <strong class="abn ml"><em class="adi">interactive walkthrough by one of my colleagues </em></strong><a class="af nr" href="https://www.linkedin.com/in/nielsoverwijn/" target="_blank" rel="noopener ugc nofollow">Niels Overwijn</a> while I was creating a step-by-step tutorial in Github’s <em class="adi">Readme.md</em> file for deploying the application in Google Cloud.</p>
<p id="720c" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">It immediately caught my attention as <strong class="abn ml"><em class="adi">it is so simple yet powerful tool</em></strong>. Just by exploring its simple documentation by Google Cloud, I could start creating one for my project.</p>
<p id="5766" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">In the Data Quality Monitor repository, if you look in the readme file, there is a cloud shell button, clicking on which you will be automatically taken to your Google Cloud account, your cloud shell will be instantiated and the repository will be cloned in the workspace and interactive tutorial will be launched as shown in the below picture.</p>
<figure class="acj ack acl acm acn aco acg ach paragraph-image">
<div class="acp acq cq acr bg acs" tabindex="0" role="button">
<div class="acg ach alj"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*8evO4TIvyhUfo1rh02E_Jw.gif 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*8evO4TIvyhUfo1rh02E_Jw.gif 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*8evO4TIvyhUfo1rh02E_Jw.gif 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*8evO4TIvyhUfo1rh02E_Jw.gif 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*8evO4TIvyhUfo1rh02E_Jw.gif 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*8evO4TIvyhUfo1rh02E_Jw.gif 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*8evO4TIvyhUfo1rh02E_Jw.gif 1400w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*8evO4TIvyhUfo1rh02E_Jw.gif 640w, https://miro.medium.com/v2/resize:fit:720/1*8evO4TIvyhUfo1rh02E_Jw.gif 720w, https://miro.medium.com/v2/resize:fit:750/1*8evO4TIvyhUfo1rh02E_Jw.gif 750w, https://miro.medium.com/v2/resize:fit:786/1*8evO4TIvyhUfo1rh02E_Jw.gif 786w, https://miro.medium.com/v2/resize:fit:828/1*8evO4TIvyhUfo1rh02E_Jw.gif 828w, https://miro.medium.com/v2/resize:fit:1100/1*8evO4TIvyhUfo1rh02E_Jw.gif 1100w, https://miro.medium.com/v2/resize:fit:1400/1*8evO4TIvyhUfo1rh02E_Jw.gif 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" data-testid="og" /><img loading="lazy" decoding="async" class="bg il act c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1400/1*8evO4TIvyhUfo1rh02E_Jw.gif" alt="" width="700" height="394" /></picture></div>
</div>
</figure>
<p id="6cbc" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">I figured, “Why not share this gem with all of you?” So, without further ado, let’s dive into what an interactive walkthrough in CloudShell is all about.</p>
<h1 id="949c" class="acu acv wz be acw hm acx hn ho hp acy hq hr hs acz ht hu hv ada hw hx hy adb hz ia adc bj" data-selectable-paragraph="">What is an interactive walkthrough in Cloud Shell?</h1>
<p id="9089" class="pw-post-body-paragraph abl abm wz abn b abo add abq abr abs ade abu abv mq adf abx aby mu adg aca acb my adh acd ace acf tf bj" data-selectable-paragraph="">An interactive walkthrough in Cloud Shell is a step-by-step guide to using Cloud Shell and Google Cloud products to complete a specific task. <strong class="abn ml"><em class="adi">Walkthroughs are written in Markdown</em></strong> and can include text, code, images, and videos. Users can run commands directly from the walkthrough to follow along and perform or learn any action that the provider wants them to perform.</p>
<h1 id="fd52" class="acu acv wz be acw hm acx hn ho hp acy hq hr hs acz ht hu hv ada hw hx hy adb hz ia adc bj" data-selectable-paragraph="">Why create an interactive walkthrough for your GitHub repository?</h1>
<p id="1e31" class="pw-post-body-paragraph abl abm wz abn b abo add abq abr abs ade abu abv mq adf abx aby mu adg aca acb my adh acd ace acf tf bj" data-selectable-paragraph="">There are several benefits to creating an interactive walkthrough for your GitHub repository:</p>
<ol class="">
<li id="cd30" class="abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf adk adl adm bj" data-selectable-paragraph=""><strong class="abn ml">Reduce the installation/learning curve:</strong> Interactive walkthroughs can help users get started with your project quickly and easily. By providing step-by-step instructions, you can help users learn how to use your project’s features and avoid common pitfalls.</li>
<li id="5b9e" class="abl abm wz abn b abo adn abq abr abs ado abu abv mq adp abx aby mu adq aca acb my adr acd ace acf adk adl adm bj" data-selectable-paragraph=""><strong class="abn ml">Increase engagement: </strong>Interactive walkthroughs are more engaging than traditional documentation. By allowing users to interact with the environment and see the results of their actions, you can help them learn more effectively.</li>
<li id="96e5" class="abl abm wz abn b abo adn abq abr abs ado abu abv mq adp abx aby mu adq aca acb my adr acd ace acf adk adl adm bj" data-selectable-paragraph=""><strong class="abn ml">Improve your project’s documentation: </strong>Interactive walkthroughs can be a valuable addition to your project’s documentation. They can help you explain complex concepts clearly and concisely, and they can also provide users with hands-on experience.</li>
</ol>
<h1 id="6325" class="acu acv wz be acw hm acx hn ho hp acy hq hr hs acz ht hu hv ada hw hx hy adb hz ia adc bj" data-selectable-paragraph="">How to create an interactive walkthrough for your GitHub repository</h1>
<p id="9887" class="pw-post-body-paragraph abl abm wz abn b abo add abq abr abs ade abu abv mq adf abx aby mu adg aca acb my adh acd ace acf tf bj" data-selectable-paragraph="">To create an interactive walkthrough for your GitHub repository, follow these guidelines:</p>
<ol class="">
<li id="5c42" class="abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf adk adl adm bj" data-selectable-paragraph="">Create a new Markdown file in your repository.</li>
<li id="cd07" class="abl abm wz abn b abo adn abq abr abs ado abu abv mq adp abx aby mu adq aca acb my adr acd ace acf adk adl adm bj" data-selectable-paragraph="">In the Markdown file, you can add HTML as well as Google Cloud-provided markdown styles, walkthrough directives, etc. Walkthrough directives are HTML-like pre-defined tags that are used to create certain UI elements or perform certain actions in the Google Cloud shell window.</li>
</ol>
<h1 id="9948" class="acu acv wz be acw hm acx hn ho hp acy hq hr hs acz ht hu hv ada hw hx hy adb hz ia adc bj" data-selectable-paragraph=""><strong class="al">A few important directives examples:</strong></h1>
<h2 id="8847" class="alk acv wz be acw mm all fq ho mo alm ft hr mq aln mr mt mu alo mv mx my alp mz nb alq bj" data-selectable-paragraph="">1. Open file walkthrough directive:</h2>
<p id="0fb0" class="pw-post-body-paragraph abl abm wz abn b abo add abq abr abs ade abu abv mq adf abx aby mu adg aca acb my adh acd ace acf tf bj" data-selectable-paragraph=""><strong class="abn ml"><em class="adi">For example:</em></strong> if you have a config.json file in your repository and you want the user to open that file and modify it accordingly. Then you can use the <strong class="abn ml"><em class="adi">Open file directive</em></strong> to create a link in the tutorial to open that particular config file in editable format in the cloud shell window.</p>
<pre class="acj ack acl acm acn alr als alt bo alu ba bj"><span id="dbf7" class="alv acv wz als b bf alw alx l aly alz" data-selectable-paragraph="">Click to open the config file to edit 
<span class="hljs-tag">&lt;<span class="hljs-name">walkthrough-editor-open-file</span> <span class="hljs-attr">filePath</span>=<span class="hljs-string">"FILE_PATH"</span>&gt;</span>Open File<span class="hljs-tag">&lt;/<span class="hljs-name">walkthrough-editor-open-file</span>&gt;</span></span></pre>
<p id="1a65" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">The above markdown displays like below:</p>
<figure class="acj ack acl acm acn aco acg ach paragraph-image">
<div class="acg ach ama"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*Qqi6-y8d1K3LLQz_tExDfg.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*Qqi6-y8d1K3LLQz_tExDfg.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*Qqi6-y8d1K3LLQz_tExDfg.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*Qqi6-y8d1K3LLQz_tExDfg.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*Qqi6-y8d1K3LLQz_tExDfg.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*Qqi6-y8d1K3LLQz_tExDfg.png 1100w, https://miro.medium.com/v2/resize:fit:1128/format:webp/1*Qqi6-y8d1K3LLQz_tExDfg.png 1128w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 564px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*Qqi6-y8d1K3LLQz_tExDfg.png 640w, https://miro.medium.com/v2/resize:fit:720/1*Qqi6-y8d1K3LLQz_tExDfg.png 720w, https://miro.medium.com/v2/resize:fit:750/1*Qqi6-y8d1K3LLQz_tExDfg.png 750w, https://miro.medium.com/v2/resize:fit:786/1*Qqi6-y8d1K3LLQz_tExDfg.png 786w, https://miro.medium.com/v2/resize:fit:828/1*Qqi6-y8d1K3LLQz_tExDfg.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*Qqi6-y8d1K3LLQz_tExDfg.png 1100w, https://miro.medium.com/v2/resize:fit:1128/1*Qqi6-y8d1K3LLQz_tExDfg.png 1128w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 564px" data-testid="og" /><img loading="lazy" decoding="async" class="bg il act c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1128/1*Qqi6-y8d1K3LLQz_tExDfg.png" alt="" width="564" height="94" /></picture></div>
</figure>
<h2 id="fc05" class="alk acv wz be acw mm all fq ho mo alm ft hr mq aln mr mt mu alo mv mx my alp mz nb alq bj" data-selectable-paragraph="">2. To create or select an existing project:</h2>
<p id="9c95" class="pw-post-body-paragraph abl abm wz abn b abo add abq abr abs ade abu abv mq adf abx aby mu adg aca acb my adh acd ace acf tf bj" data-selectable-paragraph="">To create a section or widget for the user to be able to select an existing project or create a new one, you can use the create project directive.</p>
<pre class="acj ack acl acm acn alr als alt bo alu ba bj"><span id="9175" class="alv acv wz als b bf alw alx l aly alz" data-selectable-paragraph=""><span class="hljs-tag">&lt;<span class="hljs-name">h2</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"set-up-a-project"</span> <span class="hljs-attr">data-text</span>=<span class="hljs-string">"Set up a project"</span>&gt;</span>Set up a project<span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">ol</span>&gt;</span>
   <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">walkthrough-project-setup</span> <span class="hljs-attr">billing</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">walkthrough-project-setup</span>&gt;</span>
   <span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">ol</span>&gt;</span>

`Note:` In order to be able to install DQM successfully, you need to have billing enabled for your project.</span></pre>
<p id="6b46" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">The above markdown code will turn into the following widget on your interactive tutorial page:</p>
<figure class="acj ack acl acm acn aco acg ach paragraph-image">
<div class="acp acq cq acr bg acs" tabindex="0" role="button">
<div class="acg ach amb"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*x-S4e44COVhlNPSW3Sf2aQ.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*x-S4e44COVhlNPSW3Sf2aQ.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*x-S4e44COVhlNPSW3Sf2aQ.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*x-S4e44COVhlNPSW3Sf2aQ.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*x-S4e44COVhlNPSW3Sf2aQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*x-S4e44COVhlNPSW3Sf2aQ.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*x-S4e44COVhlNPSW3Sf2aQ.png 1400w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*x-S4e44COVhlNPSW3Sf2aQ.png 640w, https://miro.medium.com/v2/resize:fit:720/1*x-S4e44COVhlNPSW3Sf2aQ.png 720w, https://miro.medium.com/v2/resize:fit:750/1*x-S4e44COVhlNPSW3Sf2aQ.png 750w, https://miro.medium.com/v2/resize:fit:786/1*x-S4e44COVhlNPSW3Sf2aQ.png 786w, https://miro.medium.com/v2/resize:fit:828/1*x-S4e44COVhlNPSW3Sf2aQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*x-S4e44COVhlNPSW3Sf2aQ.png 1100w, https://miro.medium.com/v2/resize:fit:1400/1*x-S4e44COVhlNPSW3Sf2aQ.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" data-testid="og" /><img loading="lazy" decoding="async" class="bg il act c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1400/1*x-S4e44COVhlNPSW3Sf2aQ.png" alt="" width="700" height="544" /></picture></div>
</div>
</figure>
<h2 id="7303" class="alk acv wz be acw mm all fq ho mo alm ft hr mq aln mr mt mu alo mv mx my alp mz nb alq bj" data-selectable-paragraph="">3. To get the selected project ID or project name:</h2>
<p id="afeb" class="pw-post-body-paragraph abl abm wz abn b abo add abq abr abs ade abu abv mq adf abx aby mu adg aca acb my adh acd ace acf tf bj" data-selectable-paragraph="">In your tutorial, if you want to get the selected project name or ID, you can use one of the following directives i.e.</p>
<pre class="acj ack acl acm acn alr als alt bo alu ba bj"><span id="c004" class="alv acv wz als b bf alw alx l aly alz" data-selectable-paragraph=""><span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">strong</span>&gt;</span>Project Name:<span class="hljs-tag">&lt;/<span class="hljs-name">strong</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-name">walkthrough-project-name</span>/&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">strong</span>&gt;</span>Project ID:<span class="hljs-tag">&lt;/<span class="hljs-name">strong</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-name">walkthrough-project-id</span>/&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span></span></pre>
<p id="b696" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">After running the above directive, you can see your selected project ID and project name.</p>
<figure class="acj ack acl acm acn aco acg ach paragraph-image">
<div class="acg ach amc"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*whxKIcOFjoVd-wMiRr_yRw.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*whxKIcOFjoVd-wMiRr_yRw.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*whxKIcOFjoVd-wMiRr_yRw.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*whxKIcOFjoVd-wMiRr_yRw.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*whxKIcOFjoVd-wMiRr_yRw.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*whxKIcOFjoVd-wMiRr_yRw.png 1100w, https://miro.medium.com/v2/resize:fit:1040/format:webp/1*whxKIcOFjoVd-wMiRr_yRw.png 1040w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 520px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*whxKIcOFjoVd-wMiRr_yRw.png 640w, https://miro.medium.com/v2/resize:fit:720/1*whxKIcOFjoVd-wMiRr_yRw.png 720w, https://miro.medium.com/v2/resize:fit:750/1*whxKIcOFjoVd-wMiRr_yRw.png 750w, https://miro.medium.com/v2/resize:fit:786/1*whxKIcOFjoVd-wMiRr_yRw.png 786w, https://miro.medium.com/v2/resize:fit:828/1*whxKIcOFjoVd-wMiRr_yRw.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*whxKIcOFjoVd-wMiRr_yRw.png 1100w, https://miro.medium.com/v2/resize:fit:1040/1*whxKIcOFjoVd-wMiRr_yRw.png 1040w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 520px" data-testid="og" /><img loading="lazy" decoding="async" class="bg il act c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1040/1*whxKIcOFjoVd-wMiRr_yRw.png" alt="" width="520" height="152" /></picture></div>
</figure>
<h2 id="6cd5" class="alk acv wz be acw mm all fq ho mo alm ft hr mq aln mr mt mu alo mv mx my alp mz nb alq bj" data-selectable-paragraph="">3. Conclusion Trophy:</h2>
<p id="8f2e" class="pw-post-body-paragraph abl abm wz abn b abo add abq abr abs ade abu abv mq adf abx aby mu adg aca acb my adh acd ace acf tf bj" data-selectable-paragraph="">At the end of the tutorial, if everything is successful, you want to give a trophy to the user :); you can use the conclusion trophy directive as shown below code:</p>
<pre class="acj ack acl acm acn alr als alt bo alu ba bj"><span id="3722" class="alv acv wz als b bf alw alx l aly alz" data-selectable-paragraph=""><span class="hljs-tag">&lt;<span class="hljs-name">h2</span>&gt;</span>Congratulations<span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>
   <span class="hljs-tag">&lt;<span class="hljs-name">walkthrough-conclusion-trophy</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">walkthrough-conclusion-trophy</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>You’re all set!<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span></span></pre>
<p id="8cf6" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">The above code will look something like this as shown in the below picture:</p>
<figure class="acj ack acl acm acn aco acg ach paragraph-image">
<div class="acg ach amd"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*IAFLSB9Yhs4jdrMXyLyhyw.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*IAFLSB9Yhs4jdrMXyLyhyw.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*IAFLSB9Yhs4jdrMXyLyhyw.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*IAFLSB9Yhs4jdrMXyLyhyw.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*IAFLSB9Yhs4jdrMXyLyhyw.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*IAFLSB9Yhs4jdrMXyLyhyw.png 1100w, https://miro.medium.com/v2/resize:fit:788/format:webp/1*IAFLSB9Yhs4jdrMXyLyhyw.png 788w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 394px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*IAFLSB9Yhs4jdrMXyLyhyw.png 640w, https://miro.medium.com/v2/resize:fit:720/1*IAFLSB9Yhs4jdrMXyLyhyw.png 720w, https://miro.medium.com/v2/resize:fit:750/1*IAFLSB9Yhs4jdrMXyLyhyw.png 750w, https://miro.medium.com/v2/resize:fit:786/1*IAFLSB9Yhs4jdrMXyLyhyw.png 786w, https://miro.medium.com/v2/resize:fit:828/1*IAFLSB9Yhs4jdrMXyLyhyw.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*IAFLSB9Yhs4jdrMXyLyhyw.png 1100w, https://miro.medium.com/v2/resize:fit:788/1*IAFLSB9Yhs4jdrMXyLyhyw.png 788w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 394px" data-testid="og" /><img loading="lazy" decoding="async" class="bg il act c" role="presentation" src="https://miro.medium.com/v2/resize:fit:788/1*IAFLSB9Yhs4jdrMXyLyhyw.png" alt="" width="394" height="355" /></picture></div>
</figure>
<blockquote class="ame amf amg">
<p id="4c79" class="abl abm adi abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">To know all available directives and how to use them, you can refer to Google Cloud documentation here: <a class="af nr" href="https://cloud.google.com/shell/docs/cloud-shell-tutorials/overview" target="_blank" rel="noopener ugc nofollow">https://cloud.google.com/shell/docs/cloud-shell-tutorials/directives-cloud-shell-editor</a></p>
</blockquote>
<h1 id="3707" class="acu acv wz be acw hm acx hn ho hp acy hq hr hs acz ht hu hv ada hw hx hy adb hz ia adc bj" data-selectable-paragraph="">Markdown Extensions:</h1>
<p id="6e16" class="pw-post-body-paragraph abl abm wz abn b abo add abq abr abs ade abu abv mq adf abx aby mu adg aca acb my adh acd ace acf tf bj" data-selectable-paragraph="">Cloud Shell tutorials support Markdown extensions to expand the capability of the Markdown language itself. To create a code block formatting you can use one of the extensions as shown in the below example:</p>
<p id="360d" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">If you want to run a shell script in cloud shell:</p>
<pre class="acj ack acl acm acn alr als alt bo alu ba bj"><span id="5e6d" class="alv acv wz als b bf alw alx l aly alz" data-selectable-paragraph=""><span class="hljs-code">```sh
     gcloud config set project &lt;walkthrough-project-name/&gt;
```</span></span></pre>
<p id="7a16" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">In the above example, I have used extended markdown to write a shell script that can be run in a cloud shell. I have also used one of the directives to get the selected project name.</p>
<p id="a348" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">The above markdown code will look something like shown in the below picture where the entire command can be either copied by clicking on the copy button in the top right corner or can be directly copy-pasted to the terminal. All you need to do is “press” enter to execute.</p>
<figure class="acj ack acl acm acn aco acg ach paragraph-image">
<div class="acp acq cq acr bg acs" tabindex="0" role="button">
<div class="acg ach amh"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*GREXissuvd3N9yY48CX6gA.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*GREXissuvd3N9yY48CX6gA.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*GREXissuvd3N9yY48CX6gA.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*GREXissuvd3N9yY48CX6gA.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*GREXissuvd3N9yY48CX6gA.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*GREXissuvd3N9yY48CX6gA.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*GREXissuvd3N9yY48CX6gA.png 1400w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*GREXissuvd3N9yY48CX6gA.png 640w, https://miro.medium.com/v2/resize:fit:720/1*GREXissuvd3N9yY48CX6gA.png 720w, https://miro.medium.com/v2/resize:fit:750/1*GREXissuvd3N9yY48CX6gA.png 750w, https://miro.medium.com/v2/resize:fit:786/1*GREXissuvd3N9yY48CX6gA.png 786w, https://miro.medium.com/v2/resize:fit:828/1*GREXissuvd3N9yY48CX6gA.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*GREXissuvd3N9yY48CX6gA.png 1100w, https://miro.medium.com/v2/resize:fit:1400/1*GREXissuvd3N9yY48CX6gA.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" data-testid="og" /><img loading="lazy" decoding="async" class="bg il act c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1400/1*GREXissuvd3N9yY48CX6gA.png" alt="" width="700" height="144" /></picture></div>
</div>
</figure>
<p id="c326" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">Refer to this Google documentation page for more extended features: <a class="af nr" href="https://cloud.google.com/shell/docs/cloud-shell-tutorials/markdown-extensions" target="_blank" rel="noopener ugc nofollow">https://cloud.google.com/shell/docs/cloud-shell-tutorials/markdown-extensions</a></p>
<h1 id="4424" class="acu acv wz be acw hm acx hn ho hp acy hq hr hs acz ht hu hv ada hw hx hy adb hz ia adc bj" data-selectable-paragraph="">How to launch an interactive tutorial:</h1>
<p id="1e57" class="pw-post-body-paragraph abl abm wz abn b abo add abq abr abs ade abu abv mq adf abx aby mu adg aca acb my adh acd ace acf tf bj" data-selectable-paragraph="">To use an interactive walkthrough in Cloud Shell, follow these steps:</p>
<ul class="">
<li id="9f35" class="abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf ami adl adm bj" data-selectable-paragraph="">Open Cloud Shell.</li>
<li id="d681" class="abl abm wz abn b abo adn abq abr abs ado abu abv mq adp abx aby mu adq aca acb my adr acd ace acf ami adl adm bj" data-selectable-paragraph="">Run the following command</li>
</ul>
<pre class="acj ack acl acm acn alr als alt bo alu ba bj"><span id="2d40" class="alv acv wz als b bf alw alx l aly alz" data-selectable-paragraph="">cloudshell launch-tutorial tutorial.md</span></pre>
<p id="1796" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph=""><strong class="abn ml"><em class="adi">Tutorial.md</em></strong> is the file where you have written the interactive tutorial in markdown format as explained above. After running the above code, an interactive tutorial will be launched on the right side of the screen, and on the left side, you can see the cloud shell window to work along.</p>
<figure class="acj ack acl acm acn aco acg ach paragraph-image">
<div class="acg ach amj"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*PMbMYbSZ2ZVfnq-J6GPyuQ.gif 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*PMbMYbSZ2ZVfnq-J6GPyuQ.gif 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*PMbMYbSZ2ZVfnq-J6GPyuQ.gif 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*PMbMYbSZ2ZVfnq-J6GPyuQ.gif 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*PMbMYbSZ2ZVfnq-J6GPyuQ.gif 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*PMbMYbSZ2ZVfnq-J6GPyuQ.gif 1100w, https://miro.medium.com/v2/resize:fit:1200/format:webp/1*PMbMYbSZ2ZVfnq-J6GPyuQ.gif 1200w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 600px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*PMbMYbSZ2ZVfnq-J6GPyuQ.gif 640w, https://miro.medium.com/v2/resize:fit:720/1*PMbMYbSZ2ZVfnq-J6GPyuQ.gif 720w, https://miro.medium.com/v2/resize:fit:750/1*PMbMYbSZ2ZVfnq-J6GPyuQ.gif 750w, https://miro.medium.com/v2/resize:fit:786/1*PMbMYbSZ2ZVfnq-J6GPyuQ.gif 786w, https://miro.medium.com/v2/resize:fit:828/1*PMbMYbSZ2ZVfnq-J6GPyuQ.gif 828w, https://miro.medium.com/v2/resize:fit:1100/1*PMbMYbSZ2ZVfnq-J6GPyuQ.gif 1100w, https://miro.medium.com/v2/resize:fit:1200/1*PMbMYbSZ2ZVfnq-J6GPyuQ.gif 1200w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 600px" data-testid="og" /><img loading="lazy" decoding="async" class="bg il act c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1200/1*PMbMYbSZ2ZVfnq-J6GPyuQ.gif" alt="" width="600" height="315" /></picture></div>
</figure>
<blockquote class="ame amf amg">
<p id="a8ef" class="abl abm adi abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">Finally, you can find the entire tutorial file that I created for my project here in this repository.</p>
<p id="3342" class="abl abm adi abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph=""><a class="af nr" href="https://github.com/google/data-quality-monitor/blob/main/deployment/gc_interactive_tutorial.md" target="_blank" rel="noopener ugc nofollow">https://github.com/google/data-quality-monitor/blob/main/deployment/gc_interactive_tutorial.md</a></p>
</blockquote>
<h1 id="1bd9" class="acu acv wz be acw hm acx hn ho hp acy hq hr hs acz ht hu hv ada hw hx hy adb hz ia adc bj" data-selectable-paragraph="">How to create a Cloud Shell button for my GitHub Repository</h1>
<p id="90f3" class="pw-post-body-paragraph abl abm wz abn b abo add abq abr abs ade abu abv mq adf abx aby mu adg aca acb my adh acd ace acf tf bj" data-selectable-paragraph="">If you want to generate a cloud shell button like shown in the below picture for your GitHub repository, you can follow the below steps explained.</p>
<figure class="acj ack acl acm acn aco acg ach paragraph-image">
<div class="acg ach amk"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*yScI5NG4pK1fTvrnLs0o8A.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*yScI5NG4pK1fTvrnLs0o8A.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*yScI5NG4pK1fTvrnLs0o8A.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*yScI5NG4pK1fTvrnLs0o8A.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*yScI5NG4pK1fTvrnLs0o8A.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*yScI5NG4pK1fTvrnLs0o8A.png 1100w, https://miro.medium.com/v2/resize:fit:574/format:webp/1*yScI5NG4pK1fTvrnLs0o8A.png 574w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 287px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*yScI5NG4pK1fTvrnLs0o8A.png 640w, https://miro.medium.com/v2/resize:fit:720/1*yScI5NG4pK1fTvrnLs0o8A.png 720w, https://miro.medium.com/v2/resize:fit:750/1*yScI5NG4pK1fTvrnLs0o8A.png 750w, https://miro.medium.com/v2/resize:fit:786/1*yScI5NG4pK1fTvrnLs0o8A.png 786w, https://miro.medium.com/v2/resize:fit:828/1*yScI5NG4pK1fTvrnLs0o8A.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*yScI5NG4pK1fTvrnLs0o8A.png 1100w, https://miro.medium.com/v2/resize:fit:574/1*yScI5NG4pK1fTvrnLs0o8A.png 574w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 287px" data-testid="og" /><img loading="lazy" decoding="async" class="bg il act c" role="presentation" src="https://miro.medium.com/v2/resize:fit:574/1*yScI5NG4pK1fTvrnLs0o8A.png" alt="" width="287" height="70" /></picture></div>
</figure>
<p id="8b05" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">Open this <a class="af nr" href="https://cloud.google.com/shell/docs/open-in-cloud-shell" target="_blank" rel="noopener ugc nofollow"><strong class="abn ml"><em class="adi">link</em></strong></a> and at the bottom of the page, there is a form available like below. Fill in the necessary details and click on <strong class="abn ml"><em class="adi">“generate snippet”. </em></strong>The code snippet is ready to copy and paste it where ever you want.</p>
<figure class="acj ack acl acm acn aco acg ach paragraph-image">
<div class="acp acq cq acr bg acs" tabindex="0" role="button">
<div class="acg ach aml"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*Weihk-6qM0SidHXKLYHvjQ.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*Weihk-6qM0SidHXKLYHvjQ.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*Weihk-6qM0SidHXKLYHvjQ.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*Weihk-6qM0SidHXKLYHvjQ.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*Weihk-6qM0SidHXKLYHvjQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*Weihk-6qM0SidHXKLYHvjQ.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*Weihk-6qM0SidHXKLYHvjQ.png 1400w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*Weihk-6qM0SidHXKLYHvjQ.png 640w, https://miro.medium.com/v2/resize:fit:720/1*Weihk-6qM0SidHXKLYHvjQ.png 720w, https://miro.medium.com/v2/resize:fit:750/1*Weihk-6qM0SidHXKLYHvjQ.png 750w, https://miro.medium.com/v2/resize:fit:786/1*Weihk-6qM0SidHXKLYHvjQ.png 786w, https://miro.medium.com/v2/resize:fit:828/1*Weihk-6qM0SidHXKLYHvjQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*Weihk-6qM0SidHXKLYHvjQ.png 1100w, https://miro.medium.com/v2/resize:fit:1400/1*Weihk-6qM0SidHXKLYHvjQ.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" data-testid="og" /><img loading="lazy" decoding="async" class="bg il act c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1400/1*Weihk-6qM0SidHXKLYHvjQ.png" alt="" width="700" height="713" /></picture></div>
</div>
</figure>
<p id="071f" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">The generated button will automatically open your Google Cloud console — if already logged in — otherwise it will ask you to log in. After successful login, it will launch the cloud shell and clone the repository [the one that you have provided while generating the snippet] in your cloud shell workspace. Once cloning is done, it will launch the tutorial.md file or whatever interactive markdown file you provided while creating the snippet.</p>
<blockquote class="ame amf amg">
<p id="4aab" class="abl abm adi abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph=""><strong class="abn ml"><em class="wz">That’s all ! Your user is good to continue with your tutorial now.</em></strong></p>
</blockquote>
<h1 id="dc5b" class="acu acv wz be acw hm acx hn ho hp acy hq hr hs acz ht hu hv ada hw hx hy adb hz ia adc bj" data-selectable-paragraph="">Tips for creating effective interactive walkthroughs</h1>
<p id="0184" class="pw-post-body-paragraph abl abm wz abn b abo add abq abr abs ade abu abv mq adf abx aby mu adg aca acb my adh acd ace acf tf bj" data-selectable-paragraph="">Here are some tips for creating effective interactive walkthroughs:</p>
<ul class="">
<li id="7e57" class="abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf ami adl adm bj" data-selectable-paragraph="">Keep your walkthroughs concise and focused on a single task. Users should be able to complete the task in a few minutes.</li>
<li id="78c6" class="abl abm wz abn b abo adn abq abr abs ado abu abv mq adp abx aby mu adq aca acb my adr acd ace acf ami adl adm bj" data-selectable-paragraph="">Use clear and concise language. Avoid using jargon or technical terms that your users may not understand.</li>
<li id="6a9f" class="abl abm wz abn b abo adn abq abr abs ado abu abv mq adp abx aby mu adq aca acb my adr acd ace acf ami adl adm bj" data-selectable-paragraph="">Provide step-by-step instructions. Don’t assume that your users have any prior knowledge of the task.</li>
<li id="b987" class="abl abm wz abn b abo adn abq abr abs ado abu abv mq adp abx aby mu adq aca acb my adr acd ace acf ami adl adm bj" data-selectable-paragraph="">Use code snippets and images or videos to illustrate your instructions. This can help your users to understand and follow the steps more easily.</li>
<li id="a2fc" class="abl abm wz abn b abo adn abq abr abs ado abu abv mq adp abx aby mu adq aca acb my adr acd ace acf ami adl adm bj" data-selectable-paragraph="">Test your walkthroughs thoroughly to make sure that they are accurate and complete.</li>
</ul>
<h1 id="1876" class="acu acv wz be acw hm acx hn ho hp acy hq hr hs acz ht hu hv ada hw hx hy adb hz ia adc bj" data-selectable-paragraph="">Conclusion</h1>
<p id="2af9" class="pw-post-body-paragraph abl abm wz abn b abo add abq abr abs ade abu abv mq adf abx aby mu adg aca acb my adh acd ace acf tf bj" data-selectable-paragraph="">Interactive walkthroughs in Cloud Shell are a great way to help users learn how to use your project and Google Cloud products. By following the tips above, you can create effective interactive walkthroughs that will improve your project’s documentation and make it easier for users to get started.</p>
<span class="et_bloom_bottom_trigger"></span><p>The post <a href="https://vmlogger.com/algorithms/2023/12/25/how-to-create-an-interactive-walkthrough-tutorial-in-cloudshell/">How to create an “Interactive walkthrough” tutorial in Cloudshell</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
<img src="https://feedpress.me/link/23668/16507814.gif" height="1" width="1"/>]]></content:encoded>
      <wfw:commentRss>https://vmlogger.com/algorithms/2023/12/25/how-to-create-an-interactive-walkthrough-tutorial-in-cloudshell/feed/</wfw:commentRss>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>ChatGPT &amp; Gemini Models: Explaining the Contrasts in Simple Language</title>
      <link>https://feedpress.me/link/23668/16507345/chatgpt-gemini-models-explaining-the-contrasts-in-simple-language</link>
      <comments>https://vmlogger.com/algorithms/2023/12/24/chatgpt-gemini-models-explaining-the-contrasts-in-simple-language/#respond</comments>
      <dc:creator><![CDATA[Vishwamitra Mishra]]></dc:creator>
      <pubDate>Sun, 24 Dec 2023 20:40:34 +0000</pubDate>
      <category><![CDATA[Data Science]]></category>
      <guid isPermaLink="false">https://vmlogger.com/algorithms/?p=527</guid>
      <description><![CDATA[<p>ChatGPT is like a skilled actor who can deliver lines from a script with conviction. Gemini, on the other hand, is like a skilled director who can stage a complex play. As these models continue to evolve, we can anticipate even more innovative and transformative applications that blur the lines between human-computer interaction and the [&#8230;]</p>
<p>The post <a href="https://vmlogger.com/algorithms/2023/12/24/chatgpt-gemini-models-explaining-the-contrasts-in-simple-language/">ChatGPT &#038; Gemini Models: Explaining the Contrasts in Simple Language</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
]]></description>
      <content:encoded><![CDATA[<p id="d52c" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">ChatGPT is like a skilled actor who can deliver lines from a script with conviction. Gemini, on the other hand, is like a skilled director who can stage a complex play.</p>
<p id="6545" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">As these models continue to evolve, we can anticipate even more innovative and transformative applications that blur the lines between human-computer interaction and the creation of new forms of media and experiences.</p>
<figure class="acj ack acl acm acn aco acg ach paragraph-image">
<div class="acp acq cq acr bg acs" tabindex="0" role="button">
<div class="acg ach aci"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*JB3gTzIRiPsHasaUHnCGjg.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*JB3gTzIRiPsHasaUHnCGjg.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*JB3gTzIRiPsHasaUHnCGjg.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*JB3gTzIRiPsHasaUHnCGjg.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*JB3gTzIRiPsHasaUHnCGjg.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*JB3gTzIRiPsHasaUHnCGjg.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*JB3gTzIRiPsHasaUHnCGjg.png 1400w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/1*JB3gTzIRiPsHasaUHnCGjg.png 640w, https://miro.medium.com/v2/resize:fit:720/1*JB3gTzIRiPsHasaUHnCGjg.png 720w, https://miro.medium.com/v2/resize:fit:750/1*JB3gTzIRiPsHasaUHnCGjg.png 750w, https://miro.medium.com/v2/resize:fit:786/1*JB3gTzIRiPsHasaUHnCGjg.png 786w, https://miro.medium.com/v2/resize:fit:828/1*JB3gTzIRiPsHasaUHnCGjg.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*JB3gTzIRiPsHasaUHnCGjg.png 1100w, https://miro.medium.com/v2/resize:fit:1400/1*JB3gTzIRiPsHasaUHnCGjg.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" data-testid="og" /><img loading="lazy" decoding="async" class="bg il act c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1400/1*JB3gTzIRiPsHasaUHnCGjg.png" alt="" width="700" height="394" /></picture></div>
</div>
</figure>
<h1 id="15f7" class="acu acv wz be acw hm acx hn ho hp acy hq hr hs acz ht hu hv ada hw hx hy adb hz ia adc bj" data-selectable-paragraph="">Divergence in Approach</h1>
<p id="054a" class="pw-post-body-paragraph abl abm wz abn b abo add abq abr abs ade abu abv mq adf abx aby mu adg aca acb my adh acd ace acf tf bj" data-selectable-paragraph="">The primary distinction between ChatGPT and Gemini lies in their inherent approaches to information processing. ChatGPT, functioning as a <em class="adi">text-centric model</em>, primarily concentrates on textual inputs and outputs. It excels in generating coherent and engaging conversations, translating languages, and crafting various forms of creative content.</p>
<p id="4c8c" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">Whereas, Gemini adopts a multimodal approach, adept at handling and processing information from diverse sources, including text, images, audio, and video. This innate capability to integrate multiple modalities affords Gemini a broader spectrum of applications, such as generating descriptive captions for images, producing lifelike videos, and even composing music.</p>
<h1 id="0e03" class="acu acv wz be acw hm acx hn ho hp acy hq hr hs acz ht hu hv ada hw hx hy adb hz ia adc bj" data-selectable-paragraph="">Architectural Foundations and Learning Mechanisms</h1>
<p id="f592" class="pw-post-body-paragraph abl abm wz abn b abo add abq abr abs ade abu abv mq adf abx aby mu adg aca acb my adh acd ace acf tf bj" data-selectable-paragraph="">ChatGPT relies on the GPT-4V architecture, a robust large language model employing stacked autoregressive transformer layers to capture intricate linguistic patterns. Its learning process involves training on an extensive dataset of text and code, empowering it to generate grammatically correct, semantically meaningful, and often imaginative text.</p>
<p id="2f54" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">In contrast, Gemini employs a deep learning architecture specifically tailored for multimodal processing. It incorporates attention mechanisms that enable the model to focus on relevant information across different modalities, facilitating the integration and comprehension of complex relationships between text, images, audio, and video.</p>
<figure class="acj ack acl acm acn aco acg ach paragraph-image">
<div class="acp acq cq acr bg acs" tabindex="0" role="button">
<div class="acg ach adj"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/0*y25vOHsbOf7iPWCo.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*y25vOHsbOf7iPWCo.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*y25vOHsbOf7iPWCo.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*y25vOHsbOf7iPWCo.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*y25vOHsbOf7iPWCo.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*y25vOHsbOf7iPWCo.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/0*y25vOHsbOf7iPWCo.png 1400w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" /><source srcset="https://miro.medium.com/v2/resize:fit:640/0*y25vOHsbOf7iPWCo.png 640w, https://miro.medium.com/v2/resize:fit:720/0*y25vOHsbOf7iPWCo.png 720w, https://miro.medium.com/v2/resize:fit:750/0*y25vOHsbOf7iPWCo.png 750w, https://miro.medium.com/v2/resize:fit:786/0*y25vOHsbOf7iPWCo.png 786w, https://miro.medium.com/v2/resize:fit:828/0*y25vOHsbOf7iPWCo.png 828w, https://miro.medium.com/v2/resize:fit:1100/0*y25vOHsbOf7iPWCo.png 1100w, https://miro.medium.com/v2/resize:fit:1400/0*y25vOHsbOf7iPWCo.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" data-testid="og" /><img loading="lazy" decoding="async" class="bg il act c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1400/0*y25vOHsbOf7iPWCo.png" alt="" width="700" height="589" /></picture></div>
</div>
</figure>
<h1 id="bcd2" class="acu acv wz be acw hm acx hn ho hp acy hq hr hs acz ht hu hv ada hw hx hy adb hz ia adc bj" data-selectable-paragraph="">Applications and Future Potential</h1>
<p id="7869" class="pw-post-body-paragraph abl abm wz abn b abo add abq abr abs ade abu abv mq adf abx aby mu adg aca acb my adh acd ace acf tf bj" data-selectable-paragraph="">ChatGPT’s text-centric nature positions it well for tasks primarily involving natural language interactions, excelling in applications like <strong class="abn ml"><em class="adi">chatbots</em></strong>, <strong class="abn ml"><em class="adi">question answering</em></strong>, and <strong class="abn ml"><em class="adi">creative writing</em></strong>. However, its limitations in handling multimodal inputs confine its scope to text-based domains.</p>
<p id="e6b2" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">Gemini’s multimodal capabilities open up a broader range of applications, including:</p>
<ol class="">
<li id="ee67" class="abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf adk adl adm bj" data-selectable-paragraph=""><strong class="abn ml">Visualizing text descriptions: </strong>Gemini can generate realistic images based on textual descriptions, enabling the creation of creative content and visual storytelling.</li>
<li id="77fe" class="abl abm wz abn b abo adn abq abr abs ado abu abv mq adp abx aby mu adq aca acb my adr acd ace acf adk adl adm bj" data-selectable-paragraph=""><strong class="abn ml">Understanding and responding to multimedia content:</strong> Gemini can analyze and interpret videos, audio, and images, enhancing its ability to engage in more comprehensive interactions with users.</li>
<li id="3a08" class="abl abm wz abn b abo adn abq abr abs ado abu abv mq adp abx aby mu adq aca acb my adr acd ace acf adk adl adm bj" data-selectable-paragraph=""><strong class="abn ml">Creating synthetic media: </strong>Gemini can generate new audio, video, and images, with potential applications in entertainment, education, and advertising.</li>
</ol>
<h1 id="e1a5" class="acu acv wz be acw hm acx hn ho hp acy hq hr hs acz ht hu hv ada hw hx hy adb hz ia adc bj" data-selectable-paragraph="">An analogy to illustrate their future development</h1>
<p id="b26c" class="pw-post-body-paragraph abl abm wz abn b abo add abq abr abs ade abu abv mq adf abx aby mu adg aca acb my adh acd ace acf tf bj" data-selectable-paragraph="">Imagine a calculator specifically designed for doing calculations, and a smartphone calculator app that serves the same purpose. Now, imagine a scenario in the future where someone attempts to enhance the calculator’s capabilities by incorporating a “calling” feature. Most likely this seems challenging and might not function optimally, given that the calculator was not originally designed for such a feature.</p>
<p id="678f" class="pw-post-body-paragraph abl abm wz abn b abo abp abq abr abs abt abu abv mq abw abx aby mu abz aca acb my acc acd ace acf tf bj" data-selectable-paragraph="">In a parallel thought, ChatGPT may encounter difficulties in expanding its model to handle multidimensional inputs, a task that Gemini seamlessly accomplishes. In this scenario, Gemini holds a distinct advantage over ChatGPT.</p>
<span class="et_bloom_bottom_trigger"></span><p>The post <a href="https://vmlogger.com/algorithms/2023/12/24/chatgpt-gemini-models-explaining-the-contrasts-in-simple-language/">ChatGPT &#038; Gemini Models: Explaining the Contrasts in Simple Language</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
<img src="https://feedpress.me/link/23668/16507345.gif" height="1" width="1"/>]]></content:encoded>
      <wfw:commentRss>https://vmlogger.com/algorithms/2023/12/24/chatgpt-gemini-models-explaining-the-contrasts-in-simple-language/feed/</wfw:commentRss>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Google Cloud IAP A User’s Perspective</title>
      <link>https://feedpress.me/link/23668/16507341/google-cloud-iap-a-users-perspective</link>
      <comments>https://vmlogger.com/algorithms/2023/12/24/google-cloud-iap-a-users-perspective/#respond</comments>
      <dc:creator><![CDATA[Vishwamitra Mishra]]></dc:creator>
      <pubDate>Sun, 24 Dec 2023 20:30:23 +0000</pubDate>
      <category><![CDATA[Cloud]]></category>
      <guid isPermaLink="false">https://vmlogger.com/algorithms/?p=518</guid>
      <description><![CDATA[<p>In today’s increasingly interconnected digital landscape, securing access to sensitive data and applications has become paramount. As organizations embrace cloud-based solutions, the need for robust access control mechanisms has never been greater. Google Cloud Identity-Aware Proxy (IAP) emerges as a powerful tool to address this challenge, providing a centralized and granular approach to safeguarding cloud [&#8230;]</p>
<p>The post <a href="https://vmlogger.com/algorithms/2023/12/24/google-cloud-iap-a-users-perspective/">Google Cloud IAP A User&#8217;s Perspective</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
]]></description>
      <content:encoded><![CDATA[<p id="e6f8" class="pw-post-body-paragraph ll lm gd ln b lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi fw bj" data-selectable-paragraph="">In today’s increasingly interconnected digital landscape, securing access to sensitive data and applications has become paramount. As organizations embrace cloud-based solutions, the need for robust access control mechanisms has never been greater. Google Cloud Identity-Aware Proxy (IAP) emerges as a powerful tool to address this challenge, providing a centralized and granular approach to safeguarding cloud resources.</p>
<p id="a965" class="pw-post-body-paragraph ll lm gd ln b lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi fw bj" data-selectable-paragraph="">While working on an open source <a class="af zz" href="https://github.com/google/data-quality-monitor/" target="_blank" rel="noopener ugc nofollow">DQM [Data Quality Monitor]</a> frontend and backend, I had chosen IAP to secure the frontend of this DQM tool. To secure and control access to the front end, I did not have to create any login page, instead authorization and authentication were completed and taken care of by IAP itself. You can refer to the below design for DQM.</p>
<h1 id="aead" class="mx my gd be mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu bj" data-selectable-paragraph="">Understanding IAP’s Role in Cloud Security</h1>
<p id="02ca" class="pw-post-body-paragraph ll lm gd ln b lo nv lq lr ls nw lu lv lw nx ly lz ma ny mc md me nz mg mh mi fw bj" data-selectable-paragraph="">IAP acts as a gatekeeper, intercepting all traffic destined for your cloud</p>
<p id="99cb" class="pw-post-body-paragraph ll lm gd ln b lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi fw bj" data-selectable-paragraph="">applications and enforcing access policies based on user identities and contextual factors. It eliminates the need to expose applications directly to the internet, shielding them from unauthorized access and potential attacks. This approach aligns with the Zero Trust model, emphasizing the principle of “never trust, always verify” for every access request.</p>
<figure class="mm mn mo mp mq mr mj mk paragraph-image">
<div class="ms mt ef mu bg mv" tabindex="0" role="button">
<div class="mj mk anm"><picture><source srcset="https://miro.medium.com/v2/resize:fit:640/0*qtepMoqZA1BDoHQQ.png 640w, https://miro.medium.com/v2/resize:fit:720/0*qtepMoqZA1BDoHQQ.png 720w, https://miro.medium.com/v2/resize:fit:750/0*qtepMoqZA1BDoHQQ.png 750w, https://miro.medium.com/v2/resize:fit:786/0*qtepMoqZA1BDoHQQ.png 786w, https://miro.medium.com/v2/resize:fit:828/0*qtepMoqZA1BDoHQQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/0*qtepMoqZA1BDoHQQ.png 1100w, https://miro.medium.com/v2/resize:fit:1400/0*qtepMoqZA1BDoHQQ.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" data-testid="og" /><img loading="lazy" decoding="async" class="bg kt mw c" role="presentation" src="https://miro.medium.com/v2/resize:fit:1400/0*qtepMoqZA1BDoHQQ.png" alt="" width="700" height="418" /></picture></div>
</div><figcaption class="ann ql ano mj mk anp anq be b bf z dw" data-selectable-paragraph="">DQM Designed to use IAP for security</figcaption></figure>
<h1 id="7523" class="mx my gd be mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu bj" data-selectable-paragraph="">Key Features that Enhance Cloud Protection</h1>
<p id="657a" class="pw-post-body-paragraph ll lm gd ln b lo nv lq lr ls nw lu lv lw nx ly lz ma ny mc md me nz mg mh mi fw bj" data-selectable-paragraph="">IAP boasts a comprehensive set of features that elevate cloud security to new heights:</p>
<ul class="">
<li id="b6d9" class="ll lm gd ln b lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi anr od oe bj" data-selectable-paragraph=""><strong class="ln ge">Centralized Access Control:</strong> Manage access policies from a single console, ensuring consistency and simplifying administration.</li>
<li id="1f6d" class="ll lm gd ln b lo of lq lr ls og lu lv lw oh ly lz ma oi mc md me oj mg mh mi anr od oe bj" data-selectable-paragraph=""><strong class="ln ge">Granular Access Levels:</strong> Define fine-grained access rules based on user groups, attributes, and contextual factors, such as device type and location.</li>
<li id="1575" class="ll lm gd ln b lo of lq lr ls og lu lv lw oh ly lz ma oi mc md me oj mg mh mi anr od oe bj" data-selectable-paragraph=""><strong class="ln ge">Application-Level Security:</strong> Protect applications hosted on Google Cloud, other cloud providers, or even on-premises infrastructure.</li>
<li id="83c6" class="ll lm gd ln b lo of lq lr ls og lu lv lw oh ly lz ma oi mc md me oj mg mh mi anr od oe bj" data-selectable-paragraph=""><strong class="ln ge">TCP Forwarding:</strong> Secure SSH and RDP connections to VMs without exposing them to public IP addresses.</li>
<li id="f74b" class="ll lm gd ln b lo of lq lr ls og lu lv lw oh ly lz ma oi mc md me oj mg mh mi anr od oe bj" data-selectable-paragraph=""><strong class="ln ge">Integrated Authentication:</strong> Leverage existing identity and access management (IAM) solutions, such as Google Cloud IAM or Active Directory, for seamless authentication and authorization.</li>
</ul>
<h1 id="659a" class="mx my gd be mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu bj" data-selectable-paragraph="">Real-World Benefits of Implementing IAP</h1>
<p id="385a" class="pw-post-body-paragraph ll lm gd ln b lo nv lq lr ls nw lu lv lw nx ly lz ma ny mc md me nz mg mh mi fw bj" data-selectable-paragraph="">Adopting IAP brings a multitude of benefits to cloud environments:</p>
<ul class="">
<li id="c5a4" class="ll lm gd ln b lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi anr od oe bj" data-selectable-paragraph=""><strong class="ln ge">Enhanced Security:</strong> Reduce the risk of data breaches and unauthorized access by enforcing stringent access controls.</li>
<li id="18da" class="ll lm gd ln b lo of lq lr ls og lu lv lw oh ly lz ma oi mc md me oj mg mh mi anr od oe bj" data-selectable-paragraph=""><strong class="ln ge">Simplified Management:</strong> Centralize access policy management and streamline user provisioning.</li>
<li id="ce0c" class="ll lm gd ln b lo of lq lr ls og lu lv lw oh ly lz ma oi mc md me oj mg mh mi anr od oe bj" data-selectable-paragraph=""><strong class="ln ge">Improved User Experience: </strong>Provide users with a secure and consistent access experience across all applications.</li>
<li id="6ba0" class="ll lm gd ln b lo of lq lr ls og lu lv lw oh ly lz ma oi mc md me oj mg mh mi anr od oe bj" data-selectable-paragraph=""><strong class="ln ge">Reduced Operational Costs: </strong>Eliminate the need for VPNs and simplify network management.</li>
</ul>
<h1 id="33d6" class="mx my gd be mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu bj" data-selectable-paragraph="">A User’s Perspective on IAP Implementation</h1>
<p id="47a9" class="pw-post-body-paragraph ll lm gd ln b lo nv lq lr ls nw lu lv lw nx ly lz ma ny mc md me nz mg mh mi fw bj" data-selectable-paragraph="">As a user, I’ve found IAP to be a valuable tool for securing my cloud applications. Its centralized approach and granular access controls have significantly improved the overall security posture of our organization. The integration with existing IAM solutions has made the implementation process seamless, and the overall user experience has been positive.</p>
<p data-selectable-paragraph=""><img decoding="async" src="https://cloud.google.com/iap/images/iap-tcp-forwarding-diagram.png" alt="Overview of TCP forwarding | Identity-Aware Proxy | Google Cloud" /></p>
<h1 id="7736" class="mx my gd be mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu bj" data-selectable-paragraph="">Conclusion: A Powerful Ally in Cloud Security</h1>
<p id="56eb" class="pw-post-body-paragraph ll lm gd ln b lo nv lq lr ls nw lu lv lw nx ly lz ma ny mc md me nz mg mh mi fw bj" data-selectable-paragraph="">Google Cloud IAP stands as a testament to Google’s commitment to providing robust security solutions for cloud environments. Its comprehensive features, ease of implementation, and tangible benefits make it a compelling choice for organizations seeking to safeguard their valuable data and applications. Whether you’re a seasoned cloud administrator or just starting your cloud journey, IAP is an invaluable tool to enhance your organization’s cloud security posture.</p>
<span class="et_bloom_bottom_trigger"></span><p>The post <a href="https://vmlogger.com/algorithms/2023/12/24/google-cloud-iap-a-users-perspective/">Google Cloud IAP A User&#8217;s Perspective</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
<img src="https://feedpress.me/link/23668/16507341.gif" height="1" width="1"/>]]></content:encoded>
      <wfw:commentRss>https://vmlogger.com/algorithms/2023/12/24/google-cloud-iap-a-users-perspective/feed/</wfw:commentRss>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>What is Monotonic Arrays – Algorithm to check if an array is Monotonic</title>
      <link>https://feedpress.me/link/23668/16413021/what-is-monotonic-arrays-algorithm-to-check-if-an-array-is-monotonic</link>
      <comments>https://vmlogger.com/algorithms/2023/10/27/what-is-monotonic-arrays-algorithm-to-check-if-an-array-is-monotonic/#respond</comments>
      <dc:creator><![CDATA[Vishwamitra Mishra]]></dc:creator>
      <pubDate>Fri, 27 Oct 2023 12:35:16 +0000</pubDate>
      <category><![CDATA[Easy]]></category>
      <guid isPermaLink="false">https://vmlogger.com/algorithms/?p=503</guid>
      <description><![CDATA[<p>Monotonic arrays are a fundamental concept in computer science and data structures. They are essential for a wide range of applications, such as searching and sorting algorithms. In this blog post, we&#8217;ll explore two different approaches to check if an array is monotonic: the brute-force method and an optimized single-pass solution. By the end of [&#8230;]</p>
<p>The post <a href="https://vmlogger.com/algorithms/2023/10/27/what-is-monotonic-arrays-algorithm-to-check-if-an-array-is-monotonic/">What is Monotonic Arrays &#8211; Algorithm to check if an array is Monotonic</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
]]></description>
      <content:encoded><![CDATA[<p>Monotonic arrays are a fundamental concept in computer science and data structures. They are essential for a wide range of applications, such as searching and sorting algorithms. In this blog post, we&#8217;ll explore two different approaches to check if an array is monotonic: the brute-force method and an optimized single-pass solution. By the end of this article, you&#8217;ll have a solid understanding of how to determine whether an array is monotonic and how to choose the most efficient approach.</p>
<h2>What is Monotonic Arrays?</h2>
<p>A monotonic array is an array that is entirely non-increasing or non-decreasing. In simpler terms, it means that the elements in the array are in either ascending or descending order. For instance, [1, 2, 3, 4, 5] and [5, 4, 3, 2, 1] are both monotonic arrays, while [1, 3, 2, 4, 5] is not.</p>
<h2>Brute-Force Approach</h2>
<p>Let&#8217;s start with the brute-force approach, which is relatively straightforward. We&#8217;ll iterate through the array and compare adjacent elements. If all adjacent elements maintain the same order (either all increasing or all decreasing), the array is considered monotonic.</p>
<pre class="language-vbnet">
def is_monotonic(arr):
    if len(arr) <= 2:
        return True
    increasing = decreasing = True
    for i in range(1, len(arr)):
        if arr[i] < arr[i - 1]:
            increasing = False
        if arr[i] > arr[i - 1]:
            decreasing = False

    return increasing or decreasing
</pre>
<p>In this code, we initialize two boolean variables, increasing and decreasing, to True. We then loop through the array, comparing adjacent elements. If any element breaks the monotonicity condition, we set the corresponding boolean variable to False. Finally, we return True if either increasing or decreasing is still True, indicating that the array is monotonic.</p>
<p>The brute-force approach works, but it&#8217;s not the most efficient solution, especially when dealing with large arrays. It has a time complexity of O(n), where n is the length of the array.</p>
<h2>Optimized Single-Pass Approach [Better Approach]</h2>
<p>A more efficient solution involves a single-pass approach that doesn&#8217;t require two separate loops for checking both increasing and decreasing monotonicity. Instead, we maintain a single variable to keep track of the direction and compare it with each element.</p>
<pre class="language-vbnet">
def is_monotonic_optimized(arr):
    if len(arr) <= 2:
        return True
    direction = 0  # 0 for unknown, 1 for increasing, -1 for decreasing
    for i in range(1, len(arr)):
        if arr[i] > arr[i - 1]:
            if direction == 0:
                direction = 1
            elif direction == -1:
                return False
        elif arr[i] < arr[i - 1]:
            if direction == 0:
                direction = -1
            elif direction == 1:
                return False

    return True
</pre>
<p>In this optimized approach, we use the direction variable to track the trend of the array. We initialize it as 0 to indicate an unknown direction. As we traverse the array, we compare each element with the previous one and determine the direction. If we encounter an element that doesn't conform to the current direction, we immediately return False. If we complete the loop without any issues, the array is monotonic, and we return `True.</p>
<p>This optimized approach is more efficient and has a time complexity of O(n), the same as the brute-force method, but it traverse through entire array only in worst cases. </p>
<h2>Conclusion</h2>
<p>In this blog post, we've explored two different approaches to check if an array is monotonic. The brute-force approach is relatively simple and straightforward but may not be the most efficient for large arrays. On the other hand, the optimized single-pass approach offers better performance and is a more elegant solution.</p>
<p>When choosing between the two methods, consider the size of your array and the desired efficiency. In most cases, the optimized single-pass approach is the preferred choice. It's concise, efficient, and offers a better performance guarantee.</p>
<p>Remember that understanding and being able to identify monotonic arrays are valuable skills in algorithm and data structure applications, as they can lead to more optimized solutions in various algorithms and problems.</p>
<span class="et_bloom_bottom_trigger"></span><p>The post <a href="https://vmlogger.com/algorithms/2023/10/27/what-is-monotonic-arrays-algorithm-to-check-if-an-array-is-monotonic/">What is Monotonic Arrays &#8211; Algorithm to check if an array is Monotonic</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
<img src="https://feedpress.me/link/23668/16413021.gif" height="1" width="1"/>]]></content:encoded>
      <wfw:commentRss>https://vmlogger.com/algorithms/2023/10/27/what-is-monotonic-arrays-algorithm-to-check-if-an-array-is-monotonic/feed/</wfw:commentRss>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Algorithm to Solve Classic Three-Number Sum Problem</title>
      <link>https://feedpress.me/link/23668/16364753/algorithm-to-solve-classic-three-number-sum-problem</link>
      <comments>https://vmlogger.com/algorithms/2023/09/25/algorithm-to-solve-classic-three-number-sum-problem/#respond</comments>
      <dc:creator><![CDATA[Vishwamitra Mishra]]></dc:creator>
      <pubDate>Mon, 25 Sep 2023 11:37:01 +0000</pubDate>
      <category><![CDATA[Easy]]></category>
      <category><![CDATA[Medium]]></category>
      <guid isPermaLink="false">https://vmlogger.com/algorithms/?p=489</guid>
      <description><![CDATA[<p>Introduction The Three-Number Sum problem is a classic algorithmic challenge that involves finding all unique triplets in an array that add up to a given target sum. This problem is both intriguing and useful, as it has applications in areas such as data analysis, optimization, and combinatorial problem-solving. In this blog post, we will delve [&#8230;]</p>
<p>The post <a href="https://vmlogger.com/algorithms/2023/09/25/algorithm-to-solve-classic-three-number-sum-problem/">Algorithm to Solve Classic Three-Number Sum Problem</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
]]></description>
      <content:encoded><![CDATA[<h2>Introduction</h2>
<p>The Three-Number Sum problem is a classic algorithmic challenge that involves finding all unique triplets in an array that add up to a given target sum. This problem is both intriguing and useful, as it has applications in areas such as data analysis, optimization, and combinatorial problem-solving. In this blog post, we will delve into an efficient algorithmic approach to solve the Three-Number Sum problem, providing a step-by-step explanation of the solution.</p>
<h2>Understanding the Problem</h2>
<p>Before we jump into the solution, let&#8217;s ensure we have a clear understanding of the problem. Given an array of integers and a target sum, our objective is to find all unique sets of three numbers in the array that add up to the target sum. The order of the numbers within each triplet is not important, and duplicates should be avoided.</p>
<h2>Algorithmic Approach</h2>
<p>To solve the Three-Number Sum problem efficiently, we&#8217;ll employ a two-pointer technique along with sorting the array. Here&#8217;s a step-by-step breakdown of the algorithm:</p>
<p>Sort the array in ascending order. This step is crucial as it allows us to apply the two-pointer technique effectively.</p>
<p>Initialize an empty result set or a list to store the unique triplets that sum up to the target value.</p>
<p>Iterate through the sorted array from left to right until the second-to-last element, considering each element as a potential first number of the triplet.</p>
<p>Within the outer loop, set two pointers, &#8216;left&#8217; and &#8216;right,&#8217; initially pointing to the elements immediately to the right of the current element.</p>
<p>While the &#8216;left&#8217; pointer is less than the &#8216;right&#8217; pointer, perform the following steps:</p>
<div class="alert alert-info">
<ol>
<li>a. Calculate the current sum by adding the elements at indices &#8216;i,&#8217; &#8216;left,&#8217; and &#8216;right.&#8217;</li>
<li>b. If the current sum is equal to the target sum, add the triplet [array[i], array[left], array[right]] to the result set.</li>
<li>c. If the current sum is less than the target sum, increment the &#8216;left&#8217; pointer to explore larger values.</li>
<li>d. If the current sum is greater than the target sum, decrement the &#8216;right&#8217; pointer to explore smaller values.</li>
</ol>
</div>
<p>Continue steps 4 and 5, adjusting the pointers accordingly until they meet or cross each other. At that point, move to the next element in the outer loop.</p>
<p>Once the iteration is complete, return the result set containing all unique triplets that sum up to the target value.</p>
<h2>Implementation in Python</h2>
<pre>
def threeNumberSum(array, targetSum):
    # Write your code here.
    res = []
    array.sort()
    for i in range(len(array) - 2):
        left = i + 1
        right = len(array) - 1
        while left < right:
            if targetSum == array[i] + array[left] + array[right]:
                res.append([array[i], array[left], array[right]])
                left += 1
                right -= 1
            elif targetSum < array[i] + array[left] + array[right]:
                right -= 1
            else:
                left += 1
    return res
</pre>
<h2>Explanation of the Algorithm</h2>
<p>The algorithm utilizes the fact that a sorted array provides a convenient way to traverse through it using two pointers. By sorting the array, we ensure that smaller elements are towards the left, while larger elements are towards the right.</p>
<p>The two-pointer technique enables us to explore all possible combinations of three numbers efficiently. By keeping one pointer fixed (the 'left' pointer) and adjusting the other pointer (the 'right' pointer), we can find all unique triplets without duplicates.</p>
<p>By continuously comparing the current sum with the target sum, we can move the pointers accordingly, eliminating the need for nested loops and achieving a time complexity of O(n^2).</p>
<h2>Conclusion</h2>
<p>The Three-Number Sum problem presents an interesting challenge that can be solved efficiently using a two-pointer technique and a sorted array. By following the step-by-step algorithmic approach explained in this blog post, you can identify all unique triplets that add up to a given target sum.</p>
<div class="alert alert-warning">
Remember, sorting the array is crucial for the algorithm to work correctly, and the time complexity of the solution is O(n^2), where 'n' represents the size of the input array.</div>
<p>By applying this algorithmic approach, you'll be equipped to tackle the Three-Number Sum problem and other similar combinatorial challenges efficiently. Happy coding!</p>
<span class="et_bloom_bottom_trigger"></span><p>The post <a href="https://vmlogger.com/algorithms/2023/09/25/algorithm-to-solve-classic-three-number-sum-problem/">Algorithm to Solve Classic Three-Number Sum Problem</a> appeared first on <a href="https://vmlogger.com/algorithms">Algorithms</a>.</p>
<img src="https://feedpress.me/link/23668/16364753.gif" height="1" width="1"/>]]></content:encoded>
      <wfw:commentRss>https://vmlogger.com/algorithms/2023/09/25/algorithm-to-solve-classic-three-number-sum-problem/feed/</wfw:commentRss>
      <slash:comments>0</slash:comments>
    </item>
  </channel>
</rss>
