<?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: Zahid Hasan Tonmoy</title>
    <description>The latest articles on DEV Community by Zahid Hasan Tonmoy (@zahidhasantonmoy).</description>
    <link>https://dev.to/zahidhasantonmoy</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4091948%2F475c9cbc-f55c-485d-b96d-d6c215751336.jpg</url>
      <title>DEV Community: Zahid Hasan Tonmoy</title>
      <link>https://dev.to/zahidhasantonmoy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zahidhasantonmoy"/>
    <language>en</language>
    <item>
      <title>From MERN to Laravel: Why I'm Learning PHP and PostgreSQL as a MERN Developer published: false tags: laravel, php, postgresql, webdev</title>
      <dc:creator>Zahid Hasan Tonmoy</dc:creator>
      <pubDate>Mon, 14 Sep 2026 06:33:14 +0000</pubDate>
      <link>https://dev.to/zahidhasantonmoy/from-mern-to-laravel-why-im-learning-php-and-postgresql-as-a-mern-developer-published-false-2aie</link>
      <guid>https://dev.to/zahidhasantonmoy/from-mern-to-laravel-why-im-learning-php-and-postgresql-as-a-mern-developer-published-false-2aie</guid>
      <description>&lt;p&gt;If you'd told me a couple of years ago that I'd spend my evenings writing PHP, I would've laughed it off. I built my whole identity as a developer around MERN — MongoDB, Express, React, Node. It was fast, it was JavaScript top to bottom, and it felt like the "modern" stack compared to what a lot of local agencies were still running.&lt;/p&gt;

&lt;p&gt;So it's a little funny to be sitting here now, a few months into learning Laravel and PostgreSQL, actually enjoying it. This isn't a "PHP was secretly amazing the whole time" post. It's more of an honest breakdown of why I started, what's been genuinely harder than I expected, and what's actually made me a better developer in the process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why bother, if MERN already works
&lt;/h2&gt;

&lt;p&gt;Two things pushed me here.&lt;/p&gt;

&lt;p&gt;First, the job and freelance market. I'm based in Dhaka, and if you look at what local agencies, small businesses, and even a lot of remote clients are actually running, PHP is everywhere. Laravel specifically shows up constantly in job posts and freelance briefs here — way more than I expected when I was deep in my MERN bubble. Sticking to one stack was quietly shrinking the pool of work I could take on.&lt;/p&gt;

&lt;p&gt;Second, and this one surprised me more — I wanted to actually understand a relational database properly. I'd built a handful of projects on MongoDB, and I realized I'd never really had to think hard about schema design, foreign keys, or joins. MongoDB lets you get away with a lot of "figure it out later" thinking. I wanted to know what I was missing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The parts that messed with my head
&lt;/h2&gt;

&lt;p&gt;Coming from Mongoose, Eloquent felt oddly strict at first. In Mongoose, your schema is basically a suggestion:&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="c1"&gt;// Mongoose — schema is more of a guideline&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;productSchema&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;mongoose&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Schema&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;price&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="c1"&gt;// add whatever, whenever&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Laravel, the database is the source of truth, and migrations force you to commit to a structure before you write a line of app logic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Laravel migration — schema is law&lt;/span&gt;
&lt;span class="nc"&gt;Schema&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'products'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Blueprint&lt;/span&gt; &lt;span class="nv"&gt;$table&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$table&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$table&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'name'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nv"&gt;$table&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;decimal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'price'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&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="nv"&gt;$table&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;foreignId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'category_id'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;constrained&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nv"&gt;$table&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;timestamps&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That &lt;code&gt;foreignId()-&amp;gt;constrained()&lt;/code&gt; line is such a small thing, but it represents a mindset shift I didn't expect. In MongoDB, "relationships" are usually just an ID you remember to populate correctly in your app code. In PostgreSQL, the database itself refuses to let you insert a product with a category that doesn't exist. The first time a constraint error caught a bug I would've silently shipped in MERN, I actually said "huh" out loud at my desk.&lt;/p&gt;

&lt;p&gt;Artisan took some getting used to too. &lt;code&gt;php artisan make:model Product -m&lt;/code&gt; scaffolds a model and migration in one command, and there's a generator for basically everything — controllers, requests, seeders, jobs. Coming from hand-rolling most of my Express boilerplate, it felt like cheating at first. Now I just think of it as Laravel handling the parts of backend dev that were never interesting anyway.&lt;/p&gt;

&lt;p&gt;Blade was the smallest adjustment, honestly, mostly because I'd already done enough server-rendered work to not be precious about JSX. It's just PHP mixed into HTML with some sugar on top — &lt;code&gt;@if&lt;/code&gt;, &lt;code&gt;@foreach&lt;/code&gt;, component includes. Nothing revolutionary, but nothing to fight either.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'm not giving up
&lt;/h2&gt;

&lt;p&gt;I want to be clear this isn't a "MERN was a phase" post. I'm still building with React and Node, and most of what I've shipped so far leans on that stack — a machine-learning-backed gold price predictor, a peer-to-peer file sharing tool built on WebRTC, an IoT drainage monitoring setup running on an ESP32 feeding into Firebase. None of that goes away.&lt;/p&gt;

&lt;p&gt;What's changed is that I stopped treating "the stack" as a personality trait. Laravel and PostgreSQL are just more tools now, and honestly, having both a document-store mental model and a relational one makes me design better MERN apps too. I catch myself asking "should this actually be normalized?" in Mongoose schemas now, which never used to occur to me.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you're a MERN dev thinking about doing the same
&lt;/h2&gt;

