<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ishani Gupta</title>
    <description>The latest articles on DEV Community by Ishani Gupta (@ishanigupta27).</description>
    <link>https://dev.to/ishanigupta27</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F53282%2F2f38f132-e587-427b-b51a-68e148e84550.jpeg</url>
      <title>DEV Community: Ishani Gupta</title>
      <link>https://dev.to/ishanigupta27</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ishanigupta27"/>
    <language>en</language>
    <item>
      <title>VPN ? ah.. What?</title>
      <dc:creator>Ishani Gupta</dc:creator>
      <pubDate>Thu, 19 Dec 2019 05:58:57 +0000</pubDate>
      <link>https://dev.to/ishanigupta27/virtual-private-network-pin</link>
      <guid>https://dev.to/ishanigupta27/virtual-private-network-pin</guid>
      <description>&lt;p&gt;Do you connect to VPN before you access your office network? Is it one of those mundane mindless tasks that you do ( But don't know why)? What if I tell you that there are a lot of interesting things which happen when you connect to VPN via your home computer.&lt;/p&gt;

&lt;p&gt;The goal of this post is to explain VPN in the simplest way possible.&lt;/p&gt;

&lt;p&gt;Let me start with a simple idea shown in below cartoon. Let's say Alex wants to &lt;strong&gt;secretly&lt;/strong&gt; drive from A to B location. You must be thinking what do I mean by secretly? Is the source location secret or the destination secret or the person (Alex) secret? Let's take the last case i.e. everyone knows that someone is travelling from A to B but have no clue it is Alex!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fo1f76prz8b24xr4bh2hx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fo1f76prz8b24xr4bh2hx.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With the intent to keep Alex identity secret, travelling in a black-windowed car is a solution to escape &lt;em&gt;onlookers&lt;/em&gt;. Thus, Alex gets his car windows tinted black and achieves the goal of privacy! Simple, right?&lt;/p&gt;

&lt;p&gt;With the above picture in mind, let's step into the technical world. Replace Alex in the above cartoon with a data packet on the internet as shown in below figure. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F932zrcci1xkkfdsjp479.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F932zrcci1xkkfdsjp479.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The green region is the whole internet. The &lt;em&gt;onlookers&lt;/em&gt; are other points on the internet which can read the content of your transmitted package. The goal to be met is simple: &lt;strong&gt;Do NOT show &lt;em&gt;onlookers&lt;/em&gt; internet packet content&lt;/strong&gt;. What VPN provides is the opaque casing for your internet package (just like the black-windowed car for Alex) to meet this goal. This opaque casing is in the form of encoding data so that only a computer with the right decoder will be able to read and use it. To explain this in detail, let me go through what happens at the backend when you connect to VPN to access your office network. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fkwie01ssw0klos7dkl0k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fkwie01ssw0klos7dkl0k.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As shown in the above figure, as soon as you connect to office VPN, your internet traffic starts getting encrypted and is sent to X server which lies in a private network configured by your corporation. What is a private network is a story in itself. For now, it can be considered a &lt;strong&gt;haven&lt;/strong&gt; where there are no government/cybercriminals / Internet Providers sniffing your data.&lt;/p&gt;

&lt;p&gt;Once the packet reaches X, it is filtered, monitored and decapsulated before it reaches the desired destination i.e. an office resource within this haven. Since there are no onlookers in this &lt;strong&gt;haven&lt;/strong&gt;[Orange Region], data can freely move (without the need of encryption) in it. The flow is repeated in the opposite direction when traffic is sent from office resources to your home computer. In this scenario, X encrypts the data, sends it to your home computer where it is decrypted. Only your home computer and X server knows how to decrypt the data hence, keeping the corporation's data secure! In other words, your home computer has become a member of this &lt;strong&gt;haven&lt;/strong&gt;. The extension of &lt;strong&gt;haven&lt;/strong&gt; (&lt;strong&gt;P&lt;/strong&gt;rivate &lt;strong&gt;N&lt;/strong&gt;etwork) via internet (i.e. virtually) gives the name as &lt;strong&gt;V&lt;/strong&gt;irtual &lt;strong&gt;P&lt;/strong&gt;rivate &lt;strong&gt;N&lt;/strong&gt;etwork.&lt;/p&gt;

&lt;p&gt;The process of encrypting the data packet is called Tunneling in technical term. There are various encryption algorithms about which you can read &lt;a href="https://www.cactusvpn.com/beginners-guide-to-vpn/vpn-encryption/#encryption-algorithms" rel="noopener noreferrer"&gt;here&lt;/a&gt;. To be honest, the story about the VPN does not finish here. In fact, it barely starts. For instance, a VPN is used not only to hide the content of the data packet but also to misinform onlookers about the source/destination location. Clever, right? Let me leave you with this food for thought on how it would be happening (Think about it/ Discuss in Comments below before googling it, Readers!).&lt;/p&gt;

</description>
      <category>networking</category>
      <category>vpn</category>
      <category>privacy</category>
    </item>
    <item>
      <title>Virtualization: Russian Dolls of Tech World.</title>
      <dc:creator>Ishani Gupta</dc:creator>
      <pubDate>Tue, 19 Jun 2018 22:03:24 +0000</pubDate>
      <link>https://dev.to/ishanigupta27/virtualization-russian-dolls-of-tech-world-3h5g</link>
      <guid>https://dev.to/ishanigupta27/virtualization-russian-dolls-of-tech-world-3h5g</guid>
      <description>&lt;p&gt;Kubernetes, Containers, Virtual Machines, Bare metal? All Greek words to me. My journey to understand them started when I was working in Oracle as a developer where we were using Kubernetes. But, trust me, using Kubernetes and knowing it are two different worlds, and generally, I do not feel comfortable to work with concepts I do not understand.&lt;/p&gt;

&lt;p&gt;Let me fast forward my life almost eight months, and now, I am a graduate student in Computer Science. I took it upon myself to understand all the concepts which I implemented earlier (but never knew their intricate working). So, I will split the understanding of kubernetes into three blogs. Well, it took me a long time to understand it, I hope three blogs can justify the topic.&lt;/p&gt;

&lt;p&gt;The basics lie in virtualization. So, let me start the story by addressing whys, whats and hows.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Why Virtualization?
&lt;/h2&gt;

&lt;p&gt;What happens when you write top in your terminal?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FYPSiy_1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3hd14z9ozjbz6qojjh48.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FYPSiy_1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3hd14z9ozjbz6qojjh48.png" alt="Individual processes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You get all the processes running on your machine as shown above. The beauty which lies in this is that the operating system is designed in such a way to make all these processes believe that they are the only process running on OS. Each process is assigned a time slice in which is to operate as if it is the single process running. You can read more about this here. This concept of faking the exclusiveness of a process on OS is known as Process Isolation. Extending this idea, there was the advent of the approach to not only isolate a process but isolate a bunch of processes (as if faking a different computer) as a whole and hence, the birth of virtualization. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--z5I386__--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/uegq59ypta3scnnqig6j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--z5I386__--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/uegq59ypta3scnnqig6j.png" alt="Virtualiation = Russian Dolls for Computer Science"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. How Virtualization?
&lt;/h2&gt;

&lt;p&gt;To execute this brilliant idea, many approaches were taken. The most straightforward plan was to have an OS which runs this multiple OSs. Seems obvious choice? Right?&lt;br&gt;
Let me take the liberty to call this host OS as Hypervisor. There are more intricacies to it but for now, let's assume that this is a specialized operating system which has bare minimum functionalities to act as a host to run all the different operating systems you want to run.&lt;br&gt;
Simple and easy. One quick note: This concept of running multiple operating systems on a single hardware and making them believe that as if they are the only one is virtualizing (instead of actual). &lt;/p&gt;

&lt;p&gt;There are many other ways in which virtualization can be achieved. One quick idea I can inject in your mind is: Why go for all the trouble to have a specific OS which helps other OSs to work independently? We can have restricted the access boundaries of various processes to specific files and isolate the bunch of processes which can give a feel as if these bunches are working on different systems altogether. I know this is heavy and a lot to digest at one go! So take a pause and re-read the evil idea mentioned in this paragraph. &lt;/p&gt;

&lt;p&gt;Trust me it is going to be a fun ride in understanding the timeline of virtualization! Stay Tuned, Next blog on the way :)&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>virtualization</category>
      <category>kubernetes</category>
      <category>containers</category>
    </item>
    <item>
      <title>All the ways to collect garbage</title>
      <dc:creator>Ishani Gupta</dc:creator>
      <pubDate>Fri, 25 May 2018 04:02:58 +0000</pubDate>
      <link>https://dev.to/ishanigupta27/all-the-ways-to-collect-garbage-14k8</link>
      <guid>https://dev.to/ishanigupta27/all-the-ways-to-collect-garbage-14k8</guid>
      <description>&lt;p&gt;As promised in my previous blog, I am writing about some of the techniques used by different programming languages to automatically collect the dead/no-more-used objects during runtime.&lt;/p&gt;

