<?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: riyaz7us</title>
    <description>The latest articles on DEV Community by riyaz7us (@riyaz7us).</description>
    <link>https://dev.to/riyaz7us</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%2F292039%2F24cfe518-0819-4e08-81a1-9fdeae0eea6c.jpg</url>
      <title>DEV Community: riyaz7us</title>
      <link>https://dev.to/riyaz7us</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/riyaz7us"/>
    <language>en</language>
    <item>
      <title>7 Years in Web Development: Key Lessons I’ve Learned</title>
      <dc:creator>riyaz7us</dc:creator>
      <pubDate>Sun, 11 May 2025 18:05:14 +0000</pubDate>
      <link>https://dev.to/riyaz7us/7-years-in-web-development-key-lessons-ive-learned-3k4o</link>
      <guid>https://dev.to/riyaz7us/7-years-in-web-development-key-lessons-ive-learned-3k4o</guid>
      <description>&lt;p&gt;I’ve had a privilege to work with several clients across multiple industries including pharma, education, e-commerce, agriculture, cloud and many more. From from building a simple WordPress website to developing a native platform, I’ve had a fun as well as daunting experience. I’d like to share a few things I learnt during my design journey.&lt;/p&gt;

&lt;h1&gt;
  
  
  Don’t Know How to Design UI? Follow Design Patterns
&lt;/h1&gt;

&lt;p&gt;There are several design patterns you can choose from, such as Google’s  &lt;strong&gt;Material Design&lt;/strong&gt;, Microsoft’s  &lt;strong&gt;Fluent Design&lt;/strong&gt;, Shopify’s  &lt;strong&gt;Polaris&lt;/strong&gt;, and Apple’s  &lt;strong&gt;Human Interface Guidelines&lt;/strong&gt;. These guidelines help your website meet human expectations because they are based on years of research on aesthetics and accessibility.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3w1ukit411krsiv4hagd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3w1ukit411krsiv4hagd.jpg" alt="Photo by Tranmautritam: https://www.pexels.com/photo/two-imac-s-with-keyboard-and-phones-on-desk-326503/" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Additionally, you can follow UI trends like  &lt;strong&gt;Glassmorphism&lt;/strong&gt;,  &lt;strong&gt;Neumorphism&lt;/strong&gt;,  &lt;strong&gt;Skeuomorphism&lt;/strong&gt;,  &lt;strong&gt;Minimalism&lt;/strong&gt;, and  &lt;strong&gt;Heat Mapping&lt;/strong&gt;. Just make sure you follow the right guidelines so that your design doesn’t hurt readability and accessibility.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Design is not just what it looks like and feels like. Design is how it works.&lt;/p&gt;

&lt;p&gt;-- Don Norman&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Use Native Components/Elements to Ensure Reliability
&lt;/h1&gt;

&lt;p&gt;In the past, I built several applications using Vue 2, relying heavily on the Vuetify 2 UI Framework. Most of the elements I used were based on that framework, so even a simple title tag was  &lt;code&gt;&amp;lt;v-card-title&amp;gt;&lt;/code&gt;  instead of just  &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Eventually, Vue 3 was released, which is faster and more reliable and includes new features like the composition API. Vuetify also updated to version 3, but the numerous changes to the syntax made it tough for me to adapt.&lt;/p&gt;

&lt;p&gt;Therefore, I recommend using native elements as much as possible unless you are adding a complex component like a calendar or a chart.&lt;/p&gt;

&lt;h1&gt;
  
  
  Learn Many Frameworks but Stick to One
&lt;/h1&gt;

&lt;p&gt;Learning multiple frameworks not only makes you flexible and opens up various career opportunities but also helps you understand different features across frameworks.&lt;/p&gt;

&lt;p&gt;However, you should aim to master at least one framework. This will make your development workflow smoother.&lt;/p&gt;

&lt;p&gt;Imagine knowing a framework inside out but missing key features like watchers. You might find workarounds, but things could have been easier.&lt;/p&gt;

&lt;h1&gt;
  
  
  Keep Things Natural
&lt;/h1&gt;

