<?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: Dhiren Serai</title>
    <description>The latest articles on DEV Community by Dhiren Serai (@dhirensr).</description>
    <link>https://dev.to/dhirensr</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%2F917602%2Fdab31d91-b472-4d85-99fd-18f26694dc43.png</url>
      <title>DEV Community: Dhiren Serai</title>
      <link>https://dev.to/dhirensr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dhirensr"/>
    <language>en</language>
    <item>
      <title>You don't know this yet - Fun Java concepts Part 2</title>
      <dc:creator>Dhiren Serai</dc:creator>
      <pubDate>Thu, 02 Feb 2023 01:01:54 +0000</pubDate>
      <link>https://dev.to/dhirensr/you-dont-know-this-yet-fun-java-concepts-part-2-1ik</link>
      <guid>https://dev.to/dhirensr/you-dont-know-this-yet-fun-java-concepts-part-2-1ik</guid>
      <description>&lt;p&gt;Fun concepts according to my definition are concepts which are somewhat there in the language and is not an advanced concept but is helpful to know. I didn't knew what else to call them, these are interesting but not really advanced concepts.&lt;/p&gt;

&lt;p&gt;Literals in Java&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Confusion with Zero's ?&lt;/strong&gt;&lt;br&gt;
I have this problem, when I work with bigger numbers having lots of zero's, I get confused as to how many zero's are there in the variable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Literals{

public static void main(String args[]){


int number = 10_000_000;

System.out.println(number);
}

}


~/open_source/java_scripts$ java Literals 
10000000

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice how the number having lots of zero's is now separated with underscores making it easier for us to count how many zero's are there in the integer and also increases readability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upcasting and Downcasting of Datatypes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Type casting is when you assign a value of one primitive data type to another type.&lt;br&gt;
Now like me you may wonder what are primitive data types?&lt;/p&gt;

&lt;p&gt;In computer science, primitive data types are a set of basic data types from which all other data types are constructed.&lt;br&gt;
Something which is the base data type of the language and is implemented in the language. When the datatype is derived then it's not primitive but rather &lt;strong&gt;"composite"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Most common example in Java would be char being a primitive data type and String which is derived from char is a composite data type.&lt;/p&gt;

&lt;p&gt;Coming back to type casting :&lt;br&gt;
In Java we have two types of type casting :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upcasting : 
When the reference variable of super class refers to the object of subclass, it is known as widening or upcasting in java.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words, when the subclass object type is converted into superclass type, it is called widening or upcasting.&lt;/p&gt;

&lt;p&gt;Widening Casting (automatically) - converting a smaller type to a larger type size&lt;br&gt;
byte -&amp;gt; short -&amp;gt; char -&amp;gt; int -&amp;gt; long -&amp;gt; float -&amp;gt; double&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Downcasting : 
When subclass reference refers to super class object, it is called narrowing or downcasting in java. In other words, when sub class type is converted into super class type, it is called downcasting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Narrowing Casting - converting a larger type to a smaller size type&lt;br&gt;
double -&amp;gt; float -&amp;gt; long -&amp;gt; int -&amp;gt; char -&amp;gt; short -&amp;gt; byte &lt;/p&gt;

&lt;p&gt;Casting is done by programmers a lot of times in code inorder to convert between data types, what can be missed is the order of upcasting and downcasting.&lt;/p&gt;

&lt;p&gt;Above order shows that if we try to convert a double to integer it will lead to an error, something like :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;possible lossy conversion from double to int
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Casting is a familiar concept but sometimes it's very tricky to have the order of data types in mind while casting otherwise it will lead to application errors.&lt;/p&gt;




&lt;p&gt;Part 1 : &lt;a href="https://dev.to/dhirensr/you-dont-know-this-yet-advanced-java-concepts-part-1-19n8"&gt;https://dev.to/dhirensr/you-dont-know-this-yet-advanced-java-concepts-part-1-19n8&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This brings us to end of the Java blog series part 2 and I hope you enjoyed reading this post. &lt;br&gt;
I will continue this series of Java on different topics and concepts which I have found interesting while programming in Java.&lt;br&gt;
I also share content on Twitter : &lt;a href="https://twitter.com/DhirenSerai" rel="noopener noreferrer"&gt;DhirenSerai&lt;/a&gt;.&lt;br&gt;
Also do let me know if you think I should document anything else that would be interesting to you.&lt;/p&gt;