&lt;p&gt;A few things that would've saved me time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Don't fight Eloquent relationships — learn &lt;code&gt;hasMany&lt;/code&gt;, &lt;code&gt;belongsTo&lt;/code&gt;, and &lt;code&gt;belongsToMany&lt;/code&gt; properly before building anything. Half of Laravel's "magic" is just these three.&lt;/li&gt;
&lt;li&gt;Migrations are version control for your schema. Treat them like git commits — small, descriptive, one change at a time.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;php artisan tinker&lt;/code&gt; is basically a Node REPL for your Laravel app. Use it constantly to test queries before wiring them into controllers.&lt;/li&gt;
&lt;li&gt;PostgreSQL's &lt;code&gt;EXPLAIN ANALYZE&lt;/code&gt; is worth learning early. Coming from Mongo, I never had to think about query performance this explicitly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where this is heading
&lt;/h2&gt;

&lt;p&gt;I'm still early — a few real projects deep, not an expert by any stretch. But I'm at the point where I'd genuinely take on Laravel or PostgreSQL work alongside MERN projects, and I'm actively looking for freelance and full-time opportunities where I can keep building across both.&lt;/p&gt;

&lt;p&gt;If you're working on something and think there's a fit, or you just want to see what I've built so far, my projects and contact info are here:&lt;/p&gt;

&lt;p&gt;🔗 Portfolio: &lt;a href="https://zahidhasantonmoy.vercel.app" rel="noopener noreferrer"&gt;https://zahidhasantonmoy.vercel.app&lt;/a&gt;&lt;br&gt;
🔗 GitHub: &lt;a href="https://github.com/zahidhasantonmoy" rel="noopener noreferrer"&gt;https://github.com/zahidhasantonmoy&lt;/a&gt;&lt;/p&gt;

</description>
      <category>backend</category>
      <category>laravel</category>
      <category>php</category>
      <category>postgres</category>
    </item>
    <item>
      <title>From Web Apps to Blinking LEDs: Why Every Software Developer Should Try Hardware 🛠️</title>
      <dc:creator>Zahid Hasan Tonmoy</dc:creator>
      <pubDate>Mon, 24 Aug 2026 08:55:30 +0000</pubDate>
      <link>https://dev.to/zahidhasantonmoy/from-web-apps-to-blinking-leds-why-every-software-developer-should-try-hardware-5h1g</link>
      <guid>https://dev.to/zahidhasantonmoy/from-web-apps-to-blinking-leds-why-every-software-developer-should-try-hardware-5h1g</guid>
      <description>&lt;p&gt;Hey everyone! 👋 Zahid here.&lt;/p&gt;

&lt;p&gt;Let us be honest—staring at code all day can become a little tiring. Most of my time is spent in the software world: writing Python tweaking a Flutter UI deploying databases on Supabase or making sure my cloud hosting on Render runs smoothly. It is fun. It is all... Virtual.&lt;/p&gt;

&lt;p&gt;Recently I decided to step from purely software projects and started tinkering with hardware. I grabbed an ESP32, some sensors and just began playing around.. Honestly? It completely changed my view on programming.&lt;/p&gt;

&lt;p&gt;Here’s why I think every software developer should try messing around with hardware at once:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The "Physical" Reward 💡&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When you build a web app a successful compilation means a tick on your terminal or a webpage loading correctly.. When you write a few lines of code and a physical LED lights up or a robotic arm moves on your desk? That dopamine hit is just built different! It makes your code feel alive.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It Makes You Appreciate the Cloud More ☁️&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Working with microcontrollers that have limited memory makes you realize how spoiled we are with cloud infrastructure. Suddenly every byte of data matters. It teaches you to write more efficient code—which ultimately makes you a better software developer.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Ultimate Playground for AI 🤖&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is the part I'm most excited about. I have been exploring No‑Code AI agents and machine learning lately. Imagine combining an AI model with a sensor—like a smart camera that actually reacts to its environment in real time. Hardware is the bridge that brings AI out of the browser and into the world.&lt;/p&gt;

&lt;p&gt;The Takeaway&lt;/p&gt;

&lt;p&gt;You do not need to be an engineer to start. If you know a bit of Python you are already 90%. Grab a microcontroller a few jumper wires and build something useless but fun.&lt;/p&gt;

&lt;p&gt;Have any of you made the jump, from software to hardware?. Have you built any cool IoT projects lately? Let us chat in the comments! 👇&lt;/p&gt;

&lt;p&gt;Let us Connect! 🚀 If you want to talk about tech, AI or see what I am building feel free to reach out. I would love to connect!&lt;/p&gt;

&lt;p&gt;🌐 Portfolio: zahidhasantonmoy.vercel.app&lt;/p&gt;

&lt;p&gt;💼 LinkedIn: linkedin.com/in/zahidhasantonmoy&lt;/p&gt;

&lt;p&gt;🐦 X (Twitter): @zahidhasan_bd&lt;/p&gt;

&lt;p&gt;📘 Facebook: zahidhasantonmoybd&lt;/p&gt;

</description>
      <category>hardware</category>
      <category>iot</category>
      <category>programming</category>
      <category>software</category>
    </item>
  </channel>
</rss>
