<?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: Zied Hosni</title>
    <description>The latest articles on DEV Community by Zied Hosni (@html5ninja).</description>
    <link>https://dev.to/html5ninja</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%2F170941%2F8fa0d688-f821-4bf9-83fc-6eebaa77cbd2.jpeg</url>
      <title>DEV Community: Zied Hosni</title>
      <link>https://dev.to/html5ninja</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/html5ninja"/>
    <language>en</language>
    <item>
      <title>I Got Laid Off in February and It Exposed How Broken Tech Hiring Really Is</title>
      <dc:creator>Zied Hosni</dc:creator>
      <pubDate>Sun, 22 Mar 2026 03:37:53 +0000</pubDate>
      <link>https://dev.to/html5ninja/i-got-laid-off-in-february-and-it-exposed-how-broken-tech-hiring-really-is-2l7f</link>
      <guid>https://dev.to/html5ninja/i-got-laid-off-in-february-and-it-exposed-how-broken-tech-hiring-really-is-2l7f</guid>
      <description>&lt;p&gt;Long story short, I got laid off in February from a small startup due to budget cuts.&lt;br&gt;
As a senior developer with 20 years of experience, I had never really needed to look for a job before opportunities were always there, and recruiters used to reach out regularly.&lt;br&gt;
But this time was different.&lt;br&gt;
Things have changed. And the wake-up call was brutal.&lt;br&gt;
The system is broken.&lt;/p&gt;

&lt;h2&gt;
  
  
  Applying to jobs
&lt;/h2&gt;

&lt;p&gt;You check LinkedIn daily and start noticing a pattern.&lt;br&gt;
The same companies keep reposting the same job over and over again. You apply and nothing happens.&lt;br&gt;
The listing already has more than 100 applicants, yet somehow it shows up again the next day.&lt;br&gt;
You receive an automated email, maybe two if you are lucky. After that, silence.&lt;br&gt;
And then it hits you. They are not really hiring. They are collecting resumes.&lt;br&gt;
Pipelines. Data. Signals.&lt;/p&gt;

&lt;p&gt;At some point, you start wondering if your application is just feeding a system, maybe even training models behind the scenes.&lt;br&gt;
And here is the real shock. You are no longer evaluated as a person.&lt;br&gt;
You are reduced to a score.&lt;br&gt;
Your resume is not read. It is parsed.&lt;br&gt;
Optimized for keywords.&lt;br&gt;
Filtered by algorithms.&lt;/p&gt;

&lt;p&gt;You start feeling like you have to play the game, tweaking your CV not for humans but for machines.&lt;br&gt;
No real conversation. No human judgment.&lt;br&gt;
Just numbers. &lt;/p&gt;

&lt;h2&gt;
  
  
  The stress
&lt;/h2&gt;

&lt;p&gt;More than a month without a job. That had never happened to me before.&lt;br&gt;
I have a family to support, and the fear slowly turns into panic.&lt;br&gt;
After more than a hundred applications, I finally get three interviews.&lt;/p&gt;

&lt;p&gt;First round, screening.&lt;br&gt;
Second round, coding interview.&lt;br&gt;
Each step takes weeks. The waiting is exhausting. The stress becomes unbearable.&lt;/p&gt;

&lt;p&gt;And the questions are always the same. The same problems, the same patterns, disconnected from real-world work.&lt;br&gt;
The reality is, no one codes like this anymore without AI.&lt;/p&gt;

&lt;p&gt;You start to feel hopeless.&lt;br&gt;
How am I supposed to compete against 20-year-old candidates grinding these problems every day?&lt;/p&gt;

&lt;p&gt;Something is clearly wrong.&lt;br&gt;
This needs to change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ghost jobs
&lt;/h2&gt;

&lt;p&gt;After a while, you start noticing something even more frustrating.&lt;br&gt;
Some jobs are not real.&lt;/p&gt;

&lt;p&gt;The same positions stay open for months. They get reposted again and again, sometimes every single day, without ever being filled.&lt;/p&gt;

&lt;p&gt;These are ghost jobs.&lt;br&gt;
Companies post them to build pipelines, test the market, or create the illusion that they are growing.&lt;/p&gt;

&lt;p&gt;But for candidates, it is just noise.&lt;br&gt;
You spend time applying, writing cover letters, sometimes even preparing for roles that were never meant to be filled in the first place.&lt;br&gt;
It drains your energy. It wastes your time.&lt;br&gt;
And worst of all, it makes you question yourself.&lt;br&gt;
Was it my resume? My experience? My skills?&lt;br&gt;
When in reality, there may have never been a real opportunity at all.&lt;/p&gt;

&lt;p&gt;If you want to understand this better, take a look at Pugnion Finance’s video about ghost jobs: Watch here &lt;a href="https://www.youtube.com/watch?v=o1F7UqwIf8A" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=o1F7UqwIf8A&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Fighting Back
&lt;/h2&gt;

&lt;p&gt;I can’t fix the system. But I can reduce the stress it creates.&lt;br&gt;
The hiring process is broken, and I decided to adapt instead of fighting it blindly.&lt;br&gt;
If companies use AI to filter my CV, then I have every right to use AI to handle coding interviews.&lt;/p&gt;

