<?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>Forem: Nozibul Islam</title>
    <description>The latest articles on Forem by Nozibul Islam (@nozibul_islam_113b1d5334f).</description>
    <link>https://forem.com/nozibul_islam_113b1d5334f</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%2F1971849%2Fe97063c6-1893-40f0-af60-b650acae49cd.png</url>
      <title>Forem: Nozibul Islam</title>
      <link>https://forem.com/nozibul_islam_113b1d5334f</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/nozibul_islam_113b1d5334f"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Nozibul Islam</dc:creator>
      <pubDate>Wed, 03 Sep 2025 03:23:21 +0000</pubDate>
      <link>https://forem.com/nozibul_islam_113b1d5334f/-ka8</link>
      <guid>https://forem.com/nozibul_islam_113b1d5334f/-ka8</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/nozibul_islam_113b1d5334f" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F1971849%2Fe97063c6-1893-40f0-af60-b650acae49cd.png" alt="nozibul_islam_113b1d5334f"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/nozibul_islam_113b1d5334f/two-pointer-coding-pattern-12a" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Two Pointer coding pattern&lt;/h2&gt;
      &lt;h3&gt;Nozibul Islam ・ Sep 3&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#twopointer&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#codingpattern&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#leetcode&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>twopointer</category>
      <category>codingpattern</category>
      <category>programming</category>
      <category>leetcode</category>
    </item>
    <item>
      <title>Two Pointer coding pattern</title>
      <dc:creator>Nozibul Islam</dc:creator>
      <pubDate>Wed, 03 Sep 2025 03:21:15 +0000</pubDate>
      <link>https://forem.com/nozibul_islam_113b1d5334f/two-pointer-coding-pattern-12a</link>
      <guid>https://forem.com/nozibul_islam_113b1d5334f/two-pointer-coding-pattern-12a</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Hey Dev Community! 👋&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Master the Two Pointer Pattern with this comprehensive PDF guide! Learn to identify the right problems in seconds and streamline your coding solutions. Enhance your algorithmic thinking today.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's included:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Curated learning resources from top platforms&lt;/li&gt;
&lt;li&gt;Implementation examples for all pattern types&lt;/li&gt;
&lt;li&gt;Learning path recommendations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you're preparing for FAANG interviews or just want to improve your algorithmic skills, this guide has everything you need!&lt;/p&gt;

&lt;p&gt;Live site: &lt;a href="https://nozibul.github.io/Two_pointer-coding-pattern-guide/" rel="noopener noreferrer"&gt;https://nozibul.github.io/Two_pointer-coding-pattern-guide/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>twopointer</category>
      <category>codingpattern</category>
      <category>programming</category>
      <category>leetcode</category>
    </item>
    <item>
      <title>15 Rendering patterns for Web Application</title>
      <dc:creator>Nozibul Islam</dc:creator>
      <pubDate>Tue, 05 Aug 2025 02:06:15 +0000</pubDate>
      <link>https://forem.com/nozibul_islam_113b1d5334f/15-rendering-patterns-for-web-application-1jbk</link>
      <guid>https://forem.com/nozibul_islam_113b1d5334f/15-rendering-patterns-for-web-application-1jbk</guid>
      <description>&lt;p&gt;&lt;strong&gt;Rendering Pattern&lt;/strong&gt; মানে হচ্ছে—&lt;br&gt;
ওয়েবসাইট বা ওয়েব অ্যাপ্লিকেশন কীভাবে ইউজারের ব্রাউজারে কনটেন্ট (লেখা, ছবি, ফর্ম ইত্যাদি) দেখাবে সেই পদ্ধতি বা কৌশল।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;সহজ ভাষায়:&lt;/strong&gt;&lt;br&gt;
Rendering Pattern হলো – ‍ব্রাউজারে কনটেন্ট দেখানোর স্টাইল বা উপায়।&lt;br&gt;
এটা নির্ধারণ করে, পেজটা সার্ভার থেকে আসবে নাকি ব্রাউজার নিজেই বানাবে, আগে থেকে বানানো থাকবে নাকি ডায়নামিকভাবে বানাবে ইত্যাদি।&lt;/p&gt;

&lt;p&gt;ওয়েব অ্যাপ্লিকেশনের রেন্ডারিং প্যাটার্ন খুবই গুরুত্বপূর্ণ একটি বিষয়, কারণ এটি নির্ধারণ করে কীভাবে আপনার ওয়েবসাইট বা অ্যাপ্লিকেশন ইউজারের ব্রাউজারে প্রদর্শিত হবে। এর উপর নির্ভর করে পারফর্ম্যান্স, ইন্টারঅ্যাকটিভিটি (ইউজারের সাথে ওয়েবসাইটের যোগাযোগ), এবং SEO (সার্চ ইঞ্জিন অপ্টিমাইজেশন) কতটা ভালো হবে। রেন্ডারিং প্যাটার্ন ব্যাখ্যা করা হলো — &lt;br&gt;
এখানে &lt;strong&gt;১৫&lt;/strong&gt;টি গুরুত্বপূর্ণ রেন্ডারিং প্যাটার্নকে সহজভাবে ব্যাখ্যা করা হয়েছে। &lt;/p&gt;

&lt;h3&gt;
  
  
  ১. Static Websites
&lt;/h3&gt;

&lt;p&gt;এগুলো হচ্ছে সবচেয়ে সহজ ওয়েবসাইট। প্রতিটি পেজ আগে থেকেই HTML আকারে বানানো থাকে। যখন ইউজার কোনো পেজ দেখতে চায়, সার্ভার সরাসরি সেই ফাইলটা পাঠিয়ে দেয়।&lt;br&gt;
✅ দ্রুত লোড হয়&lt;br&gt;
❌ ডাইনামিক কনটেন্ট (যেমন – ইউজার অনুযায়ী আলাদা কনটেন্ট) দেখানো যায় না।&lt;br&gt;
&lt;strong&gt;উদাহরণ:&lt;/strong&gt; Portfolio ওয়েবসাইট বা Resume ওয়েব।&lt;/p&gt;

&lt;h3&gt;
  
  
  ২. Single page application(SPA)
&lt;/h3&gt;

