<?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: Shishir Bhuiyan</title>
    <description>The latest articles on DEV Community by Shishir Bhuiyan (@engrshishir).</description>
    <link>https://dev.to/engrshishir</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%2F1275532%2F9d729ef2-4930-4e2b-b13f-9edcc888aa40.jpeg</url>
      <title>DEV Community: Shishir Bhuiyan</title>
      <link>https://dev.to/engrshishir</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/engrshishir"/>
    <language>en</language>
    <item>
      <title>Synchronous vs Asynchronous</title>
      <dc:creator>Shishir Bhuiyan</dc:creator>
      <pubDate>Fri, 08 May 2026 10:03:18 +0000</pubDate>
      <link>https://dev.to/engrshishir/synchronous-vs-asynchronous-1nd8</link>
      <guid>https://dev.to/engrshishir/synchronous-vs-asynchronous-1nd8</guid>
      <description>&lt;p&gt;Most people understand technical concepts better when they connect to real-life experiences. One of the simplest ways to explain &lt;strong&gt;synchronous vs asynchronous&lt;/strong&gt; programming is through railway ticket booking in Bangladesh.&lt;/p&gt;

&lt;p&gt;Imagine buying a long-distance train ticket at Kamalapur Railway Station. This is a classic synchronous process. You stand in a single queue and wait for your turn. When you finally reach the counter, the clerk checks seat availability, processes payment, and prints the ticket while everyone behind you waits. The system handles one passenger at a time. If the network becomes slow or someone takes extra time deciding, the entire line stops moving because every step depends on the previous one finishing first.&lt;/p&gt;

&lt;p&gt;Now compare that to an online railway ticket booking system. Thousands of people can search routes, check seat availability, and make payments at the same time. When you click “Book Ticket,” your request is sent to the server and processed in the background. While your payment is being verified, the platform continues serving other users simultaneously. You are waiting for your own response, but you are not blocking the entire system.&lt;/p&gt;

&lt;p&gt;That is essentially how asynchronous programming works. When a function is marked as "async," it tells the system that this task may involve waiting—perhaps for a database query, an API response, or a payment gateway confirmation. When we use await, that specific function pauses until the result arrives, but the rest of the application continues running other operations in parallel. Once the response is ready, execution resumes exactly where it stopped.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>computerscience</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How WordPress Orchestrates Thousands of Plugins: The Magic of Hooks ?</title>
      <dc:creator>Shishir Bhuiyan</dc:creator>
      <pubDate>Thu, 30 Apr 2026 18:38:38 +0000</pubDate>
      <link>https://dev.to/engrshishir/how-wordpress-orchestrates-thousands-of-plugins-the-magic-of-hooks--4klc</link>
      <guid>https://dev.to/engrshishir/how-wordpress-orchestrates-thousands-of-plugins-the-magic-of-hooks--4klc</guid>
      <description>&lt;p&gt;WordPress's greatest strength is its plugin ecosystem. But have you ever wondered how it manages thousands of developers writing code in completely different styles—some using old-school procedural code, others using modern Object-Oriented Programming (OOP)—without the whole system crashing down?&lt;/p&gt;

&lt;p&gt;The secret lies in the synergy between PHP Callables and the WordPress Hook System.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Global 'Address Book': $wp_filter
Think of WordPress as having a massive global spreadsheet or "Address Book" called $wp_filter. When you install a plugin, WordPress doesn't actively go out and "search" for the plugin's features. Instead, the plugin introduces itself.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By using functions like add_action() or add_filter(), a plugin writes its own name and "phone number" (the function name) into that specific row of the spreadsheet.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The Gatekeeper: is_callable()&lt;br&gt;
When a specific event occurs—like publishing a post or loading a header—WordPress opens its address book to see who signed up for that event. Before it tries to run any code, it uses a PHP function called is_callable(). This acts as a security guard, checking if the "phone number" provided by the plugin actually leads to a working function that can be executed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Universal Adapter: call_user_func_array()&lt;br&gt;
This is where the real magic happens. WordPress uses a PHP powerhouse called call_user_func_array(). Think of this as a Universal Remote Control that works on every brand of TV.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Whether a developer provides:&lt;/p&gt;