</description>
      <category>cryptocurrency</category>
      <category>crypto</category>
      <category>web3</category>
    </item>
    <item>
      <title>You don't know this yet - Advanced Java concepts Part 1</title>
      <dc:creator>Dhiren Serai</dc:creator>
      <pubDate>Sun, 29 Jan 2023 19:25:28 +0000</pubDate>
      <link>https://dev.to/dhirensr/you-dont-know-this-yet-advanced-java-concepts-part-1-19n8</link>
      <guid>https://dev.to/dhirensr/you-dont-know-this-yet-advanced-java-concepts-part-1-19n8</guid>
      <description>&lt;p&gt;Hello everyone,&lt;br&gt;
I'm Dhiren Serai, currently working for AWS S3 and I use Java extensively on a daily basis. I'm starting to write some blog posts series about Java as I have realized some new things about Java which is worth documenting and didn't come obviously to me until I read them. Hence this is the motivation for me to start writing this blog post series called &lt;strong&gt;"You don't know this yet".&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Java is divided into two parts i.e. Core Java (J2SE) and Advanced Java (JEE). The core Java part covers the fundamentals (data types, functions, operators, loops, thread, exception handling, etc.) of the Java programming language. &lt;/p&gt;

&lt;p&gt;Today we will start discussing about Arrays. Even though you will be surprised that Array isn't really an advanced concept and is taught in one of the first few lessons of any programming language course. This is true, but I'm not going to tell about how arrays work here but some interesting things I have noticed with Arrays in Java.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arrays - Definition&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An array is a fixed size, homogeneous data structure. The limitation of arrays is that they're fixed in size. It means that we must specify the number of elements while declaring the array.&lt;/p&gt;

&lt;p&gt;Most of the people including me, think what if we don't know how many elements will be inserted into the array and we exceed the number that was declared in the program?&lt;/p&gt;

&lt;p&gt;Hence, was born dynamic arrays in Java. The dynamic array is a variable size list data structure. It grows automatically when we try to insert an element if there is no more space left for the new element.&lt;/p&gt;