&lt;p&gt;এখানে পুরো ওয়েবসাইট একটাই HTML ফাইলে লোড হয়। এরপর JavaScript দিয়ে DOM আপডেট করে নতুন পেজ দেখানো হয়।&lt;/p&gt;

&lt;p&gt;✅ স্মুথ ইউজার এক্সপেরিয়েন্স&lt;br&gt;
❌ প্রথমবার লোড হতে সময় লাগে, SEO ভালো হয় না&lt;br&gt;
&lt;strong&gt;উদাহরণ&lt;/strong&gt;: Gmail, Facebook&lt;/p&gt;

&lt;h3&gt;
  
  
  ৩. Server Side Rendering (SSR)
&lt;/h3&gt;

&lt;p&gt;প্রতিবার ইউজার কোনো পেজ রিকোয়েস্ট করলে সার্ভার তখনই সেই পেজ বানিয়ে পাঠায়।&lt;br&gt;
✅ SEO ভালো হয়, ডাইনামিক কনটেন্ট সম্ভব&lt;br&gt;
❌ প্রতিবার পেজ রেন্ডারিংয়ে সার্ভারের চাপ বাড়ে&lt;br&gt;
&lt;strong&gt;উদাহরণ&lt;/strong&gt;: Next.js এর SSR মোড&lt;/p&gt;

&lt;h3&gt;
  
  
  ৪. Static site generation (SSG)
&lt;/h3&gt;

&lt;p&gt;SSG হলো সব পেজ আগেই বানিয়ে রাখা। তবে এটি স্ট্যাটিক ওয়েবসাইটের চেয়ে স্মার্ট, কারণ ডেটা সোর্স বা API ব্যবহার করে পেজ তৈরি করে।&lt;br&gt;
✅ দ্রুত লোড হয়&lt;br&gt;
❌ কনটেন্ট আপডেট করতে রি-বিল্ড করতে হয়&lt;br&gt;
&lt;strong&gt;উদাহরণ&lt;/strong&gt;: ব্লগ, ডকুমেন্টেশন সাইট&lt;/p&gt;

&lt;h3&gt;
  
  
  ৫. Incremental static regeneration (ISR)
&lt;/h3&gt;

&lt;p&gt;এটি SSG আর SSR-এর মাঝামাঝি। প্রাথমিকভাবে পেজ বানিয়ে রাখে, পরে যখন দরকার হবে তখন নতুন কনটেন্ট দিয়ে পেজ আপডেট করে।&lt;br&gt;
✅ SEO + আপডেটযোগ্য কনটেন্ট&lt;br&gt;
❌ কিছুটা কনফিগারেশনের জটিলতা থাকতে পারে&lt;br&gt;
&lt;strong&gt;উদাহরণ&lt;/strong&gt;: Next.js এর ISR ফিচার&lt;/p&gt;

&lt;h3&gt;
  
  
  ৬. Hydration
&lt;/h3&gt;

&lt;p&gt;SSG বা SSR এ যখন HTML পেজ ইউজারের ব্রাউজারে আসে, তখন সেটা শুধু স্ট্যাটিক। ইন্টারঅ্যাকটিভ করতে JavaScript রান করিয়ে "জীবন্ত" করা হয় – এটাকেই হাইড্রেশন বলে।&lt;br&gt;
✅ SPA র মত ইন্টারঅ্যাকটিভ&lt;br&gt;
❌ JavaScript লোড না হওয়া পর্যন্ত ফ্রিজ লাগে&lt;/p&gt;

&lt;h3&gt;
  
  
  ৭. Partial Hydration
&lt;/h3&gt;

&lt;p&gt;পুরো পেজ না হাইড্রেট করে শুধুমাত্র যেসব জায়গায় ইন্টারঅ্যাকটিভিটি দরকার, সেগুলো হাইড্রেট করা হয়।&lt;br&gt;
✅ দ্রুত লোড হয়&lt;br&gt;
❌ ইমপ্লিমেন্টেশন কিছুটা কঠিন&lt;/p&gt;

&lt;h3&gt;
  
  
  ৮. Islands architecture
&lt;/h3&gt;

&lt;p&gt;পেজের কিছু কিছু অংশ (island) আলাদা করে রেন্ডার করা হয়। পুরো পেজ না বদলে শুধু বদলানো অংশ পরিবর্তন হয়।&lt;br&gt;
✅ স্মার্ট রেন্ডারিং, পারফর্ম্যান্স ভালো&lt;br&gt;
❌ কিছুটা জটিল আর্কিটেকচার&lt;br&gt;
&lt;strong&gt;উদাহরণ&lt;/strong&gt;: Astro framework&lt;/p&gt;

&lt;h3&gt;
  
  
  ৯. Streaming SSR
&lt;/h3&gt;

&lt;p&gt;পুরো HTML একবারে না পাঠিয়ে, কিছু কিছু অংশ আগে পাঠিয়ে দেওয়া হয় যাতে ইউজার আগেই কিছু দেখতে পায়।&lt;br&gt;
✅ perceived performance ভালো হয়&lt;br&gt;
❌ সার্ভার সাপোর্ট থাকতে হয়&lt;br&gt;
&lt;strong&gt;উদাহরণ&lt;/strong&gt;: React + Next.js 13 (app directory)&lt;/p&gt;

&lt;h3&gt;
  
  
  ১০. Resumability
&lt;/h3&gt;

&lt;p&gt;Qwik ফ্রেমওয়ার্কের মাধ্যমে চালু হওয়া এক নতুন ধারণা। এখানে হাইড্রেশন লাগে না। সব কিছু HTML এর মধ্যেই serialize করে রাখা হয় এবং ইউজারের প্রয়োজনে JavaScript lazy-load হয়।&lt;br&gt;
✅ খুব দ্রুত লোড হয়, জাভাস্ক্রিপ্ট কম লাগে&lt;br&gt;
❌ নতুন ধারণা, তাই এখনো পরীক্ষামূলক&lt;/p&gt;

&lt;h3&gt;
  
  
  ১১. Client Side Rendering (CSR)
&lt;/h3&gt;