&lt;p&gt;There are broadly three schemes/techniques which is the core of garbage collection. I will try writing about these three in the as straightforward way as possible. Also, I will go one step ahead and discuss the fourth technique, developed by the combination of the three schemes. Let's start!&lt;/p&gt;

&lt;h1&gt;
  
  
  1. Reference Counting
&lt;/h1&gt;

&lt;p&gt;The idea behind this type of garbage collection is to keep track of usage of an object at every point of the program. This idea means as soon as an object becomes garbage (To know when an object becomes eligible for waste, read geeksforgeeks), the space occupied by the object is rehabilitated by putting the free space address in a free list. Then, new objects are allocated by matching the required space with the available spaces on the free list. This concept appears very attractive because it makes sense to do garbage collection as soon as garbage is there. Does it? Take a step back from the virtual world, and enter the real world. Do you run to the dumpster at the end of your lane every time you have to throw away the gum packet? You don't, right? You collect the garbage in your dustbin, and when the bin is full, you go to the dumpster. In computer science, this is known as a lazy approach, i.e., to take action only when needed. This leads us to the second technique available for garbage collection.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F3f8v1o2cyeuexqojyzdi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F3f8v1o2cyeuexqojyzdi.png" alt="Run to throw away your garbage "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  2. Mark and Sweep.
&lt;/h1&gt;