&lt;p&gt;A simple function name (String)&lt;/p&gt;

&lt;p&gt;A method inside a class (Array)&lt;/p&gt;

&lt;p&gt;A modern Anonymous Function or Namespace&lt;/p&gt;

&lt;p&gt;WordPress doesn't need to "translate" the code. It simply hands the registration over to the PHP engine and says, "You know how to run this; go ahead."&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Decoupling: The "Radio Station" Logic
The entire system operates like a radio station.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;WordPress is the broadcaster, sending out signals on specific frequencies (Hooks).&lt;/p&gt;

&lt;p&gt;Plugins are the radio sets tuned into those frequencies.&lt;/p&gt;

&lt;p&gt;The broadcaster (WordPress) doesn't care who is listening or what device they are using. This Decoupling—where the core and the plugins don't depend on each other's internal structure—is why a plugin written years ago can still function perfectly with a modern theme today.&lt;/p&gt;

&lt;p&gt;The Result: A Seamless Connection&lt;br&gt;
WordPress provides the "Socket" (the Hook), and plugins provide the "Plug." Because they connect through this invisible interface rather than modifying each other's files, thousands of plugins can coexist, adding features and power without ever touching a single line of core WordPress code.&lt;/p&gt;

&lt;p&gt;This elegant "handshake" is exactly what makes WordPress the most flexible CMS on the planet.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>php</category>
      <category>webdev</category>
      <category>wordpress</category>
    </item>
    <item>
      <title>Docker vs. Kubernetes</title>
      <dc:creator>Shishir Bhuiyan</dc:creator>
      <pubDate>Thu, 30 Apr 2026 18:35:44 +0000</pubDate>
      <link>https://dev.to/engrshishir/docker-vs-kubernetes-1a15</link>
      <guid>https://dev.to/engrshishir/docker-vs-kubernetes-1a15</guid>
      <description>&lt;p&gt;In modern software engineering, Docker and Kubernetes (K8s) are often mentioned in the same breath. While they are different technologies, they aren't competitors—they are complementary tools that solve different parts of the containerization puzzle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Docker: The Building Block&lt;/strong&gt;&lt;br&gt;
Docker revolutionized the industry in 2013 by introducing a way to package an application and all its dependencies into a single "Image." This ensures that if the code works on a developer's laptop, it will work exactly the same way on a production server.&lt;/p&gt;

&lt;p&gt;Docker Image: Think of this as a "blueprint" or a snapshot of your app. It contains the code, runtime (Node.js, Python, etc.), libraries, and configuration files in a read-only format.&lt;/p&gt;

&lt;p&gt;Container: When you run an image, it becomes a container—a living, breathing instance of your application.&lt;/p&gt;

&lt;p&gt;The Workflow: You write a Dockerfile, run docker build to create the image, and use docker run to launch your application anywhere in the world.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Kubernetes: The Conductor&lt;/strong&gt;&lt;br&gt;
If Docker is about building and running an individual container, Kubernetes (released by Google in 2014) is about managing thousands of them. It acts as a highly skilled "Captain" or Orchestrator.&lt;/p&gt;

&lt;p&gt;Kubernetes handles the complex operational tasks that would be impossible to do manually at scale:&lt;/p&gt;

&lt;p&gt;Auto-scaling: If web traffic spikes, K8s automatically spins up more containers.&lt;/p&gt;

&lt;p&gt;Self-healing: If a container crashes, K8s detects it and restarts it immediately.&lt;/p&gt;