&lt;p&gt;এই প্যাটার্নে সার্ভার থেকে শুধুমাত্র একটা HTML শেল পাঠানো হয়, বাকি সব কনটেন্ট JavaScript দিয়ে ব্রাউজারেই বানানো হয়।&lt;br&gt;
✅ ইন্টারঅ্যাকটিভ ও SPA অনুভব&lt;br&gt;
❌ প্রথমবার লোড হতে অনেক সময় লাগে, SEO খারাপ&lt;br&gt;
&lt;strong&gt;উদাহরণ&lt;/strong&gt;: React বা Vue অ্যাপ যেগুলো শুধু CSR করে&lt;/p&gt;

&lt;h3&gt;
  
  
  ১২. Progressive Rendering
&lt;/h3&gt;

&lt;p&gt;এই কৌশলে পেজ ধাপে ধাপে ইউজারকে দেখানো হয়। শুরুতে জরুরি অংশ, পরে অন্যান্য কনটেন্ট লোড হয়।&lt;br&gt;
✅ দ্রুত perceived performance&lt;br&gt;
❌ রেন্ডারিং কন্ট্রোল জটিল হতে পারে&lt;br&gt;
&lt;strong&gt;উদাহরণ&lt;/strong&gt;: ই-কমার্স সাইটে product details আগে, রিভিউ পরে&lt;/p&gt;

&lt;h3&gt;
  
  
  ১৩. Route-level Rendering
&lt;/h3&gt;

&lt;p&gt;প্রতিটি রুট বা পেজ আলাদাভাবে রেন্ডার হয় এবং প্রতিটির জন্য আলাদা রেন্ডারিং কৌশল নির্বাচন করা যায়।&lt;br&gt;
✅ ফ্লেক্সিবল রেন্ডারিং&lt;br&gt;
❌ ব্যবস্থাপনা কঠিন হতে পারে বড় অ্যাপে&lt;br&gt;
&lt;strong&gt;উদাহরণ&lt;/strong&gt;: Next.js App Router – কিছু রুট SSR, কিছু ISR&lt;/p&gt;

&lt;h3&gt;
  
  
  ১৪. Edge Rendering
&lt;/h3&gt;

&lt;p&gt;এই প্যাটার্নে পেজ রেন্ডার হয় CDN-এর কাছে থাকা edge সার্ভারে, যাতে ইউজারের কাছাকাছি থেকেই পেজ লোড হয়।&lt;br&gt;
✅ গ্লোবালি ফাস্ট পারফর্ম্যান্স&lt;br&gt;
❌ কিছু সীমাবদ্ধতা থাকতে পারে (low compute power)&lt;br&gt;
&lt;strong&gt;উদাহরণ&lt;/strong&gt;: Vercel Edge Functions, Cloudflare Workers&lt;/p&gt;

&lt;h3&gt;
  
  
  ১৫. Selective Hydration / Lazy Hydration
&lt;/h3&gt;

&lt;p&gt;এই প্যাটার্নে শুধু যখন ইউজার কোনো উপাদানের সাথে ইন্টারঅ্যাক্ট করে, তখনই সেটিতে হাইড্রেশন করা হয়।&lt;br&gt;
✅ JavaScript usage অনেক কম&lt;br&gt;
❌ কন্ট্রোল করা কঠিন হতে পারে&lt;br&gt;
&lt;strong&gt;উদাহরণ&lt;/strong&gt;: React Server Components-এর lazy hydrate approach&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;উপসংহার:&lt;/strong&gt; &lt;br&gt;
ওয়েব অ্যাপ্লিকেশনের পারফর্ম্যান্স, ইউজার এক্সপেরিয়েন্স আর SEO কেমন হবে তা অনেকটাই নির্ভর করে রেন্ডারিং প্যাটার্নের উপর। তাই প্রকল্পের ধরন বুঝে উপযুক্ত প্যাটার্ন নির্বাচন করাটা খুবই গুরুত্বপূর্ণ। ভালো ডেভেলপার হতে চাইলে এগুলো সম্পর্কে স্পষ্ট ধারণা রাখা দরকার।&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>react</category>
    </item>
    <item>
      <title>Advanced JavaScript Topics 2025</title>
      <dc:creator>Nozibul Islam</dc:creator>
      <pubDate>Sun, 20 Jul 2025 03:35:05 +0000</pubDate>
      <link>https://forem.com/nozibul_islam_113b1d5334f/advanced-javascript-topics-3pam</link>
      <guid>https://forem.com/nozibul_islam_113b1d5334f/advanced-javascript-topics-3pam</guid>
      <description>&lt;p&gt;&lt;strong&gt;Final Structured Advanced JavaScript Topics List&lt;/strong&gt; — cleaned up, logically grouped, and rewritten for clarity, mastery, and interview preparation:&lt;/p&gt;

&lt;h3&gt;
  
  
  🟡 &lt;strong&gt;Core JavaScript Concepts&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Execution Context &amp;amp; Call Stack&lt;/li&gt;
