<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Hexacker | Abdelmadjid Cherfaoui]]></title><description><![CDATA[Full Stack Developer]]></description><link>https://blog.hexacker.com</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1706536302077/4UxqYkEa-.png</url><title>Hexacker | Abdelmadjid Cherfaoui</title><link>https://blog.hexacker.com</link></image><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Apr 2026 00:16:34 GMT</lastBuildDate><atom:link href="https://blog.hexacker.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Ditching VSCode For Zed, Why, And For What?]]></title><description><![CDATA[I started using VSCode since its very early releases. I migrated to it from Sublime Text 2, and since then, VSCode has become my main code editor and then, my principal IDE.
One of the main reasons I adopted VSCode was its extensive extension’s ecosy...]]></description><link>https://blog.hexacker.com/ditching-vscode-for-zed-why-and-for-what</link><guid isPermaLink="true">https://blog.hexacker.com/ditching-vscode-for-zed-why-and-for-what</guid><category><![CDATA[Zed]]></category><category><![CDATA[zed-editor]]></category><category><![CDATA[vscode]]></category><category><![CDATA[VS Code]]></category><category><![CDATA[software development]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[Abdelmadjid Cherfaoui]]></dc:creator><pubDate>Sat, 29 Nov 2025 23:53:15 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1764460158960/78a749ed-5f98-4536-ad59-c9cb5f1f7106.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I started using VSCode since its very early releases. I migrated to it from Sublime Text 2, and since then, VSCode has become my main code editor and then, my principal IDE.</p>
<p>One of the main reasons I adopted VSCode was its extensive extension’s ecosystem. The flexibility and extensibility of VSCode make it the first choice for any developer.</p>
<p>Over the last couple of weeks, I've been looking for an alternative to VSCode for the same reason that initially drew me to it: its extensive extensions.</p>
<p>The VSCode extensions are a very clever way to add functionalities that are not built in, and it’s a very efficient way to help developers work with any kind of technology, no matter how old it is; probably there is already an extension for it.</p>
<p>This versatile extension ecosystem, unfortunately, made VSCode very slow to load projects, and for me, most of the time, I barely use 2 or 3 extensions at max.</p>
<p>For that, I started looking for a simple and efficient code editor that gives me the feel of speed, with some basic IDE features like a Git client, Debugger, etc.</p>
<p>I checked some code editors like Sublime Text 4, I gave it a good try, and it's still a good code editor, my only inconvenience with it was the price, a 100 USD for a code editor is kind of a high price for me. That’s one of the downsides of getting used to free and open-source projects 😅</p>
<p>Notepad++ wasn’t in my queue, just because it wasn’t my favorite code editor since my first steps in programming back in 2009.</p>
<p>Many of my friends recommended code editors like Cursor, Windsurf, but for me, they’re over-injected with some useless AI features, and their marketing strategy is all based on selling AI services.</p>
<p>I kept searching until I remembered Zed, the code editor that was built to be fast, installed it, and found it still really fast, memory use efficient, and has a growing extension library, but at the same time, a limited API to add functionalities.</p>
<p>The team behind Zed decided to build the main features and include them in the core of Zed, and allow the community to develop just some minor extensions that add, for example, support for language syntax highlighting, themes.</p>
<h2 id="heading-the-zed-era">The Zed Era</h2>
<p>After a few days of using Zed, I confirmed that it’s my new code editor from now on, and I’m not going back to VSCode to use it as my primary IDE.</p>
<p>Zed make you feel that it was made to make you code fast, be productive at what you’re doing, and not waiting for it to load your project so you can start working. Zed ecosystem is growing faster that I ever thought it will, and many extensions are getting published every day.</p>
<p>I was encouraged to publish my own extension to Zed repository. The extension adds the feature of syntax highlighting and autocompletion to <a target="_blank" href="https://edgejs.dev/docs/introduction">EdgeJS</a>, the templating engine of <a target="_blank" href="https://adonisjs.com/">AdonisJS framework</a>. You can check <a target="_blank" href="https://zed.dev/extensions/edge">the extension from this link</a></p>
]]></content:encoded></item><item><title><![CDATA[ExpressJS Is Not A Backend Framework]]></title><description><![CDATA[Recently I have seen a lot of developers in social media, LinkedIn precisely, considering Express.js as a backend framework, which is completely not the case. In this short article, I will just clarify some important points on how we can consider any...]]></description><link>https://blog.hexacker.com/expressjs-is-not-a-backend-framework</link><guid isPermaLink="true">https://blog.hexacker.com/expressjs-is-not-a-backend-framework</guid><category><![CDATA[Express]]></category><category><![CDATA[backend]]></category><category><![CDATA[backend developments]]></category><category><![CDATA[software development]]></category><category><![CDATA[Software Engineering]]></category><dc:creator><![CDATA[Abdelmadjid Cherfaoui]]></dc:creator><pubDate>Wed, 24 Jul 2024 23:25:40 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1721863297195/765e3d18-4c44-419a-8fd0-0b284872a7e1.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Recently I have seen a lot of developers in social media, LinkedIn precisely, considering Express.js as a backend framework, which is completely not the case. In this short article, I will just clarify some important points on how we can consider any framework to be a backend focuses or not.</p>
<p>In the official Express.js GitHub repo, they mentioned clearly:</p>
<blockquote>
<p>The Express philosophy is to provide small, robust tooling for HTTP servers, making it a great solution for single page applications, websites, hybrids, or public HTTP APIs.</p>
</blockquote>
<p>That's supposed to clear a lot of points now, Express.js is just an HTTP server built on the default HTTP library of Node.js, it added some extra features to it but not a full backend framework.</p>
<p>If you have used PHP for example, you'll find a lot of backend focused frameworks such as Symfony, CakePHP, Laravel, and a lot of others. In Python, we have Django, Flask, in Ruby, there are Ruby on Rails, Sinatra… All of these are a real backend frameworks that gives you an included set of tools that will make your development easier and faster.</p>
<p>In the world of JavaScript, we have some amazing backend focused frameworks such as NestJS, AdonisJS, these two are the leaders in the field.</p>
<p>Happy coding.</p>
]]></content:encoded></item><item><title><![CDATA[7 VSCode Extensions for Backend Developers]]></title><description><![CDATA[VSCode might be the most used text editor in this era, it has passed Atom and Sublime Text combined so far.
VSCode has a very rich extension marketplace where you can find a huge number of very useful extensions that can turn your coding experience i...]]></description><link>https://blog.hexacker.com/7-vscode-extensions-for-backend-developers</link><guid isPermaLink="true">https://blog.hexacker.com/7-vscode-extensions-for-backend-developers</guid><category><![CDATA[vscode extensions]]></category><category><![CDATA[vscode]]></category><category><![CDATA[VSCode Tips]]></category><category><![CDATA[backend]]></category><category><![CDATA[backend developments]]></category><dc:creator><![CDATA[Abdelmadjid Cherfaoui]]></dc:creator><pubDate>Mon, 25 Sep 2023 18:32:52 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1695661803938/85ca0b20-0362-4fbe-8f44-346ce3115f42.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>VSCode might be the most used text editor in this era, it has passed Atom and Sublime Text combined so far.</p>
<p>VSCode has a very rich extension marketplace where you can find a huge number of very useful extensions that can turn your coding experience into a really exciting adventure.</p>
<p>1-<a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=Postman.postman-for-vscode">Postman</a><br />As a backend developer, you will definitely need to test your API endpoints. Switching back and forward between your VSCode and API testing app(Postman, Insomnia, RapidAPI...) can turn into a big distraction.</p>
<p>Postman for VSCode gives you all the features of a normal Postman desktop application which significantly reduces distraction.</p>
<p>2-<a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=huizhou.githd">Git History Diff</a><br />This extension has the same features as <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens">GitLens</a> but for free. If you're working with a team, this extension is a must, it allows you to know who's the member who wrote the exact line and which PR.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1695663916921/1e822027-91fd-42d7-b8c3-cb967502a8a1.png" alt class="image--center mx-auto" /></p>
<p>3-<a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=kisstkondoros.typelens">TypeLens</a>(TypeScript Specified)<br />Personally, I have tried WebStorm, and one of the features I liked a lot, is function, and variable referencing. WebStorm above any function tells you how much that function has been used and where.</p>
<p>TypeLens, adds the same functionality to VSCode, at the current time, it works best for TypeScript.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1695664336169/e00f4ac9-9321-4100-ab88-596b08f5883d.png" alt class="image--center mx-auto" /></p>
<p>4-<a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=cweijan.vscode-database-client2">Database Client</a><br />One of the greatest VSCode extensions I have ever used. Database Client allows you to connect to both RDB and NoSQL servers, it supports many RDB managers such as PostgreSQL, MySQL, MariaDB</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1695664800614/3673d145-4dee-452f-8424-ae6c8fbd6343.png" alt class="image--center mx-auto" /></p>
<p>5-<a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker">Code Spell Checker</a><br />This extension will help you define meaningful variables, functions, class names, and even the string messages you return. It'll help you write readable, clean code.</p>
<p>6-<a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph">GitGraph</a><br />One of the most useful VSCode extensions, it gives you a full vision of your commit, branches, and PRs merges on your git repository.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1695665464766/4ce78b71-00ed-4117-afab-63833b8d12e6.gif" alt class="image--center mx-auto" /></p>
<p>7-<a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=WakaTime.vscode-wakatime">WakaTime</a><br />WakaTime helps you keep yourself motivated, it records your time while you're coding, and it can also provide reports on how much you've spent using a specific programming language.</p>
<h3 id="heading-happy-coding">Happy Coding</h3>
]]></content:encoded></item><item><title><![CDATA[Deploy Multiple Websites With Different Domain Names On The Same VPS Using Docker and Nginx]]></title><description><![CDATA[For more than 4 years (between 2014 and 2018) I was using PHP as my main stack for developing websites for my clients, at the same time, I have multiple websites using WordPress as a content management system deployed on shared hosting and never had ...]]></description><link>https://blog.hexacker.com/deploy-multiple-websites-with-different-domain-names-on-the-same-vps-using-docker-and-nginx</link><guid isPermaLink="true">https://blog.hexacker.com/deploy-multiple-websites-with-different-domain-names-on-the-same-vps-using-docker-and-nginx</guid><category><![CDATA[Devops]]></category><category><![CDATA[Docker]]></category><category><![CDATA[nginx]]></category><category><![CDATA[Reverse Proxy]]></category><dc:creator><![CDATA[Abdelmadjid Cherfaoui]]></dc:creator><pubDate>Fri, 28 Jul 2023 22:49:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1690584514629/b8f8a54d-759d-4baa-9ce1-c6fd61b423bb.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>For more than 4 years (between 2014 and 2018) I was using PHP as my main stack for developing websites for my clients, at the same time, I have multiple websites using WordPress as a content management system deployed on shared hosting and never had a problem.</p>
<p>About 5 years ago, I changed my stack from PHP to NodeJS/Typescript which become my main stack from then. I started facing an issue with the deployment of my apps since the shared hosting I was using does not support NodeJS and I was obliged to look for a solution to deploy at least my staging phase apps.</p>
<p>I was using solutions like Heroku's free plan to test my apps and everything was working smoothly till Heroku decided to limit their free plan. Here I needed to find a solution.</p>
<p>I had less than 8 days to decide and move since my shared hosting was about to renew for another year for 150 USD before taxes. That amount was too much for just a shared 1Gb RAM shared hosting that supports only PHP. </p>
<p>I ordered a VPS with 4 Cores CPU and 8GB of RAM for 141 CAD tax included and that gives me way much space to play with. I just wanted to give you a brief of the story, let’s deep dive…</p>
<p>I assume you have some knowledge of Linux and Docker and of course, Command Line(Terminal). I will not cover them in this article.</p>
<p>After connecting to your VPS via SSH, create a new user with SUDO privileges for security reasons.</p>
<p>Install Docker on your system and assign your new user to the Docker user group to give that user permission to use Docker. To check if the user has been assigned to the Docker group, write this command on your terminal</p>
<pre><code class="lang-bash">groups
</code></pre>
<p>It will return the group to which your user has been assigned. If you didn’t see the Docker group, you just need to disconnect and reconnect again to your VPS, if you still can’t see it, restart your VPS and reconnect to it again.</p>
<p>Now, we need to create a folder that will hold our website’s files using this command</p>
<pre><code class="lang-bash">sudo mkdir -p /var/www/example.com
</code></pre>
<p>Replace <a target="_blank" href="http://example.com">example.com</a> with your domain name. Make sure that you write it exactly using this format, otherwise, you might face some issues when generating SSL for your website.</p>
<p>Now, you need to add your user to the www-data group, after that change the permission of the WWW folder and all of its sub-folders to www-data</p>
<p>To serve our first website, we need an HTTP server, I will choose Nginx for that(you can choose Apache if you want). To do that, we need to pull the Nginx image from Docker Hub using this command.</p>
<pre><code class="lang-bash">docker pull nginx
</code></pre>
<p>Now, we need to run a docker container pointing to our new website using this command</p>
<pre><code class="lang-bash">docker run -d -p 2023:80 --name example -v /var/www/example.com:/var/www/public nginx
</code></pre>
<p>Simply, this command is running a new docker container in detached mode, this container is running Nginx using the <code>2023</code> port</p>
<p>Let’s add our website’s files to the folder we just created for <a target="_blank" href="http://example.com">example.com</a>.</p>
<p>I pushed a simple HTML website on my Github account on a public repository so I won’t face permission issues later. Now I clone that repo inside the <a target="_blank" href="http://example.com"><em>example.com</em></a> sub-folder of <em>/var/www</em></p>
<p>If everything goes well, you can visit your new website by entering the VPS IP address on your browser followed by <code>:2023</code></p>
<blockquote>
<p><a target="_blank" href="http://IP_ADDRESS:2023">http://IP_ADDRESS:2023</a></p>
</blockquote>
<p>Now, you have to point your domain to your server, and to do that, you need to install Nginx to be your reverse proxy which will redirect all incoming traffic to the correct docker image.</p>
<pre><code class="lang-bash">sudo apt install nginx
</code></pre>
<p>After the installation got done, create a new file in the available sites folder of Nginx using this command.</p>
<pre><code class="lang-bash">vi /etc/nginx/sites-available/example.com.conf
</code></pre>
<p>Remember, the file name <code>example.com.conf</code> must be identical to the website folder we created before.</p>
<p>Add this content to the file you just created</p>
<pre><code class="lang-bash">server {
 listen 80;
 listen [::]:80;
 server_name example.com www.example.com;

 location / {
   proxy_pass http://0.0.0.0:2023;
   proxy_set_header Host <span class="hljs-variable">$host</span>;
   proxy_set_header X-Real-IP <span class="hljs-variable">$remote_addr</span>;
   proxy_set_header X-Forwarded-For <span class="hljs-variable">$proxy_add_x_forwarded_for</span>;
   proxy_set_header X-Forwarded-Proto <span class="hljs-variable">$scheme</span>;
 }
}
</code></pre>
<p>We are one last step from finishing the process. Now, you need to add an <code>A Record</code> of your domain name DNS configuration pointing to your VPS IP address. I usually add 2 records in this way.</p>
<pre><code class="lang-bash">A @ IPADDRESS AUTOMATIC
A WWW IPADDRESS AUTOMATIC
</code></pre>
<p>Now, we just need to move our configuration file to the available sites folder in Nginx using this command</p>
<pre><code class="lang-bash">ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
</code></pre>
<p>Reload the Nginx configuration and you are ready to go</p>
<pre><code class="lang-bash">/etc/init.d/nginx reload
</code></pre>
<p>Everything is well set now, you can serve multi websites by copying the same steps we just did.</p>
]]></content:encoded></item><item><title><![CDATA[6 Websites Any Developer Should Be Addicted To]]></title><description><![CDATA[KEEP LEARNING is the key to being a good developer.
To be the required developer for all of the IT/Tech companies, you must sharpen your skills as much as can especially we are in a period where technologies are getting developed very frequently.
So,...]]></description><link>https://blog.hexacker.com/6-websites-any-developer-should-be-addicted-to</link><guid isPermaLink="true">https://blog.hexacker.com/6-websites-any-developer-should-be-addicted-to</guid><category><![CDATA[problem solving skills]]></category><category><![CDATA[Developer]]></category><category><![CDATA[learning]]></category><category><![CDATA[#codenewbies]]></category><category><![CDATA[learn coding]]></category><dc:creator><![CDATA[Abdelmadjid Cherfaoui]]></dc:creator><pubDate>Thu, 10 Feb 2022 19:14:43 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/npxXWgQ33ZQ/upload/v1644485855250/Uc0oTpigM.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>KEEP LEARNING is the key to being a good developer.</p>
<p>To be the required developer for all of the IT/Tech companies, you must sharpen your skills as much as can especially we are in a period where technologies are getting developed very frequently.</p>
<p>So, instead of keep watching tutorials on YouTube or any other learning platform, you should put yourself in a real-world situation and familiarize yourself with solving problems, building platforms, innovating solutions.</p>
<p>We will list 6 websites, you as a developer should be addicted to instead of spending time on social media 😏</p>
<p>All of the listed websites are providing a free plan.😉</p>
<h3 id="heading-1-hackerrankhttpswwwhackerrankcom">1- <a target="_blank" href="https://www.hackerrank.com">HackerRank</a></h3>
<p>One of the greatest websites where you can learn, apply and test what you have learned in the same place.
HackerRank provides also very high-quality certifications without forgetting their amazing coding competition.
If you're about to pass a job interview, you should pass their Interview Preparation Kit, it will be so much helpful.</p>
<h3 id="heading-2-codesignalhttpscodesignalcom">2- <a target="_blank" href="https://codesignal.com">CodeSignal</a></h3>
<p>Recently, a lot of companies are hiring candidates using CodeSignal. They are providing an amazing feature of Job Interview Practice which will help you a lot get familiar with technical job interviews.
CodeSignal provides certifications too which has a very high value on the job market. Recently, Upwork has a deal with CodeSignal to pass tests for Upwork freelancers to give them badges proving they are qualified developers.</p>
<h3 id="heading-3-leetcodehttpsleetcodecom">3- <a target="_blank" href="https://leetcode.com/">LeetCode</a></h3>
<p>The most known programming practice platform, it contains tons of programming challenges and hundreds of problems waiting for you to solve which definitely will not just sharpen your programming skills, but also your problem-solving skills and logic.</p>
<h3 id="heading-4-codewarshttpswwwcodewarscom">4- <a target="_blank" href="https://www.codewars.com">CodeWars</a></h3>
<p>Known as the richest platforms regarding the supported programming languages. It is an amazing place where you can sharpen your programming skills in a wide range of programming languages.</p>
<h3 id="heading-5-topcoderhttpswwwtopcodercom">5-<a target="_blank" href="https://www.topcoder.com">TopCoder</a></h3>
<p>One of the fastest-growing communities, not only for developers but also for Data Scientists, Designers, and Quality Assurance.
They also provide tutorials: Articles, Videos, and a Forum where you can interact with other members.</p>
<h3 id="heading-6-coderbytehttpswwwcoderbytecom">6- <a target="_blank" href="https://www.coderbyte.com">CoderByte</a></h3>
<p>A very great place where you can learn new programming skills, compete in challenges and practice some real-world cases of job interviews.
They do provide a free membership but with very limited features.</p>
<p>##BONUS
While I was writing this article, I discovered an amazing YouTube channel <a target="_blank" href="https://www.youtube.com/c/NeetCode/">NeetCode</a> you should definitely watch their videos.</p>
<p>I will be so happy if you share with us any other websites that have not been listed in this article.</p>
]]></content:encoded></item><item><title><![CDATA[When Using Microservices Is A Must And When It Is Not]]></title><description><![CDATA[I wrote a post on LinkedIn last day talking about microservices and I mentioned that it is a must these days without clarifying anything about that sentence, which made some of my friends ask me why I am saying that it is a must especially that as we...]]></description><link>https://blog.hexacker.com/when-using-microservices-is-a-must-and-when-it-is-not</link><guid isPermaLink="true">https://blog.hexacker.com/when-using-microservices-is-a-must-and-when-it-is-not</guid><category><![CDATA[Microservices]]></category><category><![CDATA[System Architecture]]></category><category><![CDATA[software architecture]]></category><dc:creator><![CDATA[Abdelmadjid Cherfaoui]]></dc:creator><pubDate>Sat, 05 Feb 2022 19:02:49 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1644084408038/OV2sNnPxy.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I wrote a post on LinkedIn last day talking about microservices and I mentioned that it is a must these days without clarifying anything about that sentence, which made some of my friends ask me why I am saying that it is a must especially that as we know it is really expensive to implement.</p>
<iframe src="https://www.linkedin.com/embed/feed/update/urn:li:share:6895409863636123648" height="330" width="504"></iframe>

