<?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: Ez Eldeen Mushtaha - @ezmu</title>
    <description>The latest articles on DEV Community by Ez Eldeen Mushtaha - @ezmu (@ezmu).</description>
    <link>https://dev.to/ezmu</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%2F3940345%2F9a00550c-a18a-4961-90f6-0f89da7fc736.png</url>
      <title>DEV Community: Ez Eldeen Mushtaha - @ezmu</title>
      <link>https://dev.to/ezmu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ezmu"/>
    <language>en</language>
    <item>
      <title>🌙 Why I Built MidKnight</title>
      <dc:creator>Ez Eldeen Mushtaha - @ezmu</dc:creator>
      <pubDate>Sun, 12 Jul 2026 19:15:51 +0000</pubDate>
      <link>https://dev.to/ezmu/why-i-built-midknight-4d7c</link>
      <guid>https://dev.to/ezmu/why-i-built-midknight-4d7c</guid>
      <description>&lt;h2&gt;
  
  
  💭 &lt;strong&gt;Before We Start&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This isn't a technical article. It's not an explanation of algorithms, nor a showcase of my programming abilities. This is a conversation between two people who are suffering from the same thing.&lt;/p&gt;

&lt;p&gt;I'm not here to tell you I'm smarter than you, or that my language is better than yours, or that my framework surpasses yours. I'm here because I'm tired, and I think you're tired too.&lt;/p&gt;




&lt;h2&gt;
  
  
  😩 &lt;strong&gt;The Confession&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;You know what really bothers me?&lt;/p&gt;

&lt;p&gt;That I have a machine capable of doing the impossible—theoretically.&lt;/p&gt;

&lt;p&gt;Yet, when I want to run a simple web application—something that does what websites did twenty years ago—the machine stops. It breathes heavily. It complains.&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because I told it to pass through seven layers of software before reaching anything useful. Because I loaded it with two frameworks, four databases, twelve libraries, twenty-seven extensions, and fifty-three configuration files.&lt;/p&gt;

&lt;p&gt;Because the industry convinced us this is evolution. That bloat is maturity. That adding another layer is the solution.&lt;/p&gt;

&lt;p&gt;And we all bought it.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔄 &lt;strong&gt;The Shift&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;At some point, I got tired. Not of programming—I'll never stop programming. But of the feeling that I'm doing extra work, using extra resources, adding extra complexity, just to achieve what my programming ancestors did with less than a tenth of what I have.&lt;/p&gt;

&lt;p&gt;Because I've lived through the evolution of software, development environments, and hardware over 20 years. I've seen everything with my own eyes. I can't claim ignorance.&lt;/p&gt;

&lt;p&gt;So, I started asking a different question.&lt;/p&gt;

&lt;p&gt;Not: "What's the best library for this?"&lt;/p&gt;

&lt;p&gt;But: "Do I need a library at all?"&lt;/p&gt;

&lt;p&gt;Not: "What's the fastest framework?"&lt;/p&gt;

&lt;p&gt;But: "Do I need a framework?"&lt;/p&gt;

&lt;p&gt;And the answer, most of the time, was &lt;strong&gt;no&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏗️ &lt;strong&gt;What I Learned&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;That the biggest obstacle to efficient software isn't the processor, memory, or disk.&lt;/p&gt;

&lt;p&gt;It's &lt;strong&gt;the complexity we add ourselves&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Every library we add is a potential point of failure. Every framework we adopt is an extra layer between us and the machine. Every dependency we add is something else that can conflict, break, or slow performance.&lt;/p&gt;

&lt;p&gt;And we've reached a point where &lt;strong&gt;solving the problem is more complex than the problem itself&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ &lt;strong&gt;What I Did&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I decided to build something different.&lt;/p&gt;

&lt;p&gt;Not better. Not stronger. Just &lt;strong&gt;different&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Something that depends on nothing. Something that asks no one for permission. Something that stands at the gate, deciding whether a request is worth waking your entire application for, and if not, handles it itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;80 kilobytes&lt;/strong&gt; of compiled C code. No dependency hell, no &lt;code&gt;node_modules&lt;/code&gt;, no &lt;code&gt;composer.lock&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Something that protects your app from attacks, caches what's static, and searches through data—all without asking you to install two frameworks, a database, and a monitoring tool.&lt;/p&gt;




&lt;h2&gt;
  
  
  😌 &lt;strong&gt;What I Felt&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;When I saw it work for the first time, I didn't feel pride. I felt relief.&lt;/p&gt;