&lt;li&gt;Scope, Lexical Scope &amp;amp; Variable Lookup&lt;/li&gt;
&lt;li&gt;Hoisting &amp;amp; Shadowing&lt;/li&gt;
&lt;li&gt;Closures&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;this&lt;/code&gt; Binding — Global, Object, Class, Arrow Function&lt;/li&gt;
&lt;li&gt;Prototype, Prototypal Inheritance &amp;amp; Prototype Chain&lt;/li&gt;
&lt;li&gt;Immediately Invoked Function Expressions (IIFE)&lt;/li&gt;
&lt;li&gt;Object-Oriented JavaScript — OOP Principles &amp;amp; Practices&lt;/li&gt;
&lt;li&gt;JavaScript Engine Internals — Parsing, Compilation &amp;amp; JIT&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🟣 &lt;strong&gt;JavaScript Execution &amp;amp; Concurrency&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;JavaScript Runtime Model — Single Thread, Event Loop, Microtask Queue&lt;/li&gt;
&lt;li&gt;Asynchronous JavaScript — Callbacks, Promises, async/await&lt;/li&gt;
&lt;li&gt;Advanced Asynchronous Patterns — Promise.all, race, any, allSettled&lt;/li&gt;
&lt;li&gt;Debouncing &amp;amp; Throttling Techniques&lt;/li&gt;
&lt;li&gt;Web Workers — Offloading Heavy Tasks in Browser&lt;/li&gt;
&lt;li&gt;Node.js Worker Threads — Server-side Parallel Processing&lt;/li&gt;
&lt;li&gt;SharedArrayBuffer &amp;amp; Atomic Operations&lt;/li&gt;
&lt;li&gt;Inter-thread Communication &amp;amp; Synchronization (Semaphore, Mutex)&lt;/li&gt;
&lt;li&gt;Thread Pool Design &amp;amp; Real-Time Data Processing&lt;/li&gt;
&lt;li&gt;Concurrency Differences between Browser &amp;amp; Node.js&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🟢 &lt;strong&gt;Performance Optimization &amp;amp; Code Delivery&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Code Minification, Compression &amp;amp; Bundling Strategies&lt;/li&gt;
&lt;li&gt;Tree Shaking — ESM &amp;amp; Dead Code Elimination&lt;/li&gt;
&lt;li&gt;Code Splitting — Dynamic Imports &amp;amp; Lazy Loading&lt;/li&gt;
&lt;li&gt;Garbage Collection — Mechanism &amp;amp; Memory Leak Prevention&lt;/li&gt;
&lt;li&gt;Browser DevTools for Performance Profiling &amp;amp; Debugging&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🟠 &lt;strong&gt;Advanced Functions &amp;amp; Design Patterns&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Higher-Order Functions &amp;amp; Callbacks&lt;/li&gt;
&lt;li&gt;Functional Programming in JavaScript — Principles &amp;amp; Patterns&lt;/li&gt;
&lt;li&gt;Currying, Partial Application &amp;amp; Memoization&lt;/li&gt;
&lt;li&gt;Custom Iterators, Generators &amp;amp; Iterable Protocol&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Classical Design Patterns in JavaScript:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Module Pattern&lt;/li&gt;
&lt;li&gt;Singleton Pattern&lt;/li&gt;
&lt;li&gt;Observer Pattern&lt;/li&gt;
&lt;li&gt;Factory &amp;amp; Strategy Patterns&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;SOLID Principles Applied in JavaScript&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Clean Code Practices &amp;amp; Refactoring Techniques&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔵 &lt;strong&gt;Modern ES Features &amp;amp; APIs&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Destructuring, Spread &amp;amp; Rest Operators&lt;/li&gt;
&lt;li&gt;Default Parameters &amp;amp; Template Literals&lt;/li&gt;
&lt;li&gt;Optional Chaining &amp;amp; Nullish Coalescing&lt;/li&gt;
&lt;li&gt;Symbols &amp;amp; Well-Known Symbols (e.g., Symbol.iterator)&lt;/li&gt;
&lt;li&gt;Proxy &amp;amp; Reflect APIs — Meta-Programming Techniques&lt;/li&gt;
&lt;li&gt;Object Utilities — Object.create, assign, freeze, seal&lt;/li&gt;
&lt;li&gt;Set, Map, WeakMap, WeakSet — Use Cases &amp;amp; Best Practices&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🟡 &lt;strong&gt;Asynchronous &amp;amp; Browser Environment APIs&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Timers — setTimeout, setImmediate, requestAnimationFrame&lt;/li&gt;
&lt;li&gt;Web APIs — Fetch, Axios, WebSockets, Server-Sent Events&lt;/li&gt;
&lt;li&gt;LocalStorage, SessionStorage, Cookies Management&lt;/li&gt;
&lt;li&gt;CORS, Same-Origin Policy &amp;amp; Content Security Policy (CSP)&lt;/li&gt;
&lt;li&gt;Service Workers — Caching Strategies &amp;amp; Offline Support&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🟣 &lt;strong&gt;Error Handling, Debugging &amp;amp; Security&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;JavaScript Error Types &amp;amp; Error Propagation&lt;/li&gt;
&lt;li&gt;try...catch...finally &amp;amp; Custom Error Classes&lt;/li&gt;
&lt;li&gt;Browser Debugger, Breakpoints &amp;amp; Console APIs&lt;/li&gt;
&lt;li&gt;Common Security Risks — XSS, CSRF &amp;amp; Mitigation&lt;/li&gt;
&lt;li&gt;Secure JavaScript Coding Practices&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🟢 &lt;strong&gt;Testing, Tooling &amp;amp; Type Safety&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Unit Testing — Jest, Mocha, Chai&lt;/li&gt;
&lt;li&gt;Integration &amp;amp; E2E Testing — Cypress, Playwright&lt;/li&gt;
&lt;li&gt;Code Linting &amp;amp; Formatting — ESLint, Prettier&lt;/li&gt;
&lt;li&gt;TypeScript Basics — Type Safety for JavaScript Devs&lt;/li&gt;
&lt;li&gt;JSDoc &amp;amp; Static Type Checking Tools&lt;/li&gt;
&lt;li&gt;Monorepo Architecture &amp;amp; Modular JavaScript Design&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🟡 &lt;strong&gt;Data Structures &amp;amp; Algorithms for JavaScript Interviews&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Arrays, Strings, Linked Lists, Stacks, Queues&lt;/li&gt;
&lt;li&gt;Hash Maps, Sets, Trees (Binary, BST, N-ary), Graphs&lt;/li&gt;
&lt;li&gt;Recursion, Backtracking &amp;amp; Dynamic Programming&lt;/li&gt;
&lt;li&gt;Sorting, Searching, Greedy &amp;amp; Divide and Conquer Algorithms&lt;/li&gt;
&lt;li&gt;Time Complexity &amp;amp; Space Complexity Analysis&lt;/li&gt;
&lt;li&gt;Solving Real-World DSA Problems in JavaScript&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🟠 &lt;strong&gt;Practical Applications &amp;amp; Framework Concepts&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Next.js Rendering Models — CSR, SSR, ISR, SSG&lt;/li&gt;
&lt;li&gt;Server-Side JavaScript — Node.js, Serverless Functions&lt;/li&gt;
&lt;li&gt;Real-World Testing &amp;amp; Debugging Strategies&lt;/li&gt;
&lt;li&gt;Virtual DOM &amp;amp; Diffing Algorithms&lt;/li&gt;
&lt;li&gt;Reactive Programming Basics — RxJS&lt;/li&gt;
&lt;li&gt;State Management Patterns — Redux, Context API, Vuex&lt;/li&gt;
&lt;li&gt;Component Design Principles — Best Practices in React/Vue&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ✅ &lt;strong&gt;Summary of Coverage&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🔹 JS Core Concepts &amp;amp; Execution&lt;/li&gt;
&lt;li&gt;🔹 Advanced Async &amp;amp; Concurrency Handling&lt;/li&gt;
&lt;li&gt;🔹 Performance Optimization &amp;amp; Debugging&lt;/li&gt;
&lt;li&gt;🔹 Advanced Functions, Patterns &amp;amp; OOP Principles&lt;/li&gt;
&lt;li&gt;🔹 Modern ES Features &amp;amp; API Usage&lt;/li&gt;
&lt;li&gt;🔹 Security, Testing, Tooling &amp;amp; Type Safety&lt;/li&gt;
&lt;li&gt;🔹 Algorithms &amp;amp; Data Structures for Interviews&lt;/li&gt;
&lt;li&gt;🔹 Practical Real-World JS &amp;amp; Framework Knowledge&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🔗 Connect with me on LinkedIn:&lt;/strong&gt;&lt;br&gt;
Let’s dive deeper into the world of software engineering together! I regularly share insights on JavaScript, TypeScript, Node.js, React, Next.js, data structures, algorithms, web development, and much more. Whether you're looking to enhance your skills or collaborate on exciting topics, I’d love to connect and grow with you.&lt;/p&gt;

