<?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: Hannan Ali</title>
    <description>The latest articles on DEV Community by Hannan Ali (@computistic).</description>
    <link>https://dev.to/computistic</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%2F11836%2F8170969.jpeg</url>
      <title>DEV Community: Hannan Ali</title>
      <link>https://dev.to/computistic</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/computistic"/>
    <language>en</language>
    <item>
      <title>My semi-formal Introduction</title>
      <dc:creator>Hannan Ali</dc:creator>
      <pubDate>Tue, 03 May 2022 22:18:05 +0000</pubDate>
      <link>https://dev.to/computistic/my-semi-formal-introduction-5809</link>
      <guid>https://dev.to/computistic/my-semi-formal-introduction-5809</guid>
      <description>&lt;p&gt;Hello World,&lt;/p&gt;

&lt;p&gt;Every now and then I have to write a page introducing myself to the world and convey that somehow I matter and this is just one of those.&lt;/p&gt;

&lt;p&gt;I am Hannan Ali, and I have been coding for a long time now. Before, I introduce you I just want to tell you that I love software development and playing with computers. So much so, that I happily gave up my formal education to pursue it full time before time.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is my stack, you ask?
&lt;/h3&gt;

&lt;p&gt;I don’t like boxes personally, and defining one’s stack is just that. A box.&lt;/p&gt;

&lt;p&gt;As long as it requires code and the problem is interesting enough, I am always open to learn new technologies, languages, frameworks, you name it!&lt;/p&gt;

&lt;p&gt;Saying that, I would leave you confused, if I don’t give you a relative measure for my technology prowess.&lt;/p&gt;

&lt;p&gt;Hence, I hereby proclaim, to all thy fellow readers, that I can be confidently placed in the categories below for hiring purposes ;) .&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js and it’s frameworks and libraries&lt;/li&gt;
&lt;li&gt;Cloudflare Workers&lt;/li&gt;
&lt;li&gt;Google Cloud Platform&lt;/li&gt;
&lt;li&gt;React.JS (maybe get a smaller box when it comes to this)&lt;/li&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Fixing Cross Browser Compatibility Issues&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Do I learn new things?
&lt;/h3&gt;

&lt;p&gt;Yes, I love to learn new things.&lt;/p&gt;

&lt;p&gt;Right now, I am learning Rust programming language so I can write Cloudflare Workers in Rustlang.&lt;/p&gt;

&lt;p&gt;Also preparing for a Google Cloud Certification at the moment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do you have one of those PDF documents called Resume?
&lt;/h3&gt;

&lt;p&gt;Why Yes? Thank you for asking for one. Email &lt;a href="//mailto:resume@hannan.codes"&gt;resume@hannan.codes&lt;/a&gt; and it’ll be sent to you quickly.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Cloudflare Pages and updating the Node.js version</title>
      <dc:creator>Hannan Ali</dc:creator>
      <pubDate>Wed, 20 Apr 2022 19:14:53 +0000</pubDate>
      <link>https://dev.to/computistic/cloudflare-pages-and-updating-the-nodejs-version-1c62</link>
      <guid>https://dev.to/computistic/cloudflare-pages-and-updating-the-nodejs-version-1c62</guid>
      <description>&lt;p&gt;TLDR: I explain the story here, if you want to go to solution, go a little below.&lt;/p&gt;

&lt;p&gt;In the last post, I mentioned, my will to blog and Cloudflare’s automagical ability to setup auto deployments from Github Repository. But it still took me some time to figure that what I was looking for was there all along.&lt;/p&gt;

&lt;p&gt;If you are from the same time as me, you’ll probably see a cryptic error mentioning that Node.js version is not supported by Gatsby.&lt;/p&gt;

&lt;p&gt;You may think that Cloudflare Pages Build system doesn’t support any higher versions and start deliberating some other options such as Github Actions, which might give you more control over the node version and get your site up and running. But this option has it’s own downsides.&lt;/p&gt;

&lt;p&gt;It turns out that Cloudflare Pages unlike it’s Worker’s product, doesn’t have a Github Action for it. Hence, the workflow I brainstormed turned out to be something like the following&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate Github Artifacts through a Github Actions Workflow&lt;/li&gt;
&lt;li&gt;Once generated push the artifacts to a branch on the same repository or a different repository&lt;/li&gt;
&lt;li&gt;Let the Cloudflare Pages listen to that branch/repository so it can auto deploy the static artifacts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As you can see, it’s cumbersome and who needs to maintain a separate build process.&lt;/p&gt;

&lt;p&gt;Thankfully, there’s an easier way to do this.&lt;/p&gt;