&lt;p&gt;While some developers may disagree, I prefer not to introduce classes or types to plain JavaScript. I like to keep things simple. Regardless of how good object-oriented programming (OOP) or type systems in JavaScript can be, they often don’t feel right.&lt;/p&gt;

&lt;p&gt;Remember how React moved from class components to functional components? The reasons included  &lt;strong&gt;readability&lt;/strong&gt;,  &lt;strong&gt;performance&lt;/strong&gt;, and the complexity of using “this.”&lt;/p&gt;

&lt;p&gt;TypeScript has its own limitations, too. You may not always find third-party npm libraries that work well with TypeScript, and most of their documentations focus heavily on JavaScript. Plus, TypeScript again compiles down to JavaScript.&lt;/p&gt;

&lt;p&gt;However, if you’re someone who came from a typed language like Java, you might prefer OOP and TypeScript.&lt;/p&gt;

&lt;h1&gt;
  
  
  Build Your Own Framework
&lt;/h1&gt;

&lt;p&gt;No there’s no need to build a complete framework like React, there are several and they keep coming. You’d rather constitute your components built with hard work into one small framework.&lt;/p&gt;

&lt;p&gt;For example, if you have created an image upload component, an accordion, and an image slider, these components took time to build and can be reused in future projects. Organize them well for reuse.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F990gzfzv5dxxtsyyvkkn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F990gzfzv5dxxtsyyvkkn.jpg" alt="Photo by Pixabay: https://www.pexels.com/photo/brown-squirrel-34109/&amp;lt;br&amp;gt;
" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Design Heavily Depends on Demographics
&lt;/h1&gt;

&lt;p&gt;During my development journey, I often focused on aesthetics without considering demographics. Later, several criticisms after a hard work made me realize the importance of demographics. A website aimed at young/energetic may use high saturation and multiple colors. Older users or office workers might prefer lower contrast and fewer colors.&lt;/p&gt;

&lt;p&gt;For instance, gaming websites tend to have lots of animations, videos, larger text, and gradients, while landing pages for CRM focus on detailed information, use 2–3 colors, include screenshots, and display charts. Here are some more examples of demographics matching with design trends.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  A product landing page could use Minimalist design.&lt;/li&gt;
&lt;li&gt;  A jewelry website could feature a black background with gold fonts.&lt;/li&gt;
&lt;li&gt;  A real estate website could use parallax images.&lt;/li&gt;
&lt;li&gt;  An e-commerce application might have a plain background with products displayed upfront.&lt;/li&gt;
&lt;li&gt;  An artist’s website could feature pastel colors and crayon effects.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;It’s essential to consider both the developer’s convenience and the customer’s preferences in web development. Ignoring these aspects can lead to reduced developer productivity and dissatisfied clients.&lt;/p&gt;

&lt;p&gt;As Alan Cooper once said, “Good design is a lot like clear thinking made visual.” By applying these lessons, you can create better user experiences and more efficient workflows.&lt;/p&gt;

&lt;h1&gt;
  
  
  BONUS: Minimalist Design Pattern Reduces Your Hassle
&lt;/h1&gt;

&lt;p&gt;Learn more about minimalist design patterns and look out for their examples. By reducing unnecessary content, these patterns can make your designs not only simpler but also more visually appealing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F482uov1u2jei7rsxpfvm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F482uov1u2jei7rsxpfvm.jpg" alt="Photo by Vecislavas Popa: https://www.pexels.com/photo/gray-glass-bowl-on-top-of-white-wooden-cupboard-813688/&amp;lt;br&amp;gt;
" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  BONUS: Drink Plenty of Water
&lt;/h1&gt;

&lt;p&gt;Find some triggers to remind yourself when you need to drink water, like whenever you get stuck on a bug, or whenever you added a new function. You can also use the same triggers to meditate or walk. Try this and people start noticing changes in you (I mean positive changes).&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>learning</category>
      <category>development</category>
    </item>
    <item>
      <title>FileSystem API: Large File Client-Side Storage For Your Website</title>
      <dc:creator>riyaz7us</dc:creator>
      <pubDate>Mon, 31 May 2021 12:47:52 +0000</pubDate>
      <link>https://dev.to/riyaz7us/filesystem-api-large-file-storage-your-website-2k9</link>
      <guid>https://dev.to/riyaz7us/filesystem-api-large-file-storage-your-website-2k9</guid>
      <description>&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3zv69qbk0tez8as3zj9.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3zv69qbk0tez8as3zj9.png" alt="Credits: SyncFusion JS File Manager"&gt;&lt;/a&gt;&lt;br&gt;