&lt;p&gt;Relief that there's another way. That we're not forced to continue in this spiral of bloat. That the machine I bought twelve years ago is still capable of amazing things, if I stop telling it that it's helpless.&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 &lt;strong&gt;The Real Numbers&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Because I know some people need numbers:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Requests per second&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;6,892&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Success rate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data transfer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;321 MB/s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Binary size&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;80 KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dependencies&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Device age&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;12 years&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;These numbers aren't for boasting. They're just to confirm what we all feel: that hardware isn't the problem.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🗣️ &lt;strong&gt;Why I'm Telling You This&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I'm not here to convince you to use what I built.&lt;/p&gt;

&lt;p&gt;I'm here to say: &lt;strong&gt;You're not crazy&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you feel things have become more complex than they should be, you're right.&lt;/p&gt;

&lt;p&gt;If you feel you spend more time managing dependencies, resolving conflicts, and updating packages than writing actual code, you're not alone.&lt;/p&gt;

&lt;p&gt;If you've added Redis, added Elasticsearch, used a CDN, implemented multiple caching mechanisms, changed databases, and your system still crashes at the first 100 concurrent requests—know that the problem isn't in your tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The problem is in the structure itself.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You're building on a shaky foundation, then you're surprised when the building collapses.&lt;/p&gt;

&lt;p&gt;You've done what you had to do. You followed best practices. You used the recommended tools. But from the start, the structure was wrong.&lt;/p&gt;

&lt;p&gt;And your systems still crash.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 &lt;strong&gt;The Philosophy&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What We Do Differently:
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Traditional&lt;/th&gt;
&lt;th&gt;MidKnight&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dependencies&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hundreds of packages&lt;/td&gt;
&lt;td&gt;0 dependencies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Size&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Megabytes&lt;/td&gt;
&lt;td&gt;80 kilobytes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Language&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Interpreted/Managed&lt;/td&gt;
&lt;td&gt;C (Compiled)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Model&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Request → App → Database&lt;/td&gt;
&lt;td&gt;Request → Smart Proxy → (Cache or App)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Memory&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Repeated copying&lt;/td&gt;
&lt;td&gt;Zero-Copy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Concurrency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Separate processes&lt;/td&gt;
&lt;td&gt;Lightweight threads&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  What We Don't Do:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;❌ We don't depend on Node.js, Python, or PHP &lt;/li&gt;
&lt;li&gt;❌ We don't depend on Nginx, Apache, or Varnish&lt;/li&gt;
&lt;li&gt;❌ We don't depend on Redis, Memcached, or Elasticsearch&lt;/li&gt;
&lt;li&gt;❌ We don't use Java, Go, or Rust&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;(we work in front of them)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We build from scratch. No middlemen. No dependencies.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────────────────────┐
│                         COMPLETE DATA FLOW                                 │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  Client Request                                                             │
│       ↓                                                                     │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │                     MIDKNIGHT GATEKEEPER                           │   │
│  │  1. 🛡️ DDoS Check                                         │   │
│  │  2. 💾 Cache Lookup                                 │   │
│  │  3. 🧠 Logic Engine                                      │   │
│  │  4. 🔍 Full-Text Search  if needed                        │   │
│  │  5. 🔗 Graph Query  if needed                             │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│       ↓                                                                     │
│       ├── 💾 CACHE HIT → Response (0.1ms)                                  │
│       │                                                                     │
│       └── 📦 CACHE MISS → Backend (50-200ms)                               │
│                              ↓                                              │
│                      ┌─────────────────────┐                               │
│                      │   YOUR APPLICATION   │                               │
│                      │   (Laravel, etc)     │                               │
│                      └─────────────────────┘                               │
│                              ↓                                              │
│                         📦 Response                                         │
│                              ↓                                              │
│                      💾 Store in Cache                                      │
│                              ↓                                              │
│                      ⚡ Response (0.1ms next time)                          │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🌙 &lt;strong&gt;MidKnight&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The knight that stands at the gate. Not just a tool that stores data, but a guardian that protects your application, quietly, efficiently, without noise. It watches every request before it touches your app, doesn't allow attacks to pass, and doesn't allow repeated requests to wake your app unnecessarily.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MidKnight is not just a server. It's a statement.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A statement that software can be fast without being bloated, powerful without being complex, efficient without being fragile.&lt;/p&gt;