&lt;p&gt;Then I tried this program, thinking that when I would declare an array of 100 elements, only to get reminded that index in Computer Science starts from 0 to 99 and not 1 to 100.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class MyArray{

public static void main(String args[]){


int[] a = new int[100]; // Allocate array in the heap, a points to the array
a[0] = 13;
a[1] = 26;
System.out.println(a.length); // read-only access .length -- 100
a[100] = 13;

}

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;100
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 100 out of bounds for length 100
    at MyArray.main(MyArray.java:10)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Deep Copy vs Shallow Copy in Java&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The shallow copy of an object will have exact copy of all the fields of original object. If the original object from which shallow copy is made is changed, that will  lead to change to shallow copy object. This property is what makes it &lt;strong&gt;"shallow"&lt;/strong&gt;, because the copy is still not independent of the original object.&lt;br&gt;
Shallow copy is not 100% disjoint from original object. Shallow copy is not 100% independent of original object.&lt;/p&gt;

&lt;p&gt;Deep copy of an object will have exact copy of all the fields of original object just like shallow copy.&lt;br&gt;
Any changes made to cloned object will not be reflected in original object or vice versa.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to check for Shallow vs Deep Copy in Java?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A simple program to check which functions can be used to check for shallow vs deep copy in Java:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import java.util.Objects ;
import java.util.Arrays;

class MyArray{

public static void main(String args[]){

String[] firstArray  = {"a", "b", "c"};
String[] secondArray = {"a", "b", "c"};

System.out.println("Are they equal 1    ? " + firstArray.equals(secondArray) );
System.out.println("Are they equal 2    ? " + Objects.equals(firstArray, secondArray) );

System.out.println("Are they deepEqual 1? " + Arrays.deepEquals(firstArray, secondArray) );
System.out.println("Are they deepEqual 2? " + Objects.deepEquals(firstArray, secondArray) );

}

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dhirensr@dhirensr-XPS-9315:~/open_source/java_scripts$ java MyArray 
Are they equal 1    ? false
Are they equal 2    ? false
Are they deepEqual 1? true
Are they deepEqual 2? true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This brings us to end of the Java Array blog. I hope you have enjoyed this post on Java Array. With this, we come to an end to this blog. I will continue this series of Java on different topics and concepts which I have found interesting while programming in Java.&lt;br&gt;
I also share content on &lt;a href="https://twitter.com/DhirenSerai" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;.&lt;br&gt;
Also do let me know if you think I should document anything else that would be interesting to you.&lt;/p&gt;

</description>
      <category>database</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Application Level Caching Overview and uses</title>
      <dc:creator>Dhiren Serai</dc:creator>
      <pubDate>Fri, 09 Sep 2022 00:41:53 +0000</pubDate>
      <link>https://dev.to/dhirensr/application-level-caching-overview-and-uses-part-1-5703</link>
      <guid>https://dev.to/dhirensr/application-level-caching-overview-and-uses-part-1-5703</guid>
      <description>&lt;p&gt;Latency and cost of Internet based services are a major concern for maintainers and to continue user's demands and to improve the availablility and scalability of the application encourages the usage of application level caching.&lt;/p&gt;

&lt;p&gt;Dynamically generated web content is a major part of the web requests where the content changes based on the user request and due to this, the rate at which dynamic documents are delivered is often slower than static documents. Therefore, dynamic content place a load on the server which can lead to performance bottlenecks.&lt;/p&gt;

&lt;p&gt;One of the techniques used to meet user's demands and reduce overhead on the servers is &lt;strong&gt;caching&lt;/strong&gt;. Caching can reduce the user perceived latency and Internet traffic, and improve the scalability and availability of servers.&lt;/p&gt;

&lt;p&gt;Application-level caching is placed on the server-side and typically uses a key-value in-memory store system to cache frequently accessed or expensive to compute data that remain not cached in other caching levels, lowering the load on database or services that are difficult to scale up.&lt;/p&gt;

&lt;p&gt;Even though the concept is quite popular nowadays in applications, there are still designs which the developers integrating in system design need to take care of.&lt;/p&gt;

&lt;p&gt;The design should pose four main questions :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How to cache the data?&lt;/li&gt;
&lt;li&gt;What data should be cached?&lt;/li&gt;
&lt;li&gt;When should be the data be cached?&lt;/li&gt;
&lt;li&gt;Where the cached data should be put ?&lt;/li&gt;
&lt;li&gt;For how long should be data be cached and then cache should get updated?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There are lots of resources online on how to use caching optimally and also there are tools available.&lt;/p&gt;

&lt;p&gt;For Caching, Memcached and Redis are popular solutions and are a critical web infrastructure component.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Caching Example on server side:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Caching on webserver can be implemented at many places depending on the architecture of the system.Depending on where caching is implemented, different types of content can be cached like the final HTML page , intermediate HTML or XML&lt;br&gt;
fragments,database queries, or database tables.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZJBBOpYR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e0t5mkkzaxlzr1md7fdp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZJBBOpYR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e0t5mkkzaxlzr1md7fdp.png" alt="Image description" width="621" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The figure llustrates an example where an application level cache is used to lower the application workload. The application gets an HTTP request from the user and then goes to the webserver, then webserver tries to search the data in the cache, depending on how the cache is implemented. If the data is found in the cache it would result in a cache hit, otherwise it would be cache miss. In case of cache miss, webserver would query the data to the database itself, which could take a bit longer for the first time. But once it obtains the data from database, it would put it in cache again to serve the request from the user again in the future. Based on the caching strategy, the developers of the webserver would need to decide on how long would the data be cached.&lt;/p&gt;

&lt;p&gt;Memcached  and Redis are popular solutions and are a critical web infrastructure component.&lt;/p&gt;




&lt;p&gt;If you liked reading the content, please do share it with other people who you think might be interested. &lt;br&gt;
Also I do regularly post content on Twitter, do follow me &lt;a href="https://twitter.com/DhirenSerai"&gt;@DhirenSerai&lt;/a&gt; for more.&lt;/p&gt;

</description>
      <category>caching</category>
      <category>backend</category>
      <category>systems</category>
      <category>api</category>
    </item>
    <item>
      <title>Top Linux Commands that will help you for text processing.</title>
      <dc:creator>Dhiren Serai</dc:creator>
      <pubDate>Mon, 29 Aug 2022 22:25:00 +0000</pubDate>
      <link>https://dev.to/dhirensr/top-linux-commands-that-will-help-you-for-text-processing-3apk</link>
      <guid>https://dev.to/dhirensr/top-linux-commands-that-will-help-you-for-text-processing-3apk</guid>
      <description>&lt;p&gt;Have you ever felt the need to process text in logs to search something in a massive amount of logs ? Have you ever tried to search in the logs which were compressed? Did you try to search by uncompressing it first? Were the log files having patterns from which you had to extract some text?&lt;/p&gt;

&lt;p&gt;This blog post covers some helpful commands and their usage in Linux for text processing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Viewing all the text files together in the directory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the text files or log files of a Software component is splitted across different files as it's common for log files to be split on an hourly basis in a large system where the logs are then rotated on an hourly/minutely basis. While searching logs, you want to view them all aggregated together and then search instead of going through each file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
cat * | less
or 
cat logs_files* | less

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;cat with a wildcard pattern would help with that.&lt;/p&gt;

&lt;p&gt;But cat command will not work if the files are compressed ? &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;zcat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;use the below command to view the text files all appended together , and this will work even if the text files are compressed, it decompresses it in memory and shows the output text.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
zcat * | less
or 
to view all the log files starting with logs_pattern
zcat logs_pattern* | less

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Grep &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The grep command is one of the most useful commands in a Linux terminal environment. The name grep stands for "global regular expression print". This means that you can use grep to check whether the input it receives matches a specified pattern&lt;br&gt;
so if you want to search a specific pattern or text in a file then you could use grep to find it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grep "pattern" file
#if you want to make it search accross all files
cat * | grep "pattern" file
or 
zcat * | grep "pattern" file

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;grep tool is not only used for matching patterns in files but can also be used to filter out certain patterns&lt;br&gt;
&lt;br&gt;
 &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grep -v pattern myfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt; tells grep to print only those lines which do not match the pattern.&lt;/p&gt;

&lt;p&gt;Now that we are done with finding the text were looking for in the text files or logs , and now we want to extract some information from them?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;sed and awk&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While it's difficult to cover all the different types of usage in a single blog post as each of the command would require 1 blog post, I would still try to give an overview as to how these commands will be helpful.&lt;/p&gt;

&lt;p&gt;sed is a useful text processing feature of GNU/Linux. The full form of &lt;code&gt;sed&lt;/code&gt; is Stream Editor&lt;/p&gt;

&lt;p&gt;Unix provides &lt;code&gt;sed and awk&lt;/code&gt; as two text processing utilities that work on a line-by-line basis.&lt;/p&gt;

&lt;p&gt;The sed program (stream editor) works well with character-based processing, and the awk program (Aho, Weinberger, Kernighan) works well with delimited field processing.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;awk '{print $3}' filename

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will display only the third column from filename&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sed -n '/hello/p' file1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will display all the lines which contains hello&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sed 's/hello/HELLO/' file1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will substitute hello with HELLO everywhere in the file. the 's' in the command is for substitution.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tr - translate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;this command is used to translate the characters in a file in some other forms like squeezing the repetitive characters and replacing it with the single occurrence of that character or deleting a character.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tr -d ',' &amp;lt; file1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will delete all the occurrence of comma(",") from the file file1.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tr -d "hello" &amp;lt; file1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will delete all the occurrence of any of the characters h or e or l or o from the file fle1.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;jq &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The JQ command can be used in many different ways; It can be used directly on a JSON file and can also be combined with several other commands to interpret JSON data.&lt;/p&gt;

&lt;p&gt;jq command is very powerful when working with JSON data which could be obtained from a REST API or from logs of a server.&lt;/p&gt;

&lt;p&gt;Let's say example JSON is this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{"users":{"name": "Dhiren","id": "001"}}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to extracts the inner map of users, we would use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;jq '.users' users.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To extract the name we would use the following :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;jq '.users.name' users.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's all for today! I'm a LINUX enthusiast and would cover more blogs related to Linux, Cloud Computing and Software development in general. I post daily on my &lt;a href="https://twitter.com/DhirenSerai"&gt;twitter account&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Let's connect!&lt;/p&gt;

&lt;p&gt;✨ &lt;a href="https://twitter.com/DhirenSerai"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✨ &lt;a href="https://github.com/dhirensr"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>programming</category>
      <category>computerscience</category>
    </item>
  </channel>
</rss>
