<?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: itsharshag</title>
    <description>The latest articles on DEV Community by itsharshag (@itsharshag).</description>
    <link>https://dev.to/itsharshag</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%2F611469%2F34aefae6-9747-40eb-94fc-c7d12a266774.jpg</url>
      <title>DEV Community: itsharshag</title>
      <link>https://dev.to/itsharshag</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/itsharshag"/>
    <language>en</language>
    <item>
      <title>UI vs UX</title>
      <dc:creator>itsharshag</dc:creator>
      <pubDate>Sun, 10 Apr 2022 14:25:48 +0000</pubDate>
      <link>https://dev.to/itsharshag/ui-vs-ux-3c4j</link>
      <guid>https://dev.to/itsharshag/ui-vs-ux-3c4j</guid>
      <description>&lt;p&gt;If you have been curious about the difference between UI and UX, this article will help you in understanding the difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  User Interface (UI)
&lt;/h2&gt;

&lt;p&gt;UI designers deal with the visual aspect of a product.&lt;/p&gt;

&lt;p&gt;They are responsible for the look and feel of a website. They deal with things like typography, white space, and colors to make a website look good They focus on having a contrast between text and other elements on a page to ensure readability and accessibility. They think about the layout of the website like which is the best area to place a piece of text or an image or a button. They make designs for multiple screen sizes like laptops and mobiles. They integrate the brand's identity into the whole design by using brand colors and brand-specific graphics. They ensure that the design of the different pages is consistent.&lt;/p&gt;

&lt;h2&gt;
  
  
  User Experience
&lt;/h2&gt;

&lt;p&gt;UX designers are responsible for designing and optimizing the user experience of a product.&lt;/p&gt;

&lt;p&gt;UX designers think about how to enhance a product and make it more user-friendly. They analyze whether interacting with the product is straightforward or not. Is the experience smooth or clunky? They map out and optimize the user journey which is all the possible ways a user can interact with a product. They take care of things like how many steps is it taking to do a particular task. They try to reduce complexity. They talk to users, see the analytics data, and critically think about ways to improve the experience of a product.&lt;/p&gt;

&lt;h2&gt;
  
  
  Now, let's go over a few examples
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Example 1
&lt;/h3&gt;

&lt;p&gt;Suppose you have a quotes website where you have curated the quotes from the best authors and celebrities in the world.&lt;/p&gt;

&lt;p&gt;The UX designer discovers that what people often do is that they copy a quote by selecting the desired text manually and then send it to their friends. The UX designer proposes the addition of a copy button to allow users to copy the text with a button click. The UX designer came up with a solution to improve the user experience.&lt;/p&gt;

&lt;p&gt;The UI designer will now think about where to place the copy button, what icon to use for it, and what should be the color for it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example 2
&lt;/h3&gt;

&lt;p&gt;You have a gaming news website&lt;/p&gt;

&lt;p&gt;The UX designer discovers that people are coming to the signup page but only a small percentage of people finish signup. The designer investigates and finds that the signup form is long. It's asking for Full Name, Email, Password, Gender, Address, and Preferences. Users don't like this and don't signup. The designer proposes that we only ask for the full name, email, and password and after a user logs in, we can get the other details eventually.&lt;/p&gt;

&lt;p&gt;Now, the UI designer makes the desired changes to the form and ensures that the design still looks good.&lt;/p&gt;

&lt;p&gt;In this example also, the UX designer identified the area of improvement and proposed a solution for it. The UI designer made the necessary visual changes and ensured that the new design is consistent with the rest of the design.&lt;/p&gt;

&lt;p&gt;So, that’s it in a nutshell. I hope you got an idea of the difference between UI and UX.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Horizontal and Vertical Scaling</title>
      <dc:creator>itsharshag</dc:creator>
      <pubDate>Sat, 19 Mar 2022 09:01:27 +0000</pubDate>
      <link>https://dev.to/itsharshag/vertical-scaling-and-horizontal-scaling-2bg6</link>
      <guid>https://dev.to/itsharshag/vertical-scaling-and-horizontal-scaling-2bg6</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/GTsVuSWYHCw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Imagine you have built a website that solves mathematical equations. You receive an equation as input and calculate the solutions on your server and return them back. And your server runs on a machine that has 1GB RAM and a 2-cores CPU. And you get 100 requests per hour which your server is able to respond to within an acceptable time.&lt;/p&gt;

&lt;p&gt;But suddenly your website gets popular in the academic circles and starts receiving 1000s of requests per hour. You notice a heavy slowdown of responses on your website and even some failed requests.&lt;/p&gt;

&lt;p&gt;To fix this situation, you will need to scale your servers. There are two approaches to scaling your servers: &lt;strong&gt;Horizontal and Vertical&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vertical Scaling (or scaling up)&lt;/strong&gt; means switching to a better machine or upgrading your current machine. That means you switch to a machine that has more resources like more RAM, more CPU Cores, more storage, and better networking hardware. So, upgrading your existing set of machines refers to vertical scaling.&lt;/p&gt;

&lt;p&gt;But you can’t infinitely vertical scale your servers. With much more bulky machines, the chance of them getting shut down is more and there is also a physical limit on how large a single machine can be. Also, if this machine goes down, people will not be able to visit your website until the machine and your server boot up.&lt;/p&gt;

&lt;p&gt;To fix this, we have the &lt;strong&gt;horizontal scaling (or scaling out)&lt;/strong&gt; approach. We create a pool of machines with the same configuration and then distribute incoming requests to them. Even if one of the machines goes down, the load can be distributed over to the remaining machines. This takes care of the single point of failure issue.&lt;/p&gt;