&lt;p&gt;Follow me: &lt;a href="https://www.linkedin.com/in/nozibul/" rel="noopener noreferrer"&gt;Nozibul Islam&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>advaned</category>
    </item>
    <item>
      <title>Essential Data Structures and Algorithms for Backend Developer Interviews</title>
      <dc:creator>Nozibul Islam</dc:creator>
      <pubDate>Sun, 18 May 2025 05:46:17 +0000</pubDate>
      <link>https://forem.com/nozibul_islam_113b1d5334f/essential-data-structures-and-algorithms-for-backend-developer-interviews-1em5</link>
      <guid>https://forem.com/nozibul_islam_113b1d5334f/essential-data-structures-and-algorithms-for-backend-developer-interviews-1em5</guid>
      <description>&lt;p&gt;As a backend developer preparing for interviews, you should focus on these key data structures and algorithms:&lt;/p&gt;

&lt;h4&gt;
  
  
  Core Data Structures
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Arrays/Lists&lt;/strong&gt;: Operations, time complexity, traversal techniques&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hash Tables/Maps&lt;/strong&gt;: Implementation, collision handling, applications&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stacks &amp;amp; Queues&lt;/strong&gt;: LIFO/FIFO principles, implementations, use cases&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Linked Lists&lt;/strong&gt;: Singly/doubly linked, operations, common problems&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trees&lt;/strong&gt;: Binary trees, BSTs, traversals (pre/in/post-order, level-order)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graphs&lt;/strong&gt;: Representation (adjacency matrix/list), traversal (BFS/DFS)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Heaps&lt;/strong&gt;: Min/max heaps, priority queues, implementations&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Essential Algorithms
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sorting&lt;/strong&gt;: QuickSort, MergeSort, HeapSort (and their complexities)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Searching&lt;/strong&gt;: Binary search, breadth/depth-first search&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graph Algorithms&lt;/strong&gt;: Dijkstra's, A*, topological sort&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Programming&lt;/strong&gt;: Memoization, tabulation approaches&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recursion &amp;amp; Backtracking&lt;/strong&gt;: Common patterns and optimizations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;String Manipulation&lt;/strong&gt;: Pattern matching, parsing&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Backend-Specific Topics
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Database Algorithms&lt;/strong&gt;: Indexing, query optimization principles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Distributed Systems&lt;/strong&gt;: Consistency algorithms, consensus protocols&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Concurrency Patterns&lt;/strong&gt;: Thread safety, synchronization primitives&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Caching Strategies&lt;/strong&gt;: LRU, LFU implementations&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>datastructures</category>
      <category>algorithms</category>
      <category>backenddevelopment</category>
    </item>
    <item>
      <title>Challenges of WebSocket</title>
      <dc:creator>Nozibul Islam</dc:creator>
      <pubDate>Fri, 09 May 2025 12:21:37 +0000</pubDate>
      <link>https://forem.com/nozibul_islam_113b1d5334f/challenges-of-websocket-53gm</link>
      <guid>https://forem.com/nozibul_islam_113b1d5334f/challenges-of-websocket-53gm</guid>
      <description>&lt;p&gt;&lt;strong&gt;1. Scalability&lt;/strong&gt;&lt;br&gt;