&lt;p&gt;Zero Downtime: It manages updates seamlessly, ensuring the app stays online while new versions are deployed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Bottom Line&lt;/strong&gt;&lt;br&gt;
Docker is the tool you use to create the "boxes" (containers) for your software.&lt;/p&gt;

&lt;p&gt;Kubernetes is the system you use to manage an entire fleet of those boxes.&lt;/p&gt;

&lt;p&gt;For a small startup or a side project, Docker alone is usually more than enough. But once your application grows into a massive platform (like Netflix or Spotify) requiring high reliability and scale, Kubernetes becomes essential.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>docker</category>
      <category>kubernetes</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>🚀 VM vs Container</title>
      <dc:creator>Shishir Bhuiyan</dc:creator>
      <pubDate>Thu, 30 Apr 2026 18:12:30 +0000</pubDate>
      <link>https://dev.to/engrshishir/vm-vs-container-40mi</link>
      <guid>https://dev.to/engrshishir/vm-vs-container-40mi</guid>
      <description>&lt;p&gt;The fundamental difference between a Virtual Machine (VM) and a Container lies in their level of isolation and how they share resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Virtual Machine (VM):&lt;/strong&gt; Hardware-Level Virtualization&lt;br&gt;
A VM operates at the hardware level. Using a 'Hypervisor', a physical server is divided into slices, and a complete, separate Guest Operating System (OS) is installed on each slice.&lt;/p&gt;

&lt;p&gt;Isolation: Each VM is highly secure and self-contained.&lt;/p&gt;

&lt;p&gt;Resource Usage: Because each VM carries its own full OS, it consumes a significant amount of RAM and storage.&lt;/p&gt;

&lt;p&gt;Speed: Due to the heavy OS overhead, VMs take a considerable amount of time to boot up.&lt;/p&gt;

&lt;p&gt;Container: OS-Level Virtualization&lt;br&gt;
A container operates at the Operating System level. Instead of carrying its own OS, it shares the 'Kernel' of the host machine.&lt;/p&gt;

&lt;p&gt;Isolation: Application files are isolated in a way that they "think" they are on a separate system, while they are actually running lightly on the same host OS.&lt;/p&gt;

&lt;p&gt;Efficiency: Because they share resources, you can run many more containers on the same hardware compared to VMs.&lt;/p&gt;

&lt;p&gt;Speed: Containers are incredibly fast and can start up in just a few seconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Example: Physical Chess vs. Video Games&lt;/strong&gt;&lt;br&gt;
Virtual Machines (VM):&lt;br&gt;
Imagine you have 10 physical chess sets. Each set requires its own wooden board, its own set of pieces, and its own physical space. This is heavy, bulky, and difficult to transport—much like how every VM requires its own full-scale OS.&lt;/p&gt;

&lt;p&gt;Containers:&lt;br&gt;
Think of a multiplayer video game. The game’s graphics engine, sound, and maps (the Kernel) are shared by everyone. However, every player has their own unique profile or character (the Container). Everyone shares the same game resources, but one player cannot see or access another player’s private inventory.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>cloudcomputing</category>
      <category>devops</category>
      <category>docker</category>
    </item>
    <item>
      <title>What is Containerization and Why is it Essential?</title>
      <dc:creator>Shishir Bhuiyan</dc:creator>
      <pubDate>Thu, 30 Apr 2026 18:03:01 +0000</pubDate>
      <link>https://dev.to/engrshishir/what-is-containerization-and-why-is-it-essential-4i9m</link>
      <guid>https://dev.to/engrshishir/what-is-containerization-and-why-is-it-essential-4i9m</guid>
      <description>&lt;p&gt;Containerization has revolutionized the way we develop, ship, and run applications. At its simplest, a container is a "box" where your application and all its necessary files are packed together, ensuring it works exactly the same on any machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Exactly is Containerization?&lt;/strong&gt;&lt;br&gt;
It is an OS-level virtualization method used to bundle an application and all its requirements—such as code, runtime, system tools, libraries, and settings—into a single, lightweight package.&lt;/p&gt;