<p>Unfortunately, I did not mention that I was talking about a very specific situation which is the infrastructure of startups on the period of business scaling.</p>
<p>For those who do not know me in person, I had the chance to be a member of some startups founding team especially when I was working as a freelancer during the period between 2013 and 2019. </p>
<p>Without further talk, let's move to our main topic: When Using Microservices Is A Must?</p>
<p>I had the chance to develop many e-commerce platforms, most of them were targeting the MENA area, and a lot of them were using some pre-built scripts variant from OpenCart, Magento, PrestaShop, and CS-Cart which all of them are built using Monolithic Architecture.</p>
<p>A few days ago, one of the projects I have worked on got a seed series of funding, the founder contacted me to give him some propositions to improve the system to be able to handle the expected amount of visitors since they are planning to do some massive marketing campaigns and they already have a bad experience with it before and the system was not able to handle a couple of millions of visitors even after they upgrade the resources.</p>
<p>Since they still using the same Magento system since 2018 without any system improvement, it was kind of impossible to improve the system in the same way, so what I proposed to him was: You have to rebuild the system from scratch and you must use the microservices architecture.</p>
<p>Now, to answer our main question, using the right architecture based on your project goals will progressively save you tons of money.</p>
<p>I did not want to get deeper into details, simply because I wrote this article in a hurry  😅😅</p>
<p>Best</p>
]]></content:encoded></item></channel></rss>