&lt;h2&gt;
  
  
  📬 &lt;strong&gt;If You're Interested&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;LinkedIn:&lt;/strong&gt; &lt;a href="https://www.linkedin.com/in/wael-almadhoun/" rel="noopener noreferrer"&gt;Wael&lt;/a&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; MidKnight is currently in &lt;strong&gt;Beta&lt;/strong&gt;. We're working on stabilizing the final features and improving performance. The &lt;strong&gt;licensing model&lt;/strong&gt; and &lt;strong&gt;official release&lt;/strong&gt; details will be announced soon. Stay tuned for updates.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;My LinkedIn:&lt;/strong&gt; &lt;a href="https://www.linkedin.com/in/ezmush/" rel="noopener noreferrer"&gt;EZ-Eldeen&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;#MidKnight #Software #Simplicity #Performance #Development&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>softwareengineering</category>
      <category>performance</category>
      <category>programming</category>
    </item>
    <item>
      <title>The Performance Illusion</title>
      <dc:creator>Ez Eldeen Mushtaha - @ezmu</dc:creator>
      <pubDate>Mon, 06 Jul 2026 11:45:30 +0000</pubDate>
      <link>https://dev.to/ezmu/the-performance-illusion-m9i</link>
      <guid>https://dev.to/ezmu/the-performance-illusion-m9i</guid>
      <description>&lt;h2&gt;
  
  
  Why Web Systems Collapse Under Real Load — and Why We Keep Believing the Benchmarks
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“In the lab, PHP served 12 million operations per second. In production, it barely reaches 500 requests per second.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is not an exaggeration. It is the difference between the &lt;strong&gt;controlled environment&lt;/strong&gt; and the &lt;strong&gt;real world&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Every week, we are fed magical numbers: &lt;em&gt;“Redis does 100,000 ops/sec”&lt;/em&gt;, &lt;em&gt;“Node.js handles thousands of concurrent connections”&lt;/em&gt;, &lt;em&gt;“Laravel is fast and secure.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But when &lt;strong&gt;real users&lt;/strong&gt; arrive, when &lt;strong&gt;network latency&lt;/strong&gt; kicks in, when &lt;strong&gt;threads&lt;/strong&gt; start fighting for resources — those numbers evaporate like a bad dream.&lt;/p&gt;

&lt;p&gt;The question is not &lt;em&gt;“which language is fastest?”&lt;/em&gt;&lt;br&gt;&lt;br&gt;
The real question is: &lt;strong&gt;“Why do we spend 90% of CPU time on preparation, and only 10% on execution?”&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  I. The Bootstrapping Tax
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Rebuilding the house for every visitor
&lt;/h3&gt;

&lt;p&gt;Imagine owning a house. Every time a visitor arrives, you demolish the entire building, reconstruct it from scratch, and then open the door. After they leave, you demolish it again.&lt;/p&gt;

&lt;p&gt;This is exactly what modern frameworks do on every single request.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Laravel / Rails&lt;/strong&gt; — loads 50+ Service Providers, builds a DI container, registers routes, initialises connections.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spring Boot&lt;/strong&gt; — loads context, scans annotations, builds beans, initialises data sources.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Django&lt;/strong&gt; — loads apps, initialises middleware, builds the ORM, prepares templates.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The result:&lt;/strong&gt; 70–90% of CPU time is spent on &lt;strong&gt;preparation&lt;/strong&gt;, not on &lt;strong&gt;execution&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Why do we design a system that consumes 90% of its resources on preparation and only 10% on execution?”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  II. Threads — The Silent Killer
&lt;/h2&gt;
&lt;h3&gt;
  
  
  The thread that doesn’t work, but waits
&lt;/h3&gt;

&lt;p&gt;If Bootstrapping is the &lt;strong&gt;wound&lt;/strong&gt;, then &lt;strong&gt;Threads&lt;/strong&gt; are what make that wound bleed to death.&lt;/p&gt;

&lt;p&gt;Under load, threads are &lt;strong&gt;held hostage&lt;/strong&gt;: they wait for I/O, they wait for locks, they wait for connection pools — they spend most of their life doing &lt;strong&gt;nothing&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Nginx/Apache&lt;/strong&gt; — assigns a thread/process per request. Under high load, the thread pool exhausts, requests pile up.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PHP-FPM&lt;/strong&gt; — fixed number of children. When requests arrive faster than children can process, they queue and then get refused.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laravel Bootstrapping&lt;/strong&gt; — happens inside the thread, preventing it from handling other requests.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redis (Network I/O)&lt;/strong&gt; — the thread blocks, waiting for Redis. &lt;strong&gt;Blocking I/O&lt;/strong&gt; is the executioner.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result: a slow, painful cascade of accumulation, contention, and collapse.&lt;/p&gt;
&lt;h3&gt;
  
  
  The deadly embrace: Threads + Connection Pools
&lt;/h3&gt;

&lt;p&gt;Imagine: &lt;strong&gt;10 Redis connections&lt;/strong&gt;, &lt;strong&gt;50 PHP-FPM children&lt;/strong&gt;, and &lt;strong&gt;100 concurrent requests&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;40 children grab the 10 connections and wait for Redis.
&lt;/li&gt;
&lt;li&gt;10 children wait for a free connection (blocking).
&lt;/li&gt;
&lt;li&gt;New requests pile up in the queue.
&lt;/li&gt;
&lt;li&gt;The system enters a &lt;strong&gt;deadlock spiral&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Threads are not bad. But we use them badly. We make them wait instead of work.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  III. Protocol Overhead
&lt;/h2&gt;
&lt;h3&gt;
  
  
  When protocols become the enemy of performance
&lt;/h3&gt;

&lt;p&gt;HTTP was designed in the 1990s to serve HTML pages. Today we use it for JSON, WebSockets, streaming, and real-time data. Each layer we add, we pay for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;TCP Handshake&lt;/strong&gt; — 1–3 ms (or more on slow networks)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TLS Handshake&lt;/strong&gt; — 2–5 ms (HTTPS)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTTP Headers&lt;/strong&gt; — 0.5–2 ms
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Request Parsing&lt;/strong&gt; — 0.5–1 ms
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Response Serialization&lt;/strong&gt; — 1–3 ms
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  The Stateless trap
&lt;/h3&gt;

&lt;p&gt;In the web, every request is a &lt;strong&gt;fresh start&lt;/strong&gt;. No shared context between requests — even from the same user. This makes scaling easy, but performance &lt;strong&gt;abysmal&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“We re-introduce the user to the system 100 times per session, as if we’ve never met them before.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  IV. Why Current Solutions Fail
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Serverless — shifting cost, not solving it
&lt;/h3&gt;

&lt;p&gt;Serverless does not reduce bootstrapping. It hides it behind a “pay-per-use” curtain. And on &lt;strong&gt;cold starts&lt;/strong&gt;, the nightmare returns — often worse, with added latency of several seconds.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Microservices — network hell
&lt;/h3&gt;

&lt;p&gt;Instead of one codebase, you now have &lt;strong&gt;20 services&lt;/strong&gt; communicating over the network. Each request becomes a chain of network calls.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Auth service → network call
&lt;/li&gt;
&lt;li&gt;Users service → network call
&lt;/li&gt;
&lt;li&gt;Orders service → network call
&lt;/li&gt;
&lt;li&gt;Notifications service → network call
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; total latency = sum of all network RTTs. Threads wait across services, multiplying the deadlock risk.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Persistent systems (RoadRunner, Swoole) — memory nightmares
&lt;/h3&gt;

&lt;p&gt;They solve bootstrapping, but introduce &lt;strong&gt;memory management hell&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Memory leaks accumulate fatally.
&lt;/li&gt;
&lt;li&gt;Code reload needs careful orchestration.
&lt;/li&gt;
&lt;li&gt;State management across threads requires locks, increasing contention.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Microservices are not a solution to performance. They are a transfer of the problem from one codebase to an entire network.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  V. The Performance Decay Graph
&lt;/h2&gt;

&lt;p&gt;Before we look at the numbers, picture this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        OPERATIONS PER SECOND
        ──────────────────────►
  10M  │  ████  (Raw Sockets)
       │  ████
   1M  │  ███   (+PHP)
       │  ███
 100K  │  ██    (+HTTP)
       │  ██
  10K  │  █     (+PHP-FPM)
       │  █
   1K  │  ░     (+Laravel Boot)
       │  ░
  500  │  ░     (+Redis/ORM)
       └─────────────────────►
        C1   C2   C3   C4   C5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Each step to the right is a new layer of “convenience”.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Each step upward is lost performance.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is the graveyard of modern web engineering.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Latency per Layer (ms)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Latency (ms)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0. Raw Sockets (C)&lt;/td&gt;
&lt;td&gt;0.0001&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1. + PHP (Sockets)&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. + HTTP (Nginx)&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. + PHP-FPM&lt;/td&gt;
&lt;td&gt;5.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. + Laravel Boot&lt;/td&gt;
&lt;td&gt;20.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. + Redis (Network)&lt;/td&gt;
&lt;td&gt;25.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. + Eloquent (ORM)&lt;/td&gt;
&lt;td&gt;50.0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Thread Multiplication Factor (real vs theoretical)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Threads (real)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0. Raw Sockets (C)&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1. + PHP (Sockets)&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. + HTTP (Nginx)&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. + PHP-FPM&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. + Laravel Boot&lt;/td&gt;
&lt;td&gt;192&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. + Redis (Network)&lt;/td&gt;
&lt;td&gt;384&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. + Eloquent (ORM)&lt;/td&gt;
&lt;td&gt;768&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Throughput Collapse (requests/sec)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Throughput (req/s)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0. Raw Sockets (C)&lt;/td&gt;
&lt;td&gt;10,000,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1. + PHP (Sockets)&lt;/td&gt;
&lt;td&gt;200,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. + HTTP (Nginx)&lt;/td&gt;
&lt;td&gt;50,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. + PHP-FPM&lt;/td&gt;
&lt;td&gt;10,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. + Laravel Boot&lt;/td&gt;
&lt;td&gt;2,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. + Redis (Network)&lt;/td&gt;
&lt;td&gt;1,500&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. + Eloquent (ORM)&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Interpretation:&lt;/strong&gt; From 10 million ops/sec at the bare metal down to ~500 requests/sec with Laravel + ORM + Redis.&lt;br&gt;&lt;br&gt;
Each layer adds latency, consumes threads, and collapses throughput.&lt;/p&gt;




&lt;h2&gt;
  
  
  VI. Towards a New Engineering — Principles Only
&lt;/h2&gt;

&lt;p&gt;All current solutions try to &lt;strong&gt;improve&lt;/strong&gt; the existing stack. But the stack itself is the problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core principles for a different path
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Minimise Bootstrapping&lt;/strong&gt; — load code and resources once. Reuse context across requests.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eliminate Blocking I/O&lt;/strong&gt; — prefer non-blocking I/O. Reduce network dependency for data access.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manage threads intelligently&lt;/strong&gt; — reduce contention. Use atomic operations over locks.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Locality&lt;/strong&gt; — bring compute to data, not data to compute. Zero-copy where possible.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stateless for scale&lt;/strong&gt; — but be aware of the trade-offs.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“The solution is not to make the language faster. It is to change how we access data. Not to improve tools, but to redesign the system.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Conclusion: The Coming Battle
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“If bootstrapping is the number one enemy of performance, why do we still rebuild the house for every visitor?”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We stand at a crossroads:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Path one:&lt;/strong&gt; Keep buying more servers to compensate for bloated code.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Path two:&lt;/strong&gt; Redesign the way we access data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The coming battle is not between programming languages. It is between &lt;strong&gt;deliberate engineering&lt;/strong&gt; and &lt;strong&gt;blind assembly&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“We buy servers with 32 cores and 64 GB RAM, yet we use them as if they were machines from the 1990s. Not because the CPU is slow, but because we make threads wait. We wait for bootstrapping. We wait for the network. We wait for connections. The thread does not work. It waits. And in the world of the web, waiting is death.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Principles alone are not enough to build a system. But they are enough to change how you think.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  About the author
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Ez Eldeen A. Mushtaha&lt;/strong&gt; deconstructs dogmatic models, cosmological dogmas, and messy code. He believes that &lt;strong&gt;real engineering&lt;/strong&gt; begins when you stop believing marketed numbers and start measuring reality.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@3z.eldeen" rel="noopener noreferrer"&gt;Medium&lt;/a&gt; — all rights reserved.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>softwareengineering</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>When Did We Stop Laughing at Java? (And Why We Should Be Crying Instead)</title>
      <dc:creator>Ez Eldeen Mushtaha - @ezmu</dc:creator>
      <pubDate>Sun, 31 May 2026 20:07:57 +0000</pubDate>
      <link>https://dev.to/ezmu/when-did-we-stop-laughing-at-java-and-why-we-should-be-crying-instead-3j26</link>
      <guid>https://dev.to/ezmu/when-did-we-stop-laughing-at-java-and-why-we-should-be-crying-instead-3j26</guid>
      <description>&lt;p&gt;Back in 2006, the tech world had a favorite punching bag: &lt;strong&gt;Java&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We joked about its sluggishness, its memory-hungry JVM, and its "Write Once, Run Anywhere" slogan that felt more like "Write Once, Debug Everywhere." Java wasn’t a joke because it was bad—it was a joke because it was a "Black Box." It was a massive, opaque monolith that ate RAM for breakfast and left developers guessing what was happening under the hood.&lt;/p&gt;

&lt;h3&gt;
  
  
  So, what happened?
&lt;/h3&gt;

&lt;p&gt;Sun Microsystems did the unthinkable: they tore down the temple. They opened the source, invited the world to look inside, and turned a "Black Box" into an engineering laboratory. The algorithms were laid bare, the memory leaks were exposed, and the community—instead of just laughing—started fixing. The "joke" died because transparency made it impossible to hide incompetence.&lt;/p&gt;

&lt;h3&gt;
  
  
  But here is the dark irony of 2026:
&lt;/h3&gt;

&lt;p&gt;We stopped laughing at Java, but we’ve built something far worse. We have replaced the "Java Monolith" with a "Dependency Hell" of our own making.&lt;/p&gt;

&lt;p&gt;Today, we aren't building software; we are building &lt;strong&gt;fragile towers of dependencies&lt;/strong&gt; held together by "hope" and "server-side-caching."&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;People ask me why I still touch C and C++. It’s simple: I enjoy the silence of a system that does exactly what I tell it to do, without needing a "wrapper," a "middleware," or a "dependency-injection-container-manager-pro-max" to decide which variable goes where.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We have fallen in love with "Layering." We mask our inability to manage hardware resources by adding three more layers of abstraction. We call it "Scalable Architecture," but in reality, it’s just an expensive way to burn CPU cycles on useless boilerplate code. We have created a new generation of "Black Boxes"—only this time, they aren't even optimized. They are just bloated.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Solution?
&lt;/h3&gt;

&lt;p&gt;It is time to stop the madness.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Back to Basics:&lt;/strong&gt; Software is meant to run on hardware, not "float" on top of a mess of third-party dependencies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If we want to stop being the punchline of the next decade's tech jokes, we need to stop treating our systems like magic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stop layering. Fix your engines.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Measure First&lt;/strong&gt;: If your code is slow, stop adding layers. Find the bottleneck. If you don't know where it is, you aren't an engineer; you're just a gambler. If you are looking for a deep dive into the philosophy of modern software development and the "Circles" we currently find ourselves trapped in, I have detailed this in my manifesto, &lt;a href="https://medium.com/@3z.eldeen/a-programmers-inferno-f90302a1ceea" rel="noopener noreferrer"&gt;A Programmer’s Inferno&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tear Down the Temple&lt;/strong&gt;: Open your own code. If you can't explain how a function interacts with the memory, you shouldn't be using that framework in a production environment. &lt;br&gt;
For those working within the PHP ecosystem, I have compiled my architectural notes and performance strategies in &lt;a href="https://medium.com/@3z.eldeen/the-performance-bible-for-laravel-02ef4cd4f6ee" rel="noopener noreferrer"&gt;The Performance Bible for Laravel&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>softwaredevelopment</category>
      <category>java</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Stop Blaming PHP: Introducing The Performance Bible for Laravel</title>
      <dc:creator>Ez Eldeen Mushtaha - @ezmu</dc:creator>
      <pubDate>Mon, 25 May 2026 21:39:40 +0000</pubDate>
      <link>https://dev.to/ezmu/stop-blaming-php-introducing-the-performance-bible-for-laravel-44eb</link>
      <guid>https://dev.to/ezmu/stop-blaming-php-introducing-the-performance-bible-for-laravel-44eb</guid>
      <description>&lt;p&gt;"PHP is slow."&lt;br&gt;
"Laravel can't scale."&lt;/p&gt;

&lt;p&gt;We hear these tired arguments every day. Developers love blaming the tool—the "car"—instead of the design—the "road."&lt;/p&gt;

&lt;p&gt;It’s easy to throw more RAM at a server, but adding more hardware is often just a tax you pay for inefficient code and poor architectural decisions.&lt;/p&gt;

&lt;p&gt;After years of architecting high-scale systems, I realized that many Laravel developers are missing a foundational understanding of &lt;em&gt;why&lt;/em&gt; certain practices are slow. This led me to open-source &lt;strong&gt;The Performance Bible for Laravel&lt;/strong&gt;, a comprehensive 30-topic guide designed to take you from writing basic code to engineering resilient, high-performance systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Philosophical Foundation: Mathematics Always Beats Physics
&lt;/h2&gt;

&lt;p&gt;Before we optimized a single line of Laravel code, we established a core principle in &lt;strong&gt;Volume I: Philosophical Foundations&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;The ultimate bottleneck is rarely the programming language itself; it’s the algorithm complexity. Mathematics always defeats physics.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Golden Law of Performance
&lt;/h3&gt;

&lt;p&gt;The image above visualizes our foundational performance formula:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxim2xve4e2avp4p4bxxr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxim2xve4e2avp4p4bxxr.png" alt="performance formula" width="699" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Think of it this way:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Algorithm Efficiency:&lt;/strong&gt; Is your road a winding, muddy trail ($O(n^2)$) or a 10-lane highway ($O(1)$)?&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Language Overhead:&lt;/strong&gt; Is your vehicle a bicycle (High Overhead/Interpreter) or a jet (Low Overhead/Compiled/APCu)?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don't need a faster vehicle (Go/Rust) if you are driving on a muddy road (poor SQL indexing/N+1 queries). Mathematics (the highway) will make the bicycle (PHP) arrive faster than the jet (C++) on the muddy road.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Problem Does This Solve?
&lt;/h2&gt;

