<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Omar A.</title><link>https://civilcoder55.github.io/</link><description>Recent content on Omar A.</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Wed, 08 Oct 2025 12:01:31 +0000</lastBuildDate><atom:link href="https://civilcoder55.github.io/index.xml" rel="self" type="application/rss+xml"/><item><title>☎️ Incoming WhatsApp Business Calling with 3CX ☎️</title><link>https://civilcoder55.github.io/journey/whatsapp-business-calling-3cx/</link><pubDate>Wed, 08 Oct 2025 12:01:31 +0000</pubDate><guid>https://civilcoder55.github.io/journey/whatsapp-business-calling-3cx/</guid><description>&lt;p&gt;&lt;a href="https://civilcoder55.github.io/images/3cx/cover_hu_7272b0e5fe73c10d.webp" class="md-img__a lightbox-image"&gt;&#10; &lt;img class="md-img" src="https://civilcoder55.github.io/images/3cx/cover_hu_2ea5456b137b0ba6.webp" alt="WhatsApp Business Calling with 3CX" srcset="https://civilcoder55.github.io/images/3cx/cover_hu_2ea5456b137b0ba6.webp 850w, https://civilcoder55.github.io/images/3cx/cover_hu_8119ffef41439b21.webp 1200w" sizes="(max-width: 900px) 100vw, 850px" width="850" height="234"&#10; loading="lazy" decoding="async"&gt;&#10;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In 2025, WhatsApp launched an exciting new capability — &lt;strong&gt;WhatsApp Business Calling via Cloud API&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;This feature &lt;strong&gt;enables businesses to make and receive calls over SIP or WebRTC&lt;/strong&gt; directly through WhatsApp.&lt;/p&gt;&#10;&lt;p&gt;In this guide, we’ll walk through how to &lt;strong&gt;set up WhatsApp calling with your Business Account&lt;/strong&gt; and how easy it is to integrate it with your &lt;strong&gt;PBX system&lt;/strong&gt; using &lt;strong&gt;3CX&lt;/strong&gt; as an example.&lt;/p&gt;</description></item><item><title>NestJS Standalone Worker</title><link>https://civilcoder55.github.io/journey/nestjs-standalone-worker/</link><pubDate>Thu, 29 Aug 2024 20:11:50 +0300</pubDate><guid>https://civilcoder55.github.io/journey/nestjs-standalone-worker/</guid><description>&lt;h2 id="introduction-"&gt;Introduction 🚀&lt;a class="heading-anchor" href="#introduction-" aria-label="Link to this section"&gt;#&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;When building an API server, it&amp;rsquo;s crucial to keep the request-response cycle as short as possible to serve responses fast. However, some tasks, like sending emails, processing images, or running long queries, can be time-consuming. In these cases, it&amp;rsquo;s better to handle these tasks in the background rather than keeping the client waiting.&lt;/p&gt;&#10;&lt;p&gt;In NestJS Common applications, this can be achieved using the BullMQ library, a Redis-based queue for Node.js.&lt;/p&gt;</description></item><item><title>Managing Authorization in Microservices</title><link>https://civilcoder55.github.io/journey/auth-as-service/</link><pubDate>Fri, 09 Aug 2024 20:11:50 +0300</pubDate><guid>https://civilcoder55.github.io/journey/auth-as-service/</guid><description>&lt;h2 id="authorization-in-microservices"&gt;Authorization in Microservices&lt;a class="heading-anchor" href="#authorization-in-microservices" aria-label="Link to this section"&gt;#&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;When developing a monolithic application, managing authorization and permissions is a bit easier since you have a single point of control for all authorization and permissions. However, with the rise of microservices, this task becomes more complex.&lt;/p&gt;&#10;&lt;p&gt;In a microservices architecture, each service typically has its own database and logic for handling permissions. This can lead to duplication and inconsistency in how permissions are managed across services. Additionally, sharing permissions between services can become problematic.&lt;/p&gt;</description></item><item><title>My Journey: Prometheus and Grafana</title><link>https://civilcoder55.github.io/journey/prometheus-grafana/</link><pubDate>Tue, 06 Aug 2024 19:11:50 +0300</pubDate><guid>https://civilcoder55.github.io/journey/prometheus-grafana/</guid><description>&lt;h2 id="mission-2"&gt;Mission 2&lt;a class="heading-anchor" href="#mission-2" aria-label="Link to this section"&gt;#&lt;/a&gt;&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Discover Prometheus and Grafana&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;I discovered Prometheus, understanding its functionality and how to use it for monitoring applications. Additionally, I learned about Grafana and how to visualize the metrics collected by Prometheus.&lt;/li&gt;&#10;&lt;li&gt;I also gained knowledge on creating and using an Exporter to gather metrics from an application and expose them to Prometheus.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Collect and Visualize Asterisk Metrics&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;I collected metrics from an Asterisk server using the Asterisk &lt;code&gt;res_prometheus&lt;/code&gt; module and exposed them to Prometheus.&lt;/p&gt;</description></item><item><title>My Journey: K8s and Helm</title><link>https://civilcoder55.github.io/journey/kubernetes/</link><pubDate>Mon, 05 Aug 2024 19:11:50 +0300</pubDate><guid>https://civilcoder55.github.io/journey/kubernetes/</guid><description>&lt;h2 id="mission-1"&gt;Mission 1&lt;a class="heading-anchor" href="#mission-1" aria-label="Link to this section"&gt;#&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;During this week, I will discover and learn Kubernetes, and how to deploy a simple application to k8s.&lt;/p&gt;&#10;&lt;p&gt;I will build a simple API application with Express and then deploy it to Kubernetes, including a database and Redis cache.&lt;/p&gt;&#10;&lt;p&gt;The API will be an &lt;strong&gt;Incantogamus app&lt;/strong&gt;, a simple CRUD application for video games.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Incantogamus&lt;/strong&gt; is a whimsical and imaginary word created with a mix of Latin and whimsy, inspired by the magical world of Harry Potter. However, in terms of actual meaning, it doesn&amp;rsquo;t have a specific definition or translation as it&amp;rsquo;s a made-up term. It&amp;rsquo;s intended to evoke a sense of enchantment and mystery, fitting for a magical word related to games in the Harry Potter universe.&lt;/p&gt;</description></item><item><title>My Software Journey: Intro</title><link>https://civilcoder55.github.io/journey/journey/</link><pubDate>Mon, 01 Jul 2024 19:11:50 +0300</pubDate><guid>https://civilcoder55.github.io/journey/journey/</guid><description>&lt;p&gt;I&amp;rsquo;m starting a journey to build random stuff and to apply and practice Backend Engineering. I will go from a Monolithic application to Microservices, exploring and building cool stuff and Proofs of Concept. 🚀💻&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://civilcoder55.github.io/images/journey/discover_hu_46d681071a02eb40.webp" class="md-img__a lightbox-image"&gt;&#10; &lt;img class="md-img" src="https://civilcoder55.github.io/images/journey/discover_hu_de5af1ff5de4ca76.webp" alt="A lone figure walking down a dark corridor lined with stacked old trunks" srcset="https://civilcoder55.github.io/images/journey/discover_hu_de5af1ff5de4ca76.webp 850w, https://civilcoder55.github.io/images/journey/discover_hu_3ac9e41b5faf7ed9.webp 1700w" sizes="(max-width: 900px) 100vw, 850px" width="850" height="478"&#10; loading="lazy" decoding="async"&gt;&#10;&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>