&lt;p&gt;So I built my own assistant.&lt;/p&gt;

&lt;p&gt;A tool designed to help me move faster, think clearer, and stop wasting time on artificial interview challenges that don’t reflect real work.&lt;/p&gt;

&lt;p&gt;And it works.&lt;br&gt;
Not because it cheats the system, but because it levels the playing field.&lt;br&gt;
If hiring relies on automation, candidates shouldn’t be the only ones playing fair.&lt;/p&gt;

&lt;p&gt;Check out &lt;a href="https://blind.codes" rel="noopener noreferrer"&gt;https://blind.codes&lt;/a&gt;&lt;br&gt;
. I hope it helps you feel more confident.&lt;/p&gt;

&lt;p&gt;I’m sure you already have all the skills required, but interviews can be exhausting. If this tool can help you prepare smarter and reduce stress, make the most of it.&lt;/p&gt;

</description>
      <category>career</category>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
    </item>
    <item>
      <title>🚀 Introducing Page Replica: Web Scraping and Caching Tool</title>
      <dc:creator>Zied Hosni</dc:creator>
      <pubDate>Fri, 05 Jul 2024 18:41:51 +0000</pubDate>
      <link>https://dev.to/html5ninja/introducing-page-replica-web-scraping-and-caching-tool-1k38</link>
      <guid>https://dev.to/html5ninja/introducing-page-replica-web-scraping-and-caching-tool-1k38</guid>
      <description>&lt;h2&gt;
  
  
  What is Page Replica?
&lt;/h2&gt;

&lt;p&gt;"Page Replica" is a versatile web scraping and caching tool built with Node.js, Express, and Puppeteer. It helps prerender web app pages (React, Angular, Vue, etc.), which can be served via Nginx for SEO or other purposes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scrape Individual Pages or Entire Sitemaps&lt;/strong&gt;: Easily scrape and cache individual web pages or entire sitemaps through an API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remove JavaScript&lt;/strong&gt;: Optionally remove JavaScript from the scraped pages for better SEO performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nginx Configuration&lt;/strong&gt;: Serve cached pages optimally using our sample Nginx configuration, managing both user and search engine bot traffic.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Use Page Replica?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SEO Optimization&lt;/strong&gt;: Improve your website's SEO by serving prerendered pages to search engine bots.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Caching for Speed&lt;/strong&gt;: Cache pages to improve load times for your users and reduce server load.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Use&lt;/strong&gt;: With our new web service, you can start scraping and caching pages without any installation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Installation (for Self-Hosted Users)
&lt;/h3&gt;

&lt;p&gt;If you prefer to run Page Replica locally, follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Clone the Repository:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   git clone https://github.com/html5-ninja/page-replica.git
   &lt;span class="nb"&gt;cd &lt;/span&gt;page-replica
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Install Dependencies:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Configure Settings:&lt;/strong&gt;
Update &lt;code&gt;index.js&lt;/code&gt; with your desired configuration:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;CONFIG&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="na"&gt;baseUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://example.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="na"&gt;removeJS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="na"&gt;addBaseURL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="na"&gt;cacheFolder&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;path_to_cache_folder&lt;/span&gt;&lt;span class="dl"&gt;"&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;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start the API:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Scraping Individual Pages
&lt;/h4&gt;

&lt;p&gt;To scrape a single page, make a GET request to &lt;code&gt;/page&lt;/code&gt; with the &lt;code&gt;url&lt;/code&gt; query parameter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl http://localhost:8080/page?url&lt;span class="o"&gt;=&lt;/span&gt;https://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Scraping Sitemaps
&lt;/h4&gt;

&lt;p&gt;To scrape pages from a sitemap, make a GET request to &lt;code&gt;/sitemap&lt;/code&gt; with the &lt;code&gt;url&lt;/code&gt; query parameter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl http://localhost:8080/sitemap?url&lt;span class="o"&gt;=&lt;/span&gt;https://example.com/sitemap.xml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Serve Cached Pages with Nginx
&lt;/h3&gt;

&lt;p&gt;Our sample Nginx configuration in &lt;code&gt;nginx_config_sample/example.com.conf&lt;/code&gt; helps you efficiently manage traffic:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Users&lt;/strong&gt;: Regular users are routed to the main application server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bots&lt;/strong&gt;: Search engine bots are redirected to a dedicated server block for cached HTML delivery.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Need Assistance?
&lt;/h2&gt;

&lt;p&gt;If you have any questions or need support, we're here to help! Join our &lt;a href="https://github.com/html5-ninja/page-replica/discussions/3" rel="noopener noreferrer"&gt;GitHub Discussion&lt;/a&gt; to get in touch with us.&lt;/p&gt;

&lt;h2&gt;
  
  
  Folder Structure
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;nginx_config_sample&lt;/code&gt;: Sample Nginx configuration for redirecting bot traffic to the cached content server.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;api.js&lt;/code&gt;: Express application handling web scraping requests.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;index.js&lt;/code&gt;: Core web scraping logic using Puppeteer.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;package.json&lt;/code&gt;: Node.js project configuration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you for choosing Page Replica. We look forward to providing you with the best possible service. Happy scraping! 🕷️&lt;/p&gt;

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