<?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: Ajmal Hassan</title>
    <description>The latest articles on DEV Community by Ajmal Hassan (@ajmalhassan).</description>
    <link>https://dev.to/ajmalhassan</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%2F170755%2F8387ed7a-fd22-45bb-866e-928b8421ee22.jpeg</url>
      <title>DEV Community: Ajmal Hassan</title>
      <link>https://dev.to/ajmalhassan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ajmalhassan"/>
    <language>en</language>
    <item>
      <title>Halftone text effect using HTML &amp; CSS</title>
      <dc:creator>Ajmal Hassan</dc:creator>
      <pubDate>Thu, 23 Sep 2021 10:16:02 +0000</pubDate>
      <link>https://dev.to/ajmalhassan/halftone-text-effect-using-html-css-30d9</link>
      <guid>https://dev.to/ajmalhassan/halftone-text-effect-using-html-css-30d9</guid>
      <description>&lt;p&gt;Long story short, got fascinated with &lt;a href="https://en.wikipedia.org/wiki/Halftone"&gt;Halftone&lt;/a&gt; and took a crack at it...&lt;/p&gt;

&lt;p&gt;Drop a ❤️&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/ajmalhassankn/embed/KKqBbRN?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>html</category>
      <category>css</category>
      <category>codepen</category>
    </item>
    <item>
      <title>Sunday Fun: Music Player</title>
      <dc:creator>Ajmal Hassan</dc:creator>
      <pubDate>Mon, 24 Aug 2020 06:02:20 +0000</pubDate>
      <link>https://dev.to/ajmalhassan/sunday-fun-music-player-ui-3jd7</link>
      <guid>https://dev.to/ajmalhassan/sunday-fun-music-player-ui-3jd7</guid>
      <description>&lt;p&gt;Saw a cool design, opened codepen and the rest was... well...&lt;br&gt;
you tell me.&lt;/p&gt;

&lt;p&gt;drop a ❤️ if you like it.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/ajmalhassankn/embed/NWNbZJO?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>codepen</category>
      <category>html</category>
      <category>css</category>
      <category>javascript</category>
    </item>
    <item>
      <title>My go to places for beautiful free web templates</title>
      <dc:creator>Ajmal Hassan</dc:creator>
      <pubDate>Sun, 05 Jan 2020 17:50:33 +0000</pubDate>
      <link>https://dev.to/ajmalhassan/my-go-to-places-for-beautiful-free-web-templates-39e5</link>
      <guid>https://dev.to/ajmalhassan/my-go-to-places-for-beautiful-free-web-templates-39e5</guid>
      <description>&lt;h3&gt;
  
  
  1. &lt;a href="https://cruip.com/free-templates/"&gt;Cruip.com&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;It was purely by accident that I stumbled on to this website and it was long before they started offering paid templates, I've used them in a couple of my projects and found it to be pretty good.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. &lt;a href="https://www.creative-tim.com/templates/free"&gt;Creative-tim.com&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;While cruip mainly focuses on landing pages, creative-tim has you covered for dashboards and UI kits.&lt;/p&gt;




&lt;p&gt;I have scouted around for free templates from other sites but more often than not ran into some licensing issues.&lt;/p&gt;

&lt;p&gt;If you know of good websites to get free web templates sans the licensing issues, please let me know in the comments.&lt;/p&gt;

</description>
      <category>html</category>
    </item>
    <item>
      <title>[JS bits] Value vs Reference variable assignment</title>
      <dc:creator>Ajmal Hassan</dc:creator>
      <pubDate>Wed, 04 Dec 2019 17:34:57 +0000</pubDate>
      <link>https://dev.to/ajmalhassan/js-bits-value-vs-reference-variable-assignment-1pnb</link>
      <guid>https://dev.to/ajmalhassan/js-bits-value-vs-reference-variable-assignment-1pnb</guid>
      <description>&lt;p&gt;&lt;strong&gt;Assignment&lt;/strong&gt; is one of the first things we are introduced to while learning JavaScript and it's of paramount importance to understand how Javascript does this to ensure that you write bug free code that doesn't changes values unintentionally.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's get down to business
&lt;/h2&gt;

&lt;p&gt;When assignment is performed between two variables and the value that gets assigned is one of the five primitive types (Number, String, Boolean, Null and undefined) then a copy of the actual value is assigned. On the other hand, when the value getting assigned is one of the special types (Array, Function, Object), a reference to the value gets assigned.&lt;/p&gt;

&lt;p&gt;So what does this mean for you?&lt;/p&gt;

&lt;h2&gt;
  
  
  Example Time!
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Assignment of primitive type
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;num1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;num2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;num1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;num2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// output: 1 1 &lt;/span&gt;