&lt;h3&gt;
  
  
  Easiest Solution
&lt;/h3&gt;

&lt;p&gt;The easiest solution I found for this problem was just tell Cloudflare to use a newer Node.js version than the default one it currently uses. This is possible, by changing the &lt;code&gt;NODE_VERSION&lt;/code&gt; environment variable in the settings of your Cloudflare Pages project.&lt;/p&gt;

&lt;p&gt;There are range of configurable environment variables that Cloudflare offer for different languages and runtimes it support. You can take a look on &lt;a href="https://developers.cloudflare.com/pages/platform/build-configuration/#language-support-and-tools"&gt;Build Configuration&lt;/a&gt; to learn more about these.&lt;/p&gt;

&lt;p&gt;Yes, So No Extra Complicated Build Processes required, thanks for the configurability of Cloudflare Pages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusions
&lt;/h3&gt;

&lt;p&gt;So I guess the conclusion of this post is, it always pays to look deeper into the product and see if they have any native solutions to the problem.&lt;/p&gt;

&lt;p&gt;In short, Read The Manual and Save Some Time :)&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Building Future of Web</title>
      <dc:creator>Hannan Ali</dc:creator>
      <pubDate>Tue, 08 Aug 2017 09:03:14 +0000</pubDate>
      <link>https://dev.to/computistic/building-future-of-web</link>
      <guid>https://dev.to/computistic/building-future-of-web</guid>
      <description>&lt;p&gt;The new web era contains exciting features which makes this web more awesome and helps to fill the void between the native and web applications which was once considered inconceivable.&lt;br&gt;
These new features coming to web standards are not only buzz words but they allow developers to make their web applications faster and more accessible while upgrading the user experience progressively and still keeping the site accessible if the user’s browser does not support these capabilities.  (Spoiler: More about this at the end  )&lt;/p&gt;

&lt;p&gt;As a developer and web aficionado, I was compelled to write technical story about features in progressive web applications that make them very exciting such as Web Push notifications which is a vendor free way to enable the ability of receiving push notifications in web applications but before I go down that path, we should boil things down and question ourselves Why we want to build a Web application that provides a great experience on slow connections and works when the user is not connected to the Internet, which increases the accessibility of the application instantly.&lt;/p&gt;

&lt;h2&gt;
  
  
  slow internet and empathy
&lt;/h2&gt;

&lt;p&gt;Slow experiences create problems for many people worldwide, especially for those who don’t have large data plans with fast bandwidth capabilities. These days I don’t have to travel far in order to feel the effects of how strongly it handicaps people worldwide, but the empathy struck home when I moved to an area with a slower Internet connection because of poor &lt;strong&gt;af&lt;/strong&gt; signal coverage.&lt;/p&gt;

&lt;p&gt;As of now, I have been receiving approximately 0.17 mbps speed on my desktop connection which is incredibly low for what my usage used to be in the past, I experience such slow speeds usually in the peak hours, it ranges from this speed to about 0.6 mbps and is a far cry from previous provider I used to be on which was not particularly great but had stable speed and unlimited downloads.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyx3yro3p8c68eo87l6bl.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%2Fyx3yro3p8c68eo87l6bl.png" alt="Fast.com Image Proof"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More people should try out what &lt;a href="https://www.theverge.com/platform/amp/2015/10/28/9625062/facebook-2g-tuesdays-slow-internet-developing-world" rel="noopener noreferrer"&gt;Facebook did with their 2G tuesdays&lt;/a&gt; to give their developers feels of their very own product on slow 2G connections for an hour to connect them with millions of users who browse their applications in similar or worse conditions every day and on devices that have much lower resources. I can feel the frustration for developers but it’s positive to say that such an exercise is a good lesson to build products with empathy at their core. You can also take similar action today by going into &lt;a href="https://developers.google.com/web/tools/chrome-devtools/network-performance/resource-loading" rel="noopener noreferrer"&gt;Chrome Developer Tools Network Panel&lt;/a&gt; and throttling the speed of your network to match those of 3G connections and ask yourselves if the performance of the application you are building for feels right to you.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu0qbt2hf3fhxfej786v7.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu0qbt2hf3fhxfej786v7.jpg" alt="Calendar note displaying 2G"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are a lot of NOs said when the speed of connection is slow and each site is not able to load and provide the same fast and interactive experience to the user. NOs in many cases are there because of the unoptimized experiences of web applications and we can convert them into YES with a better attention on the performance and page load times of web applications. &lt;/p&gt;

&lt;h3&gt;
  
  
  Metered Mindset
&lt;/h3&gt;

&lt;p&gt;User behavior is different although human beings crave for abundance, people are modest when they know their resources are limited and it is required for survival and better access to information that at times people use their data plan (a.k.a packages subscriptions in the telecom lingo here) a little bit more smartly and only when needed.&lt;/p&gt;

&lt;p&gt;This data costs precious money and is quite expensive, given that many people are not even ready to pay money for it in the first place, and it’s slow too which makes it even more precious and a decision to visit each website for important information or sometimes to make a purchase or sell something consumes time and people are already too busy to spend a minute or so waiting for a page to load unless it’s &lt;a href="https://facebook.com/ludostarhd" rel="noopener noreferrer"&gt;Ludostar&lt;/a&gt; on web somehow. Web can be better if we help users achieve their goal quickly and while doing so make it a frictionless experience so they can do more in less time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Being mindful of Web Issues
&lt;/h2&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frp7mg1raud4g3rrrjyiv.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frp7mg1raud4g3rrrjyiv.jpg" alt="Slow loading Spinner on a Mobile"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Websites which provide low latency experience on mobile connections and perform reliably on unreliable connections lead to higher engagement among users and lesser bounce rates bringing back users to the site more frequently. Better engagement provides more opportunities for the businesses to monetize and causes direct increase in the clickthrough rate (CTR) if it contains advertisements.&lt;br&gt;
Low latency experiences for your mobile site can lead to &lt;a href="https://www.doubleclickbygoogle.com/articles/mobile-speed-matters/" rel="noopener noreferrer"&gt;longer average sessions by about 70% and cause 25% better ad viewability&lt;/a&gt; which can grow mobile ad revenue for businesses upto 2x which ain’t too shabby if you ask me.&lt;/p&gt;

&lt;p&gt;Sites are experiencing bigger chunk of their traffics from mobile devices and this chunk is even greater for developing world exceeding the 90% users threshold on mobile, since most of the people in the developing world will have mobile as their first screen, lowering the barrier of entry for an application is extremely important to gain a larger user base and perform well even on cheaper and lower performance devices.&lt;/p&gt;

&lt;p&gt;Low data consumption experiences can lower the barrier of entry for many of the users, as there are no app installs, credit cards or sign ups required to open an application. The wait times are lower than installing a mobile app, and given that app boom is pretty much over, you are losing users if not gaining by not giving web application much needed attention. Jumia’s &lt;a href="https://developers.google.com/web/showcase/2017/jumia" rel="noopener noreferrer"&gt;new mobile web experience&lt;/a&gt; requires 25x less data storage and has bounce rate 50% lower than the previous mobile site.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.olx.in/" rel="noopener noreferrer"&gt;OLX India&lt;/a&gt;, a popular portal to buy/sell things experiences 90% of their traffic from mobile devices but still most of the conversions were happening on their native mobile app, however, on the analysis of their mobile site, they found it to be slow and the monetization suffered because of slow loading ads. After &lt;a href="https://developers.google.com/web/showcase/2017/olx" rel="noopener noreferrer"&gt;rebuilding their mobile site experience&lt;/a&gt;, OLX India’s bounce rate dropped by 80% and they have since seen a 250% increase in engagement.&lt;/p&gt;

&lt;h2&gt;
  
  
  developing better solutions
&lt;/h2&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftt5a5573p12gqacbxsp5.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%2Ftt5a5573p12gqacbxsp5.png" alt="mobile solutions header image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By this time, I am hopeful you are convinced that the user expectations for speed quality are higher than ever and we need to supercharge the web experiences we build, to deliver fast, performant and secure content to any screen.&lt;/p&gt;

&lt;p&gt;Issues that exist with the mobile web are real but these can be solved by analyzing the performance of your applications and then reducing the performance bottlenecks that exist in the application following the best practices.&lt;/p&gt;

&lt;h3&gt;
  
  
  Browser evolution and PWAs
&lt;/h3&gt;

&lt;p&gt;Browsers evolve with each day, &lt;a href="https://developers.google.com/web/updates/" rel="noopener noreferrer"&gt;introducing new features&lt;/a&gt; and performance improvements, instantly enabling people worldwide to do more with their applications, new browsers come bundled with features such as Service Workers enabling native like futuristic experiences on the web.&lt;/p&gt;