&lt;p&gt;Let's enter the real world again. Whenever you dustbin is full, you stop all your essential works ( Well, that could be watching Beyonce video too) and dump the dustbin to the dumpster at the end of your lane. This concept that process stops doing anything else and throws away the garbage is known as "Stop-the-World." Mark and Sweep is one of the algorithms which builds upon Stop the World. Whenever the free memory for allocation is finished, the garbage collector kicks in and starts working. This being clear, let's see how the algorithm works once the process is stopped from working. It works by having two phases. Firstly, it goes to all the registers, global variables and local variables {This is known as root set} and goes to all the objects reachable from the root set. It marks these reachable objects ( the live objects) and exits. Then there is the second phase of sweeping the whole heap. During this sweeping, everything not marked is the garbage, and their corresponding addresses are inscribed in the free list for future object allocations.&lt;/p&gt;

&lt;p&gt;Writing this blog, I feel I have given a lot of information in very few words with few dangling pieces of information. So, I will stop here for this blog and continue about the other two types of garbage collectors in my next blog.&lt;/p&gt;

&lt;p&gt;Till then, which languages you use and do you have any idea which type of garbage collectors they use.&lt;/p&gt;

&lt;p&gt;Happy coding.&lt;/p&gt;

</description>
      <category>garbagecollection</category>
      <category>java</category>
      <category>runtime</category>
      <category>coding</category>
    </item>
    <item>
      <title>Are you worried where your garbage goes?</title>
      <dc:creator>Ishani Gupta</dc:creator>
      <pubDate>Mon, 14 May 2018 16:53:31 +0000</pubDate>
      <link>https://dev.to/ishanigupta27/are-you-worried-where-your-garbage-goes-2k4l</link>
      <guid>https://dev.to/ishanigupta27/are-you-worried-where-your-garbage-goes-2k4l</guid>
      <description>&lt;p&gt;I have started with Java as my programming language and developed many applications in Java only (Ok, sometimes python) for 3 years. It is when I started my first official study in computer science, I realized there is a huge hue and cry about memory management. I started doing my college projects in C/C++, and realized, Uff !! I have to worry where my variables stay in memory and if they are not needed anymore, I have to free up space too. It is strange that till the time we face a problem, we never know that exists and it is handled for us (as Java handles it for us). This intrigued me into taking system classes in my college to get in-depth knowledge about how garbage(i.e. variables not used anymore) is collected in Java and how I coded carefree in Java for 3 years!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fdim356rgpxvtl3hcazbf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fdim356rgpxvtl3hcazbf.png" alt="Where is your garbage going ?"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ok, starting from scratch. You put int x=5. During the runtime i.e. execution of the program, this x is going to point towards a location of 4 bytes on the heap which has 5 as a value. You used this x in one line of your 1000 lines of code and then not use it anymore! What is scary to thing is that these 4 bytes are locked for a variable which is hardly used anymore in your program. Solution: Use lesser variables? Not possible: we know that these high-level programming languages are meant to give us the freedom to use whatever we want! That’s what helped to code and earn a living out of it despite never having any official education in computer science! Another solution: there should be some way that computer (in the very naive way) keep checking for these left /unused bytes in memory and keep deallocating them for us.&lt;/p&gt;