&lt;span class="nx"&gt;num2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;num2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// output: 1 2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;num1&lt;/code&gt; is assigned a value of type Number and then &lt;code&gt;num2&lt;/code&gt; is assigned &lt;code&gt;num1&lt;/code&gt;, since &lt;code&gt;num1&lt;/code&gt; is a primitive type, &lt;code&gt;num2&lt;/code&gt; is set as equal to the value in &lt;code&gt;num1&lt;/code&gt; and is an entirely separate from &lt;code&gt;num1&lt;/code&gt; and so reassigning &lt;code&gt;num2&lt;/code&gt; to 2 has no effect on &lt;code&gt;num1&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Assignment of special type
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;person1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;John Doe&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;person2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;person1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;person1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;person2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="c1"&gt;// output: {name: "John Doe"} {name: "John Doe"}&lt;/span&gt;

&lt;span class="nx"&gt;person2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Sam Smith&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Reassigning person2&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;person1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;person2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="c1"&gt;// output: {name: "Sam Smith"} {name: "Sam Smith"}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The difference between both types of assignment can be seen clearly, as the reassignment of &lt;code&gt;person2&lt;/code&gt; affects &lt;code&gt;person1&lt;/code&gt; since only the &lt;strong&gt;reference&lt;/strong&gt; of the value in &lt;code&gt;person1&lt;/code&gt; is assigned to &lt;code&gt;person2&lt;/code&gt; as &lt;code&gt;person1&lt;/code&gt; is a special type and not a primitive type. &lt;/p&gt;

&lt;p&gt;If left unchecked this could result in unintentional bugs that'll be tricky to debug.&lt;/p&gt;

&lt;h3&gt;
  
  
  Liked the post? Show some ❤️
&lt;/h3&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Assignment_Operators"&gt;MDN Web Docs — Assignment operators&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>javascript</category>
      <category>jsbits</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Remove duplicates from an Array the short &amp; sweet way!</title>
      <dc:creator>Ajmal Hassan</dc:creator>
      <pubDate>Fri, 22 Nov 2019 03:28:26 +0000</pubDate>
      <link>https://dev.to/ajmalhassan/remove-duplicates-from-an-array-the-easy-way-10k9</link>
      <guid>https://dev.to/ajmalhassan/remove-duplicates-from-an-array-the-easy-way-10k9</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;tldr;&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;numbers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;([...&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;)])&lt;/span&gt; &lt;span class="c1"&gt;//output:  [1,2,3,4]&lt;/span&gt;
&lt;span class="c1"&gt;// OR&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt; &lt;span class="c1"&gt;//output: [1,2,3,4]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;The long version&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;lets start by looking at what a &lt;code&gt;Set&lt;/code&gt; is...&lt;/p&gt;

&lt;p&gt;According to &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set#Description" rel="noopener noreferrer"&gt;MDN&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Set objects are collections of values. You can iterate through the elements of a set in insertion order. &lt;code&gt;A value in the Set may only occur once;&lt;/code&gt; it is unique in the Set's collection.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What we can understand from the above is that Sets are like Arrays, in the sense that they are a collection of values that you can iterate through but the prime difference lies in the fact that is highlighted above i.e&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;A value in the Set may only occur once;&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The above property of a Set is what we will be leveraging to expell duplicates from our array.&lt;/p&gt;

&lt;h4&gt;
  
  
  Let's now cut to the chase and see some code,
&lt;/h4&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%2Fquotefancy.com%2Fmedia%2Fwallpaper%2F3840x2160%2F1700728-Linus-Torvalds-Quote-Talk-is-cheap-Show-me-the-code.jpg" 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%2Fquotefancy.com%2Fmedia%2Fwallpaper%2F3840x2160%2F1700728-Linus-Torvalds-Quote-Talk-is-cheap-Show-me-the-code.jpg" alt="Talk is cheap, show me the code"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;so, consider an array riddled with duplicates&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;numbers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We're going to divide the process into two steps&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Converting Array to Set
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;//output: {1,2,3,4}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you may have noticed, The duplicates have been eliminated! also another thing to notice is that eventhough Sets and Arrays have their similarities, the notation they use are different.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Converting Set to Array
&lt;/h3&gt;

&lt;p&gt;There are two ways of going about this&lt;/p&gt;

&lt;h4&gt;
  
  
  a) Using &lt;code&gt;spread operator&lt;/code&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;([...&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;)])&lt;/span&gt; &lt;span class="c1"&gt;//output: [1,2,3,4]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  b) Using &lt;code&gt;Array.from()&lt;/code&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt; &lt;span class="c1"&gt;//output: [1,2,3,4]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Liked the post? Show some ❤️
&lt;/h3&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set" rel="noopener noreferrer"&gt;MDN Web Docs — Set&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>javascript</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