My client asked me to provide &lt;strong&gt;'download'&lt;/strong&gt; option on their video, just like native apps, where the video can be saved but would only be accessible to the specific app.&lt;/p&gt;

&lt;p&gt;I finally stumbled upon FileSystem API, which allows sandboxed storage where the website will be given a specific storage space (just like how a virtual disk works).&lt;/p&gt;

&lt;p&gt;I started testing my luck with a small video file. Two links that helped me the most were &lt;a href="https://www.html5rocks.com/en/tutorials/file/filesystem//" rel="noopener noreferrer"&gt;HTML5 Rocks&lt;/a&gt; and &lt;a href="https://stackoverflow.com/questions/11943499/playing-videos-from-chrome-filesystem-not-working-on-android" rel="noopener noreferrer"&gt;StackOverflow&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I created the following function that requests FileSystem API from the browser:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;initFileSystem() {
  //Possible ways to access filesystem
  window.requestFileSystem =
    window.requestFileSystem || window.webkitRequestFileSystem;

  //Define maximum size to allocate (I set it to 500MB), Set callback and an error handler
  window.requestFileSystem(
    window.TEMPORARY,
    500 * 1024 * 1024,
    onInitFs,
    errorHandler
  );

  function errorHandler(e) {
    console.log("Error: " + e);
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then I created the following callback function that creates a video (getfile). I fetched the video using XHR and saved it as a blob using FileWriter.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//Callback function
function onInitFs(fs) {
  _fs = fs;
  saveVideo(fs);
}

function saveVideo(fs) {
  //Creates file named video.mp4
  fs.root.getFile(
    "video.mp4",
    { create: true, exclusive: true },
    //Writes file after fetching
    function (fileEntry) {
      fileEntry.createWriter(function (fileWriter) {
        fetchResource(fileWriter);
      }, errorHandler);
    },
    errorHandler
  );
}

//Fetches video using XHR
function fetchResource(fileWriter) {
  var xhr = new XMLHttpRequest();
  xhr.responseType = "arraybuffer";
  xhr.open("GET", "http://example:com/video.mp4", true);

  //Convert Video To Blob
  xhr.onload = function (e) {
    if (this.status == 200) {
      var bb = new Blob([this.response]);
      fileWriter.write(bb);
    } else {
      console.log(this.status);
    }
  };
  xhr.send();
}

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

&lt;/div&gt;



&lt;p&gt;Finally, I created an HTML5 video player and appended the video blob as URL.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;video id="ourVideo" controls=""&amp;gt;&amp;lt;/video&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Note: Create the same initFileSystem function for playing video&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function onInitFs(fs) {
  _fs = fs;
  playVideo(fs);
}

function playVideo(fs) {
  //Fetches file from filesystem
  fs.root.getFile(
    filename,
    {},
    function (fileEntry) {
      console.log(fileEntry);

      document.querySelector("#ourVideo").src=fileEntry.fullPath;
      fileEntry.file(function (file) {
        var reader = new FileReader();
        reader.onloadend = function (e) {
          document.querySelector("#ourVideo").play();
        };
        reader.readAsText(file);
      }, errorHandler);
    },
    errorHandler
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, &lt;code&gt;fileEntry.fullPath&lt;/code&gt; creates a filesystem url (&lt;code&gt;filesystem:http://example:com/temporary/video.mp4&lt;/code&gt;) to fetch video from FileSystem.&lt;/p&gt;

&lt;p&gt;Unfortunately, FileSystem is only supported by a few Chromium based browsers (Edge, Chrome, Chrome for Android, Opera, Samsung Internet) and is no longer standardized by W3C. &lt;/p&gt;

&lt;p&gt;I hope that chrome would keep it afloat and other browsers (Firefox, Safari) would implement the same or provide an alternative.&lt;/p&gt;

</description>
      <category>filesystem</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>html</category>
    </item>
    <item>
      <title>Static Nuxt app with PWA?</title>
      <dc:creator>riyaz7us</dc:creator>
      <pubDate>Sat, 08 Aug 2020 15:46:35 +0000</pubDate>
      <link>https://dev.to/riyaz7us/static-nuxt-app-with-pwa-30o7</link>
      <guid>https://dev.to/riyaz7us/static-nuxt-app-with-pwa-30o7</guid>
      <description>&lt;p&gt;I've seen that I can build nuxt apps in SPA/Universal mode with PWA features. Amazingly I can also generate static pages using 'nuxt generate' command. &lt;/p&gt;

&lt;p&gt;However, I don't find any option to generate static pages with PWA as a plus. I want to know if it's possible. If yes, then how?&lt;/p&gt;

&lt;p&gt;Edit: I figured out that PWA wasn't working because of absence of SSL. Otherwise, it's fine with any mode. &lt;/p&gt;

</description>
      <category>vue</category>
      <category>javascript</category>
      <category>nuxt</category>
      <category>pwa</category>
    </item>
    <item>
      <title>Anyone who worked with Wordpress as well as Laravel?</title>
      <dc:creator>riyaz7us</dc:creator>
      <pubDate>Sun, 22 Dec 2019 20:50:35 +0000</pubDate>
      <link>https://dev.to/riyaz7us/anyone-who-worked-with-wordpress-as-well-as-laravel-3p1</link>
      <guid>https://dev.to/riyaz7us/anyone-who-worked-with-wordpress-as-well-as-laravel-3p1</guid>
      <description>&lt;p&gt;Hi, I am an intermediate developer who has been working with wordpress. &lt;/p&gt;

&lt;p&gt;I have been struggling with different issues like coding structure and database interaction with wordpress. &lt;/p&gt;

&lt;p&gt;However, I got to know that laravel provides a better pattern and structure when compared to wordpress. can you show me the differences that make laravel better?&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>wordpress</category>
      <category>php</category>
    </item>
    <item>
      <title>Cannot filter posts by ACF relationship values</title>
      <dc:creator>riyaz7us</dc:creator>
      <pubDate>Fri, 13 Dec 2019 20:37:17 +0000</pubDate>
      <link>https://dev.to/riyaz7us/cannot-filter-posts-by-acf-relationship-values-4p1j</link>
      <guid>https://dev.to/riyaz7us/cannot-filter-posts-by-acf-relationship-values-4p1j</guid>
      <description>&lt;p&gt;The question belongs to Wordpress and Advanced Custom Fields.&lt;/p&gt;

&lt;p&gt;I have created two post types i.e., 'courses' and 'universities'. In courses, I created a relationship 'related_university' that connects courses to universities. However, I could not filter my courses by relationship values (title or any other field).&lt;/p&gt;

&lt;p&gt;the following method works for me when I print the title of the related university:&lt;/p&gt;

&lt;p&gt;$result[] = array(&lt;br&gt;
            "id" =&amp;gt; get_the_ID(),&lt;br&gt;
            "title" =&amp;gt; get_the_title(),&lt;br&gt;
            "rel_university_name" =&amp;gt; get_field("related_university")[0]-&amp;gt;post_title,&lt;br&gt;
            );&lt;/p&gt;

&lt;p&gt;However, I get no results when I use the same method to filter my posts by the title:&lt;/p&gt;

&lt;p&gt;$args['meta_query'][] = array(&lt;br&gt;
        'key' =&amp;gt; get_field('related_university')[0]-&amp;gt;post_title,&lt;br&gt;
        'value' =&amp;gt; $related_university_title,&lt;br&gt;
        'compare' =&amp;gt; 'LIKE'&lt;br&gt;
        );&lt;/p&gt;

</description>
      <category>php</category>
      <category>wordpress</category>
      <category>advancedcustomfields</category>
      <category>acf</category>
    </item>
  </channel>
</rss>