&lt;p&gt;Web applications can utilize the new upcoming features of the web by progressively enhancing the user experience if the browsers support the features such as ServiceWorkers to enable instant loading and offline first applications on mobile and desktop. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://developers.google.com/web/fundamentals/engage-and-retain/push-notifications/" rel="noopener noreferrer"&gt;Web Push Notifications&lt;/a&gt; can be used to engage and retain users of your application by providing them alerts about different events going on, without the hassle of installing a native mobile and just with a few clicks.&lt;/p&gt;

&lt;p&gt;As evident from the case studies of companies, building a Progressive Web Application (PWA) can cause direct increase in user engagement and in mobile ad revenue. A PWA &lt;a href="https://www.thinkwithgoogle.com/marketing-resources/experience-design/progressive-web-apps-benefit-brands/" rel="noopener noreferrer"&gt;might be just right for your brand&lt;/a&gt; if you want fast and reliable experiences for your users even with low data and resources consumption.  &lt;/p&gt;

&lt;h3&gt;
  
  
  learning to develop next generation web apps
&lt;/h3&gt;

&lt;p&gt;Building next generation web apps which follow the best practices and make use of the latest features in the browser is a long journey and also requires a lot of learning. Developers at companies such as Google have been building optimized sites that are performant for mobile and share their experience openly on the web while doing so.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developers.google.com/web/" rel="noopener noreferrer"&gt;Google developers&lt;/a&gt; have built a dedicated portal for Web in order to learn more about the best practices and patterns to build their own solutions according to the needs of their users.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://developers.google.com/web/" rel="noopener noreferrer"&gt;Web portal&lt;/a&gt; also provides information on the advanced &lt;a href="https://developers.google.com/web/tools/" rel="noopener noreferrer"&gt;tooling&lt;/a&gt; that’s available to debug, analyze and optimize the performance of your applications such as best in the world Chrome Developer Tools which is crucial tool for web developers and a guide about it allows you to get the most out of this tool. &lt;/p&gt;

&lt;h3&gt;
  
  
  Improving on the fundamentals of web
&lt;/h3&gt;

&lt;p&gt;Google Developers Web Portal contains a comprehensive guide on &lt;a href="https://developers.google.com/web/fundamentals/" rel="noopener noreferrer"&gt;Web Fundamentals&lt;/a&gt; which  needed a special mention because of the helpful information it contains for building the web. &lt;/p&gt;

&lt;p&gt;Web Fundamentals has been written by the contribution of many developers who are experienced in writing battle tested code for the web and are familiar with good patterns that have been found useful to optimize the websites. Topics such as &lt;a href="https://developers.google.com/web/fundamentals/design-and-ui/" rel="noopener noreferrer"&gt;UI &amp;amp; Design&lt;/a&gt; and Web &lt;a href="https://developers.google.com/web/fundamentals/architecture/app-shell" rel="noopener noreferrer"&gt;Application Architecture&lt;/a&gt; have a major emphasis in this guide and are covered in their dedicated sections to provide more in depth knowledge.&lt;/p&gt;

&lt;p&gt;This guide gets very handy when building progressive enhancements in your application since features such as &lt;a href="https://developers.google.com/web/fundamentals/getting-started/primers/service-workers" rel="noopener noreferrer"&gt;Service Workers&lt;/a&gt; and Web Push Notifications are covered in detail and there’s helpful documentation about it's inner workings and implementation.&lt;/p&gt;

&lt;p&gt;Most of what you’ll find coming to modern web will probably have it documented here at some point if it’s crucial to modern web experience. So keep an eye on this helpful resource and join me in learning more about Web Fundamentals.&lt;/p&gt;

&lt;h3&gt;
  
  
  This is about Open Web
&lt;/h3&gt;

&lt;p&gt;Major chunk of information Google Developers Web Portal contains is directly related to open web standards and has little or no relation to the Google so you are not going to be tied in any vendor lock by converting this information into action and you will be building on your own independently on the web just like many other millions of awesome web developers like you &amp;lt;3.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ending note...
&lt;/h3&gt;

&lt;p&gt;This responsibility of improving the state of the Web and providing better web experiences to users worldwide fall on our shoulders and information is there to help us make better applications which truly make lives easier for people all around the globe so you can sleep and relax well knowing somebody far away from you is making good use of the application you built and it’s working just fine on unreliable offline connections by using Progressive Enhancements. If you do this, Godspeed! and If I meet you, we’ll have to hug cos you are making the web (coincidentally my favorite place too) better which ties us and connects us all together even though we might be living quite far away so we can collaboratively play a small role in making this big world a better place. &amp;lt;3&lt;/p&gt;

</description>
      <category>newweb</category>
      <category>webdev</category>
      <category>progressive</category>
      <category>pwa</category>
    </item>
  </channel>
</rss>