&lt;p&gt;It is called a "container" because it mirrors the logic of shipping containers: it doesn't matter what is inside; it is designed to be easily moved and operated in any environment, whether it's a laptop, a data center, or the cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is it Better than Virtual Machines (VMs)?&lt;/strong&gt;&lt;br&gt;
Resource Efficient: Unlike VMs, containers do not carry a separate Operating System. Instead, they share the host's OS kernel.&lt;/p&gt;

&lt;p&gt;Fast Boot-up: Because they are lightweight, containers start up in seconds.&lt;/p&gt;

&lt;p&gt;Low Overhead: They consume significantly less memory and CPU compared to traditional VMs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common Use Cases&lt;/strong&gt;&lt;br&gt;
Cloud Migration: Easily moving legacy applications to the cloud.&lt;/p&gt;

&lt;p&gt;Microservices: Building complex systems where each service runs in its own container.&lt;/p&gt;

&lt;p&gt;IoT Updates: Delivering seamless updates to Internet of Things devices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Popular Tools in the Ecosystem&lt;/strong&gt;&lt;br&gt;
Docker: The industry standard for creating and running containers.&lt;/p&gt;

&lt;p&gt;Kubernetes: A powerful platform to automatically manage and scale thousands of containers.&lt;/p&gt;

&lt;p&gt;Linux Containers (LXC): Ideal for large-scale data applications.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>beginners</category>
      <category>devops</category>
      <category>docker</category>
    </item>
    <item>
      <title>Did you know PHP started as a personal project? 🤯</title>
      <dc:creator>Shishir Bhuiyan</dc:creator>
      <pubDate>Thu, 30 Apr 2026 17:56:47 +0000</pubDate>
      <link>https://dev.to/engrshishir/did-you-know-php-started-as-a-personal-project-42g2</link>
      <guid>https://dev.to/engrshishir/did-you-know-php-started-as-a-personal-project-42g2</guid>
      <description>&lt;p&gt;Back in 1993, #RasmusLerdorf wrote a few CGI scripts in C just to maintain his personal homepage. He extended them to handle HTML forms and databases, calling it "Personal Home Page/Forms Interpreter" (PHP/FI). That humble side project eventually became the language powering ~80% of the web today. The name later evolved into the recursive acronym we know: Hypertext Preprocessor (PHP).&lt;br&gt;
🚀 Now here's what actually happens under the hood every time PHP runs:&lt;br&gt;
⚡ SAPI Layer&lt;br&gt;
Nginx/Apache receives your request and hands it off to PHP via FastCGI. Headers parsed, access checked — the boring stuff that matters.&lt;/p&gt;

&lt;p&gt;🧠 OPcache Check&lt;br&gt;
PHP asks: "Have I seen this before?"&lt;br&gt;
YES → Load compiled OpCodes from memory. Done. Fast. &lt;br&gt;
NO → Time to compile...&lt;/p&gt;

&lt;p&gt;🔧 Compilation Pipeline&lt;br&gt;
Lexer breaks your code into tokens&lt;br&gt;
Parser builds an Abstract Syntax Tree (AST)&lt;br&gt;
Compiler converts AST → OpCodes&lt;/p&gt;

&lt;p&gt;⚙️ Zend Engine Execution&lt;br&gt;
The heart of PHP. Executes OpCodes, runs your logic, queries your DB, builds the response.&lt;/p&gt;

&lt;p&gt;📤 Output &amp;amp; Cleanup&lt;br&gt;
Response gets Gzip compressed → sent to browser → PHP cleans up memory. Ready for the next request.&lt;/p&gt;

&lt;p&gt;💡PHP 8+ Bonus: &lt;br&gt;
JIT compilation converts hot OpCodes directly into machine code. Even faster.&lt;/p&gt;