&lt;p&gt;In practice, we use both horizontal and vertical scaling. Tools like &lt;strong&gt;Kubernetes&lt;/strong&gt;, &lt;strong&gt;AWS ASG&lt;/strong&gt;, and &lt;strong&gt;AWS LB&lt;/strong&gt; allow us to manage horizontal and vertical scaling with ease.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Lessons I learned from my failed side project</title>
      <dc:creator>itsharshag</dc:creator>
      <pubDate>Sat, 19 Mar 2022 09:00:03 +0000</pubDate>
      <link>https://dev.to/itsharshag/lessons-i-learned-from-my-failed-side-project-1g17</link>
      <guid>https://dev.to/itsharshag/lessons-i-learned-from-my-failed-side-project-1g17</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/QgJkMo2Y2Tg"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;I worked on a side project for six months. Even though I failed with it, I learned a lot of valuable lessons from it. In this blog, I will share those with you. Hopefully, they will be useful in your journey too.&lt;/p&gt;

&lt;p&gt;You can have all the fun you want with your side project. Go ahead and use those experimental technologies and do wild things in your project. But in case you do want it to grow into a business, it will be best to avoid these mistakes:&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Don't write your code in a new technology for fun or performance&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Coming from React, I was attracted to Svelte's simplicity and hence decided to use it to build my side project. If I would have used React, I could have reused a lot of code that I had written in the past.&lt;/p&gt;

&lt;p&gt;I migrated my express server to Go in between to get "performance" to remain future-proof and handle more requests with fewer resources. Hardly 10 users landed daily on my website and here I was concerned about "performance".&lt;/p&gt;

&lt;p&gt;All this time I spent learning svelte and code migrations could have utlized in sales and marketing.&lt;/p&gt;

&lt;p&gt;Use a new technology only when it solves a pressing need.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Don't reinvent the wheel&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I rewrote my side project in SvelteKit because I was looking for server-side-rendering. SvelteKit was in beta at that stage, I faced compatibility issues, and doing simple stuff involved a lot of reading and exploration.&lt;/p&gt;

&lt;p&gt;Instead of SvelteKit, I could have chosen a mature technology like Next.js.&lt;/p&gt;

&lt;p&gt;I also designed components like Cards and Tabs myself to have the most "optimized" JS bundle.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Build the product and users will come&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Nope, they won't. You will have to build distribution channels.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build a large waitlist&lt;/li&gt;
&lt;li&gt;Reach out to friends and family&lt;/li&gt;
&lt;li&gt;Post content regularly on social media&lt;/li&gt;
&lt;li&gt;Engage with people online&lt;/li&gt;
&lt;li&gt;Build a community on Discord&lt;/li&gt;
&lt;li&gt;Invest in a blog and SEO&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After spending six months on the product, I had &amp;lt;200 registered users. A good Product Hunt launch brings 200+ users in just a few days.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Introduction to Content Delivery Networks</title>
      <dc:creator>itsharshag</dc:creator>
      <pubDate>Sat, 19 Mar 2022 08:57:58 +0000</pubDate>
      <link>https://dev.to/itsharshag/a-quick-intro-to-cdns-3g9h</link>
      <guid>https://dev.to/itsharshag/a-quick-intro-to-cdns-3g9h</guid>
      <description>&lt;p&gt;Unless you are Warren Buffet, you will most likely need a fancy website with images, videos, and unique styles to capture the attention of your audience. But usually all of this can sum up to a lot of data. Images and videos are heavy. CSS and JS code combined for even a regular website can be a significant amount.&lt;/p&gt;

&lt;p&gt;To reduce the load of all of these things that you can put in public and ensure fast delivery to the people who are viewing your website, you can use a CDN (Content Delivery Network). A CDN is designed to deliver all static assets of a website like images and videos to end users at a fast speed.&lt;/p&gt;

&lt;p&gt;CDNs are a globally distributed set of servers that cache your static assets whenever any user visits your website for the first time. All the subsequent requests from that user and other users will be a lot faster because they will be receiving a cached copy of the asset. CDNs are geographically located in a higher number of locations, and that ensures that your user will receive the cached as quickly as possible. The load times for images, videos, and styles will be reduced, and your users will have a better experience.&lt;/p&gt;

&lt;p&gt;Unless you are deploying your applications on the edge, most application servers are present in only one or just a couple of locations. Even if you're deploying on the edge, using a CDN to serve static assets is a better choice as it reduces the number of requests on your servers and reduces the load on your application servers.&lt;/p&gt;

&lt;p&gt;A couple of widely used CDNs are Cloudflare, Amazon CloudFront, and Akamai CDN.&lt;/p&gt;

&lt;p&gt;I like to use Cloudflare because it's free and has a great onboarding experience. I use it for a number of my projects. I connect Cloudflare to a public bucket on BackBlaze and then when once the cache gets built, Cloudflare serves assets at fast speeds.&lt;/p&gt;

&lt;p&gt;This is a great article on how to connect a BackBlaze bucket to Cloudflare to cache assets for your website: &lt;a href="https://help.backblaze.com/hc/en-us/articles/217666928-Using-Backblaze-B2-with-the-Cloudflare-CDN"&gt;https://help.backblaze.com/hc/en-us/articles/217666928-Using-Backblaze-B2-with-the-Cloudflare-CDN&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