WebSocket এ প্রতিটি ক্লায়েন্টের জন্য সার্ভারে একটি পার্সিস্টেন্ট কানেকশন থাকে। যখন হাজার হাজার ইউজার একসাথে যুক্ত হয়, তখন সার্ভারের উপরে ব্যাপক চাপ পড়ে। traditional REST API-র মতো stateless environment না হওয়ায় horizontal scaling করা তুলনামূলক কঠিন হয়।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;সমাধান:&lt;/strong&gt; Redis Pub/Sub এবং socket.io adapter ব্যবহার করে load balancing করা যায়, যাতে multiple server instance একে অপরের সঙ্গে message sync করতে পারে।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Sticky Sessions Requirement&lt;/strong&gt;&lt;br&gt;
Load balancer ব্যবহারের ক্ষেত্রে, WebSocket কানেকশন দীর্ঘ সময় চালু থাকে বলে একই ক্লায়েন্টকে প্রতিবার একই সার্ভারে পাঠানো দরকার হয়। একে Sticky Session বলা হয়।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;সমস্যা:&lt;/strong&gt; যদি sticky session ঠিকমতো কনফিগার না করা হয়, তাহলে connection drop বা message loss হতে পারে।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;সমাধান:&lt;/strong&gt; Load balancer (যেমন Nginx বা HAProxy)-এ sticky session কনফিগার করতে হয় অথবা session-affinity enabled proxy ব্যবহার করা উচিত।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Connection Drop ও Reconnection Handling&lt;/strong&gt;&lt;br&gt;
ইন্টারনেট সংযোগ খারাপ হলে বা সার্ভার রিস্টার্ট হলে ক্লায়েন্টের সাথে কানেকশন ছিন্ন হয়ে যায়। আবার reconnection না হলে ইউজার চ্যাট করতে পারবে না।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;সমাধান:&lt;/strong&gt; ক্লায়েন্টে reconnect লজিক থাকা উচিত। Socket.io এই ফিচার built-in ভাবে দেয়।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Resource Usage ও Server Limitation&lt;/strong&gt;&lt;br&gt;
WebSocket প্রতিটি ইউজারের জন্য একটি socket/file descriptor ব্যবহার করে। অনেক ইউজার একসাথে কানেক্ট করলে RAM, CPU, এবং Network resource exhausted হয়ে যায়।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;সমাধান:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Connection limit সেট করা&lt;/li&gt;
&lt;li&gt;Idle connection timeout কনফিগার করা&lt;/li&gt;
&lt;li&gt;সার্ভার instance স্কেল করা&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;5. Load Balancer Configuration&lt;/strong&gt;&lt;br&gt;
WebSocket long-lived connection ব্যবহারে traditional load balancer (যেমন ELB, Nginx)-এর জন্য আলাদা কনফিগারেশন প্রয়োজন হয়।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;সমস্যা:&lt;/strong&gt; যদি Load balancer upgrade এবং connection হেডারগুলো সঠিকভাবে forward না করে, তাহলে WebSocket কাজ করবে না।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;সমাধান:&lt;/strong&gt; Load balancer-এ WebSocket এর জন্য Upgrade হেডার, HTTP/1.1, এবং sticky session properly enable করতে হয়।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Firewall / Proxy Issues&lt;/strong&gt;&lt;br&gt;
অনেক সময় corporate firewall বা reverse proxy (Apache, Nginx) WebSocket traffic ব্লক করে দেয় বা timeout করে দেয়, যেহেতু এটি traditional HTTP থেকে আলাদা।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;সমাধান:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;SSL ব্যবহার করে (wss://) secure connection চালানো&lt;/li&gt;
&lt;li&gt;Proxy configuration অনুযায়ী WebSocket Upgrade হেডার সেট করা&lt;/li&gt;
&lt;li&gt;Port allow করা (যেমন 3000, 8080, ইত্যাদি)&lt;/li&gt;
&lt;li&gt;Security Concerns
WebSocket CORS, CSRF protection-এর মতো traditional web security layer automatically follow করে না। এই কারণে unauthorized access, XSS বা DDoS এর শিকার হতে পারে।&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;সমাধান:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Authentication middleware যোগ করা (যেমন JWT)&lt;/li&gt;
&lt;li&gt;SSL/TLS encryption ব্যবহার করা&lt;/li&gt;
&lt;li&gt;Rate limiting setup করা&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;8. Resource Cleanup&lt;/strong&gt;&lt;br&gt;
অনেক সময় socket বন্ধ হলেও সার্ভারে resource release হয় না, ফলে memory leak তৈরি হয় এবং সার্ভার crash করে।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;সমস্যা:&lt;/strong&gt; Proper disconnect event handle না করলে unused socket connection থেকে RAM leak হয়।&lt;br&gt;
&lt;strong&gt;সমাধান:&lt;/strong&gt;&lt;br&gt;
.on("disconnect", callback) ব্যবহার করে socket বন্ধের সময় cleanup করা&lt;br&gt;
idle connection timeout ব্যবহার করা।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. Protocol Standardization&lt;/strong&gt;&lt;br&gt;
WebSocket raw data পাঠায় এবং কোন নির্দিষ্ট format ফলো করে না। ফলে client-server communication structure maintain করা কঠিন হতে পারে।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;সমাধান:&lt;/strong&gt; JSON-based structured messaging বা custom protocol define করা।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10. Debugging এবং Monitoring কঠিন&lt;/strong&gt;&lt;br&gt;
WebSocket এর continuous data flow থাকার কারণে traditional HTTP logging tool দিয়ে debug করা যায় না।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;সমাধান:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Custom logging middleware যুক্ত করা&lt;/li&gt;
&lt;li&gt;Real-time monitoring tools যেমন Sentry, LogRocket ব্যবহার করা।&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;উপসংহার:&lt;/strong&gt;&lt;br&gt;
WebSocket চমৎকার একটি প্রযুক্তি যা রিয়েল-টাইম অ্যাপ্লিকেশন তৈরির জন্য খুবই উপযোগী। তবে এগুলোর ব্যবহারে উপরের চ্যালেঞ্জগুলো মাথায় রেখে সঠিকভাবে configuration ও architecture design করলে পারফরম্যান্স ও reliability দুটোই নিশ্চিত করা সম্ভব।&lt;/p&gt;

</description>
      <category>websocket</category>
      <category>backenddevelopment</category>
      <category>networking</category>
      <category>programming</category>
    </item>
    <item>
      <title>Understanding gRPC: The Power of Single Long-Lived Connection</title>
      <dc:creator>Nozibul Islam</dc:creator>
      <pubDate>Mon, 05 May 2025 09:53:59 +0000</pubDate>
      <link>https://forem.com/nozibul_islam_113b1d5334f/understanding-grpc-the-power-of-single-long-lived-connection-3np4</link>
      <guid>https://forem.com/nozibul_islam_113b1d5334f/understanding-grpc-the-power-of-single-long-lived-connection-3np4</guid>
      <description>&lt;p&gt;When using gRPC, one of its biggest advantages over traditional REST is the use of a &lt;strong&gt;single long-lived connection&lt;/strong&gt; over HTTP/2.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔍 &lt;strong&gt;What does that mean?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Unlike REST where every request opens a new connection, gRPC establishes &lt;strong&gt;one persistent connection&lt;/strong&gt; between the client and the server. Through this connection, multiple messages can be exchanged — in both directions — without reopening it each time.&lt;/p&gt;

&lt;h3&gt;
  
  
  💡 &lt;strong&gt;Think of it like this:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Imagine going to a restaurant. With REST, you’d have to enter and exit the restaurant every time you wanted to order something new. But with gRPC, you sit down once, and continue to place multiple orders and have conversations — all through that single session.&lt;/p&gt;

&lt;h3&gt;
  
  
  📦 &lt;strong&gt;Benefits of gRPC’s Long-Lived Connection:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Reduced latency&lt;/li&gt;
&lt;li&gt;✅ Real-time communication&lt;/li&gt;
&lt;li&gt;✅ Efficient use of resources&lt;/li&gt;
&lt;li&gt;✅ Bidirectional streaming supported&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎮 &lt;strong&gt;Use Cases:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Perfect for real-time apps like online games, chat systems, IoT devices, and microservice communications — where speed and efficiency matter most.&lt;/p&gt;

</description>
      <category>grpc</category>
      <category>api</category>
      <category>backenddevelopment</category>
    </item>
    <item>
      <title>Floating-Point Precision Error</title>
      <dc:creator>Nozibul Islam</dc:creator>
      <pubDate>Wed, 09 Apr 2025 07:31:24 +0000</pubDate>
      <link>https://forem.com/nozibul_islam_113b1d5334f/floating-point-precision-error-440d</link>
      <guid>https://forem.com/nozibul_islam_113b1d5334f/floating-point-precision-error-440d</guid>
      <description>&lt;h3&gt;
  
  
  🧮 Floating-Point Precision Error: Why 0.1 + 0.2 ≠ 0.3?
&lt;/h3&gt;

&lt;p&gt;We often encounter strange results like:&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="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="mf"&gt;0.1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="c1"&gt;// Output: 0.30000000000000004&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;But why does this happen?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The reason is &lt;strong&gt;Floating-Point Precision Error&lt;/strong&gt;!&lt;/p&gt;

&lt;h3&gt;
  
  
  💡 What is Floating-Point Precision Error?
&lt;/h3&gt;

&lt;p&gt;Computers use the &lt;strong&gt;binary number system&lt;/strong&gt; to store decimal values. However, some decimal numbers like &lt;strong&gt;0.1&lt;/strong&gt;, &lt;strong&gt;0.2&lt;/strong&gt;, and &lt;strong&gt;0.3&lt;/strong&gt; have infinite binary representations. This means they &lt;strong&gt;can’t be stored precisely&lt;/strong&gt;, and tiny inaccuracies (known as &lt;em&gt;precision errors&lt;/em&gt;) occur.&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 Example:
&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="mf"&gt;0.1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="c1"&gt;// Expected: 0.3&lt;/span&gt;
&lt;span class="c1"&gt;// Actual:   0.30000000000000004&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We expected &lt;code&gt;0.3&lt;/code&gt;, but got something slightly off. That’s due to how floating-point numbers are represented in memory.&lt;/p&gt;

&lt;h3&gt;
  
  
  🖥️ Why Does This Happen? (IEEE 754 Standard)
&lt;/h3&gt;

&lt;p&gt;Computers follow the &lt;strong&gt;IEEE 754 Standard&lt;/strong&gt; to represent decimal numbers in binary. Each number is broken into three parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Sign Bit&lt;/strong&gt; → Indicates if the number is positive or negative
&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Exponent&lt;/strong&gt; → Determines how many times to multiply by powers of 2
&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Mantissa (or Fraction)&lt;/strong&gt; → Holds the actual number value&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, the &lt;strong&gt;mantissa has limited length&lt;/strong&gt;, so many decimal numbers can't be stored exactly, resulting in rounding errors.&lt;/p&gt;

&lt;h3&gt;
  
  
  🛠️ How to Reduce Precision Errors
&lt;/h3&gt;

&lt;h3&gt;
  
  
  ✅ Use a Decimal Library (for exact decimal math):
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;decimal&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Decimal&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Decimal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;0.1&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nc"&gt;Decimal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;0.2&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# Output: 0.3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ✅ Use Rounding (when slight imprecision is okay):
&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="mf"&gt;0.1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toFixed&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="c1"&gt;// Output: "0.30"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ✅ Use Epsilon Comparison (machine precision check):
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;math&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isclose&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# Output: True
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🚀 Why Does It Matter in Real Life?
&lt;/h2&gt;

&lt;p&gt;🔹 &lt;strong&gt;Banking Systems&lt;/strong&gt; – Even a tiny error can cause massive financial loss&lt;br&gt;&lt;br&gt;
🔹 &lt;strong&gt;Scientific Computation&lt;/strong&gt; – Tiny mistakes can derail space missions&lt;br&gt;&lt;br&gt;
🔹 &lt;strong&gt;Game Development&lt;/strong&gt; – A small glitch in the physics engine can ruin the player experience  &lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🔸 Computers can’t store all decimal numbers exactly.&lt;/li&gt;
&lt;li&gt;🔸 Floating-point precision errors cause small but important inaccuracies.&lt;/li&gt;
&lt;li&gt;🔸 Using techniques like &lt;strong&gt;decimal libraries&lt;/strong&gt;, &lt;strong&gt;rounding&lt;/strong&gt;, or &lt;strong&gt;epsilon comparison&lt;/strong&gt; can help minimize these issues.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>floatingpoint</category>
      <category>computerscience</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Floating Point Numbers and Scientific Notation</title>
      <dc:creator>Nozibul Islam</dc:creator>
      <pubDate>Sat, 05 Apr 2025 11:04:26 +0000</pubDate>
      <link>https://forem.com/nozibul_islam_113b1d5334f/floating-point-numbers-and-scientific-notation-1ih1</link>
      <guid>https://forem.com/nozibul_islam_113b1d5334f/floating-point-numbers-and-scientific-notation-1ih1</guid>
      <description>&lt;p&gt;One of the most powerful ways to represent numbers is through Scientific Notation. This system is especially useful for handling very large or very small numbers, making it ideal for computer science, where precise storage within limited memory is essential.&lt;/p&gt;

&lt;p&gt;Let’s break it down using the number 128 as an example:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. How Do Floating-Point Numbers Work?
&lt;/h3&gt;

&lt;p&gt;Floating-point numbers are typically divided into two main parts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Mantissa (or significand):&lt;/strong&gt; This represents the actual number, usually between 1 and 10.&lt;br&gt;
&lt;strong&gt;✅ Exponent:&lt;/strong&gt; This indicates how many times the decimal point needs to be shifted to the left or right.&lt;/p&gt;

&lt;p&gt;For example, the number 128 can be written as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;128 = 1.28 × 10²
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔ 1.28 is the mantissa&lt;br&gt;
✔ 10² (i.e., 10 raised to the power of 2) is the exponent&lt;/p&gt;
&lt;h3&gt;
  
  
  2. How Is This Equal to 128?
&lt;/h3&gt;

&lt;p&gt;We know that:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10² = 100
So,
1.28 × 100 = 128
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Why Is This Method Important?
&lt;/h3&gt;

&lt;p&gt;🔹 Efficient storage of large numbers&lt;br&gt;
&lt;strong&gt;Example:&lt;/strong&gt; 123,000,000 can be easily written as 1.23 × 10⁸&lt;/p&gt;

&lt;p&gt;🔹 Small numbers can also be represented precisely&lt;br&gt;
&lt;strong&gt;Example:&lt;/strong&gt; 0.00000456 becomes 4.56 × 10⁻⁶&lt;/p&gt;

&lt;p&gt;🔹 Improves computational accuracy&lt;br&gt;
According to the IEEE 754 floating-point standard, this method is used for representing decimal numbers in computer systems.&lt;/p&gt;

&lt;p&gt;Have You Ever Faced Floating-Point Precision Errors or Worked with the IEEE 754 Standard?&lt;br&gt;
Share your experience in the comments below!&lt;/p&gt;

</description>
      <category>floatingpoint</category>
      <category>computerscience</category>
      <category>programming</category>
    </item>
    <item>
      <title>How Do Floating Point Numbers Work?</title>
      <dc:creator>Nozibul Islam</dc:creator>
      <pubDate>Thu, 03 Apr 2025 16:46:11 +0000</pubDate>
      <link>https://forem.com/nozibul_islam_113b1d5334f/how-do-floating-point-numbers-work-h83</link>
      <guid>https://forem.com/nozibul_islam_113b1d5334f/how-do-floating-point-numbers-work-h83</guid>
      <description>&lt;p&gt;We often use floating-point numbers in programming, but have we ever thought about how they actually work?  &lt;/p&gt;

&lt;p&gt;Let’s take a look at the following binary number: &lt;strong&gt;1111.1101&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;How is it converted to a decimal number?  &lt;/p&gt;

&lt;h4&gt;
  
  
  🔹 Integer Part (1111)
&lt;/h4&gt;

&lt;p&gt;Binary value:  (1×8) + (1×4) + (1×2) + (1×1) = 15&lt;/p&gt;

&lt;h4&gt;
  
  
  🔹 Fractional Part (.1101)
&lt;/h4&gt;

&lt;p&gt;Binary value:  (1×1/2) + (1×1/4) + (0×1/8) + (1×1/16) = 0.8125&lt;/p&gt;

&lt;h3&gt;
  
  
  Final Conversion:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1111.1101 (Binary) = 15.8125 (Decimal)&lt;/strong&gt; &lt;/p&gt;

</description>
      <category>floating</category>
      <category>beginners</category>
      <category>programming</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>Abstraction vs Encapsulation</title>
      <dc:creator>Nozibul Islam</dc:creator>
      <pubDate>Sun, 16 Feb 2025 05:52:00 +0000</pubDate>
      <link>https://forem.com/nozibul_islam_113b1d5334f/abstraction-vs-encapsulation-11ib</link>
      <guid>https://forem.com/nozibul_islam_113b1d5334f/abstraction-vs-encapsulation-11ib</guid>
      <description>&lt;p&gt;Let's say a ceiling fan is running. From the outside, we can only see the rotation of the fan, but we cannot see how the motor works inside or how the various components are connected. This hidden part is "Abstraction", which the user cannot directly see or understand.&lt;br&gt;
Now, all the components inside the fan are covered by an outer casing, so they cannot be seen from the outside. This outer layer is "Encapsulation".&lt;/p&gt;

</description>
      <category>abstraction</category>
      <category>encapsulation</category>
      <category>oop</category>
      <category>programming</category>
    </item>
    <item>
      <title>Password Hashing and Data Integrity in Real-World Implementation</title>
      <dc:creator>Nozibul Islam</dc:creator>
      <pubDate>Sat, 25 Jan 2025 07:01:06 +0000</pubDate>
      <link>https://forem.com/nozibul_islam_113b1d5334f/password-hashing-and-data-integrity-in-real-world-implementation-50g6</link>
      <guid>https://forem.com/nozibul_islam_113b1d5334f/password-hashing-and-data-integrity-in-real-world-implementation-50g6</guid>
      <description>&lt;p&gt;When a user creates a new account by signing up, the password they provide is not stored directly in the database. Instead, the password is passed through a hash function. This hash function converts the original password into a unique string (hash). The hash value is then stored in the server, not the actual password.&lt;/p&gt;

&lt;p&gt;Later, when the user attempts to log in, they enter the same password. This entered password is passed through the same hash function, and the resulting hash is compared with the hash stored in the server. If both hash values match, it indicates that the password entered by the user is correct. This is because hash functions always generate the same output for the same input, ensuring consistency. If the hash values do not match, the login will be rejected.&lt;/p&gt;

&lt;p&gt;By using hashing, passwords are stored securely without being saved in plain text, which increases security. Even if hackers gain access to the database, they will only have the hash values, not the actual passwords. This process is a vital part of securing sensitive information and ensuring user privacy.&lt;/p&gt;

&lt;h4&gt;
  
  
  Additional Use Cases of Hashing
&lt;/h4&gt;

&lt;p&gt;Hashing is not only used for password storage but also plays a crucial role in ensuring data integrity in various systems. For example, when files are uploaded to the internet, the hash value of the file is created and uploaded alongside the actual data. When a new user downloads the file, they can use the same hash function to calculate the digest of the downloaded file. Then, the hash values are compared. If they match, it ensures the file's integrity has been maintained and no data corruption has occurred.&lt;/p&gt;

&lt;p&gt;This method is used to ensure the accuracy and security of files, so that no changes or corruption occur to the file during transmission or storage.&lt;/p&gt;

</description>
      <category>hashing</category>
      <category>security</category>
      <category>webdev</category>
      <category>backenddevelopment</category>
    </item>
  </channel>
</rss>