&lt;h1&gt;
  
  
  PHP #WebDev #Backend #Performance #ZendEngine #PHP8 #SoftwareEngineering #RasmusLerdorf
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>How Social Media Sharing Actually Works ?</title>
      <dc:creator>Shishir Bhuiyan</dc:creator>
      <pubDate>Thu, 30 Apr 2026 17:55:46 +0000</pubDate>
      <link>https://dev.to/engrshishir/how-social-media-sharing-actually-works--224j</link>
      <guid>https://dev.to/engrshishir/how-social-media-sharing-actually-works--224j</guid>
      <description>&lt;p&gt;When you paste a URL on Facebook, Twitter, or LinkedIn, here's what happens behind the scenes:&lt;br&gt;
1️⃣ The Crawl - Platform sends a bot to your URL&lt;br&gt;
2️⃣ HTML Parsing - Scans your page for meta tags&lt;br&gt;
3️⃣ Content Extraction - Pulls title, description, image&lt;br&gt;
4️⃣ Preview Generation - Creates the rich preview card&lt;br&gt;
5️⃣ Caching - Stores the data for future shares&lt;/p&gt;

&lt;p&gt;🖼️ Image Requirements (Critical!):&lt;br&gt;
• Size: Minimum 1200x630px (Facebook), 1024x512px (Twitter)&lt;br&gt;
• Format: JPG, PNG, WebP&lt;br&gt;
• File Size: Under 8MB&lt;br&gt;
• Accessibility: Must be publicly accessible via HTTPS&lt;br&gt;
• Alt Text: Include og:image:alt for accessibility&lt;/p&gt;

&lt;p&gt;📝 Content Best Practices:&lt;br&gt;
• Title: 60-90 characters (gets truncated after)&lt;br&gt;
• Description: 150-160 characters for optimal display&lt;br&gt;
• Image: High contrast, readable text, brand consistent&lt;br&gt;
• URL: Clean, descriptive URLs perform better&lt;/p&gt;