&lt;p&gt;This Bible is for you if you have ever:&lt;/p&gt;

&lt;p&gt;❌ Deployed an app that worked perfectly in development but &lt;strong&gt;crashed under production load&lt;/strong&gt;.&lt;br&gt;
❌ Wondered why a simple &lt;code&gt;User::all()&lt;/code&gt; brings down a server with &lt;strong&gt;50,000 users&lt;/strong&gt;.&lt;br&gt;
❌ Spent &lt;strong&gt;3 AM debugging an “N+1 query”&lt;/strong&gt; you didn’t know existed.&lt;br&gt;
❌ Been told to &lt;strong&gt;“just add more servers”&lt;/strong&gt; when the real problem was a missing database index.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Sneak Peek Inside
&lt;/h2&gt;

&lt;p&gt;The guide covers 30 crucial topics across three volumes (Volume I, II, and IV), including over 200 code examples. Here are a few high-impact gems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  🚀 &lt;strong&gt;Route Caching (Tuning Kit #02):&lt;/strong&gt; Learn how &lt;code&gt;php artisan route:cache&lt;/code&gt; cuts 35ms down to 2ms per request. Free, instant performance.&lt;/li&gt;
&lt;li&gt;  🗑️ &lt;strong&gt;Queue Serialization Trap (Tuning Kit #06):&lt;/strong&gt; Stop dispatching full Eloquent models (&lt;code&gt;$user&lt;/code&gt;) to your queue. You're bloating your Redis instance and risking stale data. Dispatch the ID instead.&lt;/li&gt;
&lt;li&gt;  💾 &lt;strong&gt;Hydration Hell (Tuning Kit #05):&lt;/strong&gt; Learn why Eloquent models consume 5-10x more memory than raw database arrays (&lt;code&gt;DB::table()&lt;/code&gt;) and when to switch.&lt;/li&gt;
&lt;li&gt;  🏗️ &lt;strong&gt;Read/Write Splitting (Tuning Kit #10):&lt;/strong&gt; Architecturally double your database capacity using Master for writes and Replicas for reads.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🚨 The "10 Production Disasters" Checklist
&lt;/h3&gt;

&lt;p&gt;In &lt;strong&gt;Topic 15&lt;/strong&gt;, I outline the most common architectural mistakes that cause production failures. Make sure your system isn't doing them:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Missing DB Indexes:&lt;/strong&gt; A death sentence on large tables. (5s search vs. 0.001s).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;&lt;code&gt;DB::enableQueryLog()&lt;/code&gt; in Production:&lt;/strong&gt; Guaranteed OOM (Out Of Memory) crash after a few hours of load.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;&lt;code&gt;env()&lt;/code&gt; after &lt;code&gt;config:cache&lt;/code&gt;&lt;/strong&gt;: All environment variables will return &lt;code&gt;null&lt;/code&gt;, causing database connection failures.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Logging &lt;code&gt;Log::info()&lt;/code&gt; inside loops&lt;/strong&gt;: 10,000 logs in a loop is 10,000 unnecessary, expensive I/O operations. Batch them instead.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Access the Full Bible
&lt;/h2&gt;

&lt;p&gt;The full 30-topic text is completely free, open-source, and deployment-ready.&lt;/p&gt;

&lt;p&gt;Start engineering faster Laravel systems today:&lt;/p&gt;

&lt;h3&gt;
  
  
  👉 Read the Bible Here: &lt;a href="https://ezmu.github.io/performance-bible/" rel="noopener noreferrer"&gt;https://ezmu.github.io/performance-bible/&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Let's stop blaming the tools and start designing better roads.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;About the Author:&lt;/strong&gt;&lt;br&gt;
I am Ez-Eldeen Mushtaha, a Software &amp;amp; Systems Architect based in Gaza, Palestine. You can connect with me on &lt;a href="https://www.linkedin.com/in/ezmu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; &lt;br&gt;
and find more of my work on &lt;a href="https://github.com/ezmu" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and &lt;a href="https://medium.com/@3z.eldeen" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>php</category>
      <category>laravel</category>
      <category>softwareengineering</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>A Programmer’s Inferno — Circle Five:The Psychology of Distraction</title>
      <dc:creator>Ez Eldeen Mushtaha - @ezmu</dc:creator>
      <pubDate>Tue, 19 May 2026 20:34:40 +0000</pubDate>
      <link>https://dev.to/ezmu/a-programmers-inferno-circle-fivethe-psychology-of-distraction-1jn1</link>
      <guid>https://dev.to/ezmu/a-programmers-inferno-circle-fivethe-psychology-of-distraction-1jn1</guid>
      <description>&lt;p&gt;14 years ago, I refused to build a fake progress bar for a Java Swing app.&lt;/p&gt;

&lt;p&gt;Or even just count the downloaded update files and call that "progress."&lt;/p&gt;

&lt;p&gt;It would have been easier. Faster. Less code.&lt;/p&gt;

&lt;p&gt;But I didn't.&lt;/p&gt;

&lt;p&gt;Because it felt wrong to deceive the user.&lt;/p&gt;

&lt;p&gt;Today?&lt;/p&gt;

&lt;p&gt;Skeleton loaders. Shimmer effects. Fake spinners.&lt;/p&gt;

&lt;p&gt;All "best practices." All "UX improvements."&lt;/p&gt;

&lt;p&gt;What I rejected for ethical reasons is now taught to beginners as "how to do it right."&lt;/p&gt;

&lt;p&gt;This isn't progress. This is rock bottom.&lt;/p&gt;

&lt;p&gt;📖 &lt;a href="https://medium.com/p/5f7cd1aa433e" rel="noopener noreferrer"&gt;A Programmer's Inferno — Circle Five: The Psychology of Distraction&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@3z.eldeen/a-programmers-inferno-f90302a1ceea" rel="noopener noreferrer"&gt;A Programmer’s Inferno&lt;/a&gt;&lt;/p&gt;

</description>
      <category>performanceoptimization</category>
      <category>ethicsintech</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>A Programmer’s Inferno: We Didn't Notice Software Rotting—Until It Was Too Late!</title>
      <dc:creator>Ez Eldeen Mushtaha - @ezmu</dc:creator>
      <pubDate>Tue, 19 May 2026 14:01:43 +0000</pubDate>
      <link>https://dev.to/ezmu/a-programmers-inferno-we-didnt-notice-software-rotting-until-it-was-too-late-15e5</link>
      <guid>https://dev.to/ezmu/a-programmers-inferno-we-didnt-notice-software-rotting-until-it-was-too-late-15e5</guid>
      <description>&lt;p&gt;The software industry is in crisis, and we are responsible. We've traded architectural discipline for convenience, and engineering wisdom for bloat.&lt;/p&gt;

&lt;p&gt;My series, "&lt;strong&gt;A Programmer's Inferno,&lt;/strong&gt;" is a descent into the circles of hell that define modern development. Here is the catalog of the &lt;em&gt;first four circles&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Circle I: Architectural Collapse&lt;/strong&gt; – How we build massive frameworks to solve simple problems, ensuring our systems are broken from day one.&lt;br&gt;
Link: &lt;a href="https://medium.com/@3z.eldeen/a-programmers-inferno-circle-one-architectural-collapse-67272176deda" rel="noopener noreferrer"&gt;Architectural Collapse&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Circle II: Dependency Hell&lt;/strong&gt; – The culture that compels us to pull in thousands of unknown packages just to execute ten lines of code.&lt;br&gt;
Link: &lt;a href="https://medium.com/@3z.eldeen/a-programmers-inferno-circle-two-dependency-hell-50b38915ba64" rel="noopener noreferrer"&gt;Dependency Hell&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Circle III: The Docker Absurdity&lt;/strong&gt; – Masking software failures behind gigabytes of container overhead.&lt;br&gt;
Link: &lt;a href="https://medium.com/@3z.eldeen/circle-three-the-docker-absurdity-c6b63facb48f" rel="noopener noreferrer"&gt;The Docker Absurdity&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Circle IV: Cloud Conspiracy &amp;amp; Jevons Paradox&lt;/strong&gt; – Why the business model of cloud providers relies on our inefficiency.&lt;br&gt;
Link: &lt;a href="https://medium.com/@3z.eldeen/a-programmers-inferno-circle-four-cloud-conspiracy-jevons-paradox-acf8de4e4521" rel="noopener noreferrer"&gt;Cloud Conspiracy &amp;amp; Jevons Paradox&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This isn't just about slow code. It's about planetary energy consumption, digital waste, and the loss of professionalism in our craft.&lt;/p&gt;

&lt;p&gt;It's time to stop being "tool operators"—blindly assembling components we don't understand—and start being engineers again.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Circle Five: The Psychology of Distraction&lt;/em&gt; is coming next.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Which circle do you see most often in your daily work?&lt;/strong&gt; Drop your worst "bloat" story in the comments.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>softwareengineering</category>
      <category>softwaredevelopment</category>
      <category>cloudcomputing</category>
    </item>
  </channel>
</rss>