&lt;p&gt;There are many algorithms/schemes which are used in mixed and match style to do this automatic cleaning for us. They deviate on various logics. Some of these logics answer the following questions. Ponder upon them before knowing these logics!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;When to garbage collect? &lt;br&gt;
As soon as a variable is not used. &lt;br&gt;
When the memory is full i.e. when it is utterly needed to do it!&lt;br&gt;
Once in a while.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Should we stop the allocation when garbage collecting?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Should the allocation be done in this way that garbage collecting is more efficient and cleaner?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Is there a pattern in the way objects stay alive/ useful?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I will try answering these questions with real implementations in my next blog. Till then Happy garbaging, oops I mean coding!&lt;/p&gt;

&lt;p&gt;Orginally posted on : &lt;a href="https://medium.com/@ishani.gupta27.ig/" rel="noopener noreferrer"&gt;https://medium.com/@ishani.gupta27.ig/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>garbagecollection</category>
      <category>java</category>
      <category>runtime</category>
      <category>coding</category>
    </item>
    <item>
      <title>Nevertheless, Ishani Gupta Coded</title>
      <dc:creator>Ishani Gupta</dc:creator>
      <pubDate>Mon, 05 Mar 2018 22:13:36 +0000</pubDate>
      <link>https://dev.to/ishanigupta27/nevertheless-ishani-gupta-coded--5647</link>
      <guid>https://dev.to/ishanigupta27/nevertheless-ishani-gupta-coded--5647</guid>
      <description>&lt;h2&gt;
  
  
  I began to code because...
&lt;/h2&gt;

&lt;p&gt;It is so satisfying!I love when my applications breathe!&lt;/p&gt;

&lt;h2&gt;
  
  
  I recently overcame...
&lt;/h2&gt;

&lt;p&gt;the ability to accept the fact that we are always in the mode of learning. It takes me the effort to enjoy the journey to a final destination. I have started pacing down and enjoying the journey to final application.&lt;/p&gt;

&lt;h2&gt;
  
  
  I want to brag about...
&lt;/h2&gt;

&lt;p&gt;I am a chemical undergraduate with a master's degree in petroleum engineering. Then, I self-taught computer sciences and got into Oracle as a software engineer. Now, I am doing my second master's in Computer Science. &lt;/p&gt;

&lt;h2&gt;
  
  
  My advice for allies to support women and non-binary folks who code is....
&lt;/h2&gt;

&lt;p&gt;Never Give Up! Grasp from any source around, Learn, Implement and Move on!&lt;/p&gt;

</description>
      <category>wecoded</category>
    </item>
  </channel>
</rss>