&lt;p&gt;⚡ Pro Developer Tips:&lt;br&gt;
Test Before Launch:&lt;br&gt;
• Meta Tags Toolkit: &lt;a href="https://metatags.io/" rel="noopener noreferrer"&gt;https://metatags.io/&lt;/a&gt;&lt;br&gt;
• Facebook Debugger: developers.facebook.com/tools/debug/&lt;br&gt;
• Twitter Card Validator: cards-dev.twitter.com/validator&lt;br&gt;
• LinkedIn Post Inspector: linkedin.com/post-inspector/&lt;br&gt;
Common Pitfalls to Avoid:&lt;br&gt;
• Images hosted on localhost (won't work!)&lt;br&gt;
• Missing HTTPS on image URLs&lt;br&gt;
• Forgetting to update meta tags after content changes&lt;br&gt;
• Not clearing social media cache after updates&lt;/p&gt;

&lt;p&gt;🏷️Advanced Techniques:&lt;br&gt;
• Dynamic meta tags based on content&lt;br&gt;
• Different images for different platforms&lt;br&gt;
• A/B testing social preview images&lt;br&gt;
• Implementing structured data (JSON-LD)&lt;/p&gt;

&lt;p&gt;💡 What's your experience with social media sharing optimization? Any tools or tricks?&lt;/p&gt;

&lt;h1&gt;
  
  
  WebDevelopment #SocialMediaSharing #OpenGraph #TwitterCards #SEO #MetaTags #Frontend #Developer #SocialMedia #WebOptimization #TechTips
&lt;/h1&gt;

</description>
      <category>html</category>
      <category>marketing</category>
      <category>socialmedia</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Roxnor Git বিভ্রাটের গল্প !</title>
      <dc:creator>Shishir Bhuiyan</dc:creator>
      <pubDate>Thu, 30 Apr 2026 17:54:14 +0000</pubDate>
      <link>https://dev.to/engrshishir/roxnor-git-bibhraatter-glp--3n0c</link>
      <guid>https://dev.to/engrshishir/roxnor-git-bibhraatter-glp--3n0c</guid>
      <description>&lt;p&gt;&lt;strong&gt;Roxnor&lt;/strong&gt; Git বিভ্রাটের গল্প ! &lt;/p&gt;

&lt;p&gt;যখন Git Reset আর Refspec এর চক্করে মাথা কাজ করছিল না 😅&lt;br&gt;
📌 আমি একটি প্লাগইনের Role Based Access Control নিয়ে কাজ করছিলাম। লাস্ট কমিট পুশ করে, একটু আরাম করে বসলাম। হঠাৎ টিম লিড ভাইয়ের আগমন, লাস্ট কমিটটা আলাদা পুল রিকুয়েস্ট দিতে হবে। কারন লাস্ট কমিটের ফাইলগুলি ছিল এক্সিটিং এপিআই গুলোতে রুল পার্মিশন টা চেক দেওয়া। তাই চেন্জড ফাইল অনেক গুলি দেখাচ্ছিল। আমি ভাবলাম, git reset --mixed HEAD~1 দিয়ে একটু রিভার্ট করি। এখন  একসাথে প্রায় 40টার মতো ফাইল Unstaged অবস্থায় চলে আসলো। কিন্তু এই অবস্থায় ফোর্স পুশ দেওয়াটা রিস্কি হতে পারে। তাই ভাবলাম,আমার ফাইলের পরিবর্তন গুলি নিরাপদে রেখে,সব ক্লিন করে তারপর একটা PR দিব ৷ তাই -&lt;/p&gt;

&lt;p&gt;১. প্রথমেই git stash কমান্ড দিয়ে সব আন স্টেজড ফাইলগুলোকে নিরাপদ জায়গায় সরিয়ে নিলাম।&lt;/p&gt;

&lt;p&gt;২. git push origin shishir-xs --force চালালাম। &lt;br&gt;
তখনই আসলো error: src refspec shishir-xs does not match any.&lt;br&gt;
git branch কমান্ড দিয়ে কনফার্ম হলাম আমি ভুল করে সোর্স ব্রাঞ্চ হিসেবে shishir-xs দিচ্ছিলাম, অথচ আমার বর্তমান ব্রাঞ্চ ছিল role-based-access-control 😵‍💫।&lt;br&gt;
এবার শেষমেশ সঠিক ব্রাঞ্চ দিয়ে git push origin role-based-access-control --force দিতেই  রিমোট রিপোজিটরি আমার লোকাল স্টেটের সাথে পার্ফেক্টলি সিঙ্কড  হয়ে গেল। &lt;/p&gt;

&lt;p&gt;৩. এবার git stash pop করে ফাইলগুলো ফেরত আনলাম এবং development branch এর উপর নতুন branch তৈরি করে,পরিবর্তন গুলি কমিট করে , Pull Request দিয়ে ল্যাপটপ বন্ধ করলাম।  &lt;/p&gt;

&lt;h1&gt;
  
  
  SoftwareDevelopment #Git #GitHub #CodingLife  #wordpressplugins #DevHumor #RoxNor
&lt;/h1&gt;

</description>
      <category>devjournal</category>
      <category>git</category>
      <category>github</category>
      <category>programming</category>
    </item>
    <item>
      <title>Elementskit 🎉</title>
      <dc:creator>Shishir Bhuiyan</dc:creator>
      <pubDate>Thu, 30 Apr 2026 17:52:33 +0000</pubDate>
      <link>https://dev.to/engrshishir/elementskit-iee</link>
      <guid>https://dev.to/engrshishir/elementskit-iee</guid>
      <description>&lt;p&gt;🎉 𝟮 𝗠𝗶𝗹𝗹𝗶𝗼𝗻 𝗔𝗰𝘁𝗶𝘃𝗲 𝗜𝗻𝘀𝘁𝗮𝗹𝗹𝘀!&lt;br&gt;
A huge milestone for ElementsKit, now powering 2 million+ websites worldwide! &lt;br&gt;
This achievement belongs to our amazing community of 𝘤𝘳𝘦𝘢𝘵𝘰𝘳𝘴, 𝘥𝘦𝘷𝘦𝘭𝘰𝘱𝘦𝘳𝘴, 𝘢𝘯𝘥 𝘢𝘨𝘦𝘯𝘤𝘪𝘦𝘴 who trust ElementsKit to build better websites with Elementor.&lt;br&gt;
Thank you for being part of this journey. More exciting things are coming! 💙&lt;/p&gt;

</description>
    </item>
    <item>
      <title>TableKit</title>
      <dc:creator>Shishir Bhuiyan</dc:creator>
      <pubDate>Sun, 26 Apr 2026 18:48:34 +0000</pubDate>
      <link>https://dev.to/engrshishir/tablekit-577b</link>
      <guid>https://dev.to/engrshishir/tablekit-577b</guid>
      <description>&lt;p&gt;After supporting 3M+ WordPress users, we kept hearing the same frustration: "Why is building data tables in Gutenberg so limiting?" &lt;br&gt;
So we built TableKit. &lt;br&gt;
It's a native Gutenberg table builder that actually works the way you'd expect: drop any block into a cell, merge layouts however you want, and style everything down to the pixel. &lt;/p&gt;

&lt;p&gt;But here's where it gets interesting: &lt;br&gt;
Live data sync → Pull from Google Sheets, CSVs, JSON, or REST APIs &lt;br&gt;
WordPress integration → Auto-structure your Posts, Pages, and CPTs &lt;br&gt;
WooCommerce ready → Build product catalogs with native add-to-cart functionality. &lt;/p&gt;

&lt;p&gt;Plus all the power features you actually need: frozen headers, conditional formatting, search, filters, pagination, and instant exports. &lt;br&gt;
We engineered TableKit to eliminate everyday design bottlenecks, backed by our experience supporting over 3 million users worldwide. &lt;br&gt;
Early access is live now with up to 70% off for early adopters. &lt;br&gt;
Full walkthrough in the comments 👇&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>wpmet</category>
      <category>webdev</category>
      <category>tablekit</category>
    </item>
    <item>
      <title>Laravel Authentication</title>
      <dc:creator>Shishir Bhuiyan</dc:creator>
      <pubDate>Sat, 24 Feb 2024 17:37:20 +0000</pubDate>
      <link>https://dev.to/engrshishir/laravel-authentication-1ehj</link>
      <guid>https://dev.to/engrshishir/laravel-authentication-1ehj</guid>
      <description>&lt;p&gt;*&lt;em&gt;Main Source : *&lt;/em&gt;&lt;a href="https://laravel.com/docs/9.x/authentication#authenticating-users"&gt;https://laravel.com/docs/9.x/authentication#authenticating-users&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Laravel offers several packages related to authentication. Before continuing, we'll review the general authentication ecosystem in Laravel and discuss each package's intended purpose.&lt;/p&gt;

&lt;p&gt;First, consider how authentication works. When using a web browser, a user will provide their username and password via a login form. If these credentials are correct, the application will store information about the authenticated user in the user's session. A cookie issued to the browser contains the session ID so that subsequent requests to the application can associate the user with the correct session. After the session cookie is received, the application will retrieve the session data based on the session ID, note that the authentication information has been stored in the session, and will consider the user as "authenticated".&lt;/p&gt;

&lt;p&gt;When a remote service needs to authenticate to access an API, cookies are not typically used for authentication because there is no web browser. Instead, the remote service sends an API token to the API on each request. The application may validate the incoming token against a table of valid API tokens and "authenticate" the request as being performed by the user associated with that API token.&lt;/p&gt;

&lt;p&gt;Laravel includes built-in authentication and session services which are typically accessed via the Auth and Session facades. These features provide cookie-based authentication for requests that are initiated from web browsers. They provide methods that allow you to verify a user's credentials and authenticate the user. In addition, these services will automatically store the proper authentication data in the user's session and issue the user's session cookie.&lt;br&gt;
The attempt method accepts an array of key / value pairs as its first argument. The values in the array will be used to find the user in your database table. So, in the example above, the user will be retrieved by the value of the email column. If the user is found, the hashed password stored in the database will be compared with the password value passed to the method via the array. You should not hash the incoming request's password value, since the framework will automatically hash the value before comparing it to the hashed password in the database. An authenticated session will be started for the user if the two hashed passwords match.&lt;/p&gt;

&lt;p&gt;Remember, Laravel's authentication services will retrieve users from your database based on your authentication guard's "provider" configuration. In the default config/auth.php configuration file, the Eloquent user provider is specified and it is instructed to use the App\Models\User model when retrieving users. You may change these values within your configuration file based on the needs of your application.&lt;/p&gt;

&lt;p&gt;The attempt method will return true if authentication was successful. Otherwise, false will be returned.&lt;/p&gt;

&lt;p&gt;The intended method provided by Laravel's redirector will redirect the user to the URL they were attempting to access before being intercepted by the authentication middleware. A fallback URI may be given to this method in case the intended destination is not available.&lt;br&gt;
Link : &lt;a href="https://laravel.com/docs/9.x/authentication#authenticating-users"&gt;https://laravel.com/docs/9.x/authentication#authenticating-users&lt;/a&gt;&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;?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{
    /**
     * Handle an authentication attempt.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function authenticate(Request $request)
    {
        $credentials = $request-&amp;gt;validate([
            'email' =&amp;gt; ['required', 'email'],
            'password' =&amp;gt; ['required'],
        ]);

        if (Auth::attempt($credentials)) {
            $request-&amp;gt;session()-&amp;gt;regenerate();

            return redirect()-&amp;gt;intended('dashboard');
        }

        return back()-&amp;gt;withErrors([
            'email' =&amp;gt; 'The provided credentials do not match our records.',
        ])-&amp;gt;onlyInput('email');
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Accessing Specific Guard Instances
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://laravel.com/docs/9.x/authentication#accessing-specific-guard-instances"&gt;https://laravel.com/docs/9.x/authentication#accessing-specific-guard-instances&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Authenticate A User Once
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://laravel.com/docs/9.x/authentication#authenticate-a-user-once"&gt;https://laravel.com/docs/9.x/authentication#authenticate-a-user-once&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Invalidating Sessions On Other Devices
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://laravel.com/docs/9.x/authentication#invalidating-sessions-on-other-devices"&gt;https://laravel.com/docs/9.x/authentication#invalidating-sessions-on-other-devices&lt;/a&gt;&lt;/p&gt;

</description>
      <category>laravel</category>
    </item>
    <item>
      <title>Font Awesome 5 use social/brand icons in React</title>
      <dc:creator>Shishir Bhuiyan</dc:creator>
      <pubDate>Mon, 12 Feb 2024 07:59:56 +0000</pubDate>
      <link>https://dev.to/engrshishir/font-awesome-5-use-socialbrand-icons-in-react-51jb</link>
      <guid>https://dev.to/engrshishir/font-awesome-5-use-socialbrand-icons-in-react-51jb</guid>
      <description>&lt;p&gt;&lt;code&gt;npm i --save @fortawesome/fontawesome-svg-core&lt;br&gt;
npm install --save @fortawesome/free-solid-svg-icons&lt;br&gt;
npm i --save @fortawesome/free-brands-svg-icons &lt;br&gt;
npm install --save @fortawesome/react-fontawesome&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import {  faFacebookF , } from '@fortawesome/free-brands-svg-icons';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;FontAwesomeIcon icon={faFacebookF} /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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