<?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>Forem: Mohamed El Bahja</title>
    <description>The latest articles on Forem by Mohamed El Bahja (@dev0x0).</description>
    <link>https://forem.com/dev0x0</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%2F68633%2F2c5fb0f5-6c63-4fd8-b343-a39baa2e612a.jpeg</url>
      <title>Forem: Mohamed El Bahja</title>
      <link>https://forem.com/dev0x0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/dev0x0"/>
    <language>en</language>
    <item>
      <title>Build Cross-Platform Desktop Apps using Golang and Javascript!</title>
      <dc:creator>Mohamed El Bahja</dc:creator>
      <pubDate>Tue, 16 Jun 2020 00:35:08 +0000</pubDate>
      <link>https://forem.com/dev0x0/build-cross-platform-desktop-apps-using-golang-and-javascript-3ed4</link>
      <guid>https://forem.com/dev0x0/build-cross-platform-desktop-apps-using-golang-and-javascript-3ed4</guid>
      <description>&lt;p&gt;Hello Devs, &lt;/p&gt;

&lt;p&gt;Once upon a time I wanted to create a simple desktop app for my personal use, after searching Github I didn't find something similar to electron for Go, so I created one and I called Guark.&lt;/p&gt;

&lt;p&gt;Guark is an electron alternative for GO developers, with it you can develop GO desktop apps, and taking advantage of modern front end frameworks like Vue.js and React.js to create amazing user interfaces. &lt;/p&gt;

&lt;p&gt;Github Repo: &lt;a href="https://github.com/guark/guark"&gt;https://github.com/guark/guark&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your feedback is very appreciated.&lt;/p&gt;

</description>
      <category>go</category>
      <category>javascript</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Podman The Docker Alternative</title>
      <dc:creator>Mohamed El Bahja</dc:creator>
      <pubDate>Tue, 12 May 2020 15:04:20 +0000</pubDate>
      <link>https://forem.com/dev0x0/podman-the-docker-alternative-377f</link>
      <guid>https://forem.com/dev0x0/podman-the-docker-alternative-377f</guid>
      <description>&lt;p&gt;I'm using &lt;a href="https://podman.io/getting-started/installation.html"&gt;Podman&lt;/a&gt; for almost a year now, and it's awesome. the interesting thing that many developers never heard of it!&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Podman?
&lt;/h2&gt;

&lt;p&gt;Podman it is a container engine that is used for developing, managing, and running OCI containers, container images, and pods (groups of containers deployed together on the same host).&lt;/p&gt;

&lt;p&gt;In short, It is an open source daemonless and rootless container engine which is developed by Redhat, when Podman was launched Redhat’s main ultimatum was to provide an alternative to the current popular container engine Docker, but you may wonder: &lt;strong&gt;Why should I switch to Podman?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this article, I have compared Podman with Docker! why Podman is a better alternative to Docker?&lt;/p&gt;

&lt;h2&gt;
  
  
  Daemonless
&lt;/h2&gt;

&lt;p&gt;First of all, if you are a Docker user, you know that Docker works through a daemon. If Docker daemon isn’t standing, you won’t get your container up.&lt;/p&gt;

&lt;p&gt;Podman runs with the runC container runtime process, which runs directly on the Linux kernel, without the need for a daemon.&lt;/p&gt;

&lt;p&gt;Instead of the daemon, Podman launches containers and pods as child processes, podman interacts with libpod, a library that allows other tools to manage pods and containers. &lt;/p&gt;

&lt;p&gt;The Podman directly interacts with the image registry, container, image storage, and the Linux kernel. Whereas in Docker the &lt;a href="https://en.wikipedia.org/wiki/Single_point_of_failure"&gt;single point of failure&lt;/a&gt; daemon does all the work by interacting as an agent with registries, images, containers, and the kernel.&lt;/p&gt;

&lt;p&gt;Docker manages everything related to containers like network, storage, execution, etc by the same service, which can bring some disadvantages, since the more containers you use, the bigger and more complex the docker service becomes.&lt;/p&gt;

&lt;p&gt;This is why Podman authors have decided to develop its tool without relying on a daemon, Podman does not need a "big fat daemon" to work. They have decentralized all the components necessary for container management and have individualized them into smaller components that will be used only when necessary. This decentralization offers a large number of advantages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rootless
&lt;/h2&gt;

&lt;p&gt;One of the main benefits of using Podman is enhanced security. For starters, Containers under the control of Podman can either be run by root or by a non-privileged user, maintaining almost all functionality. This is a great advantage since you can run your containers with different users who have different privileges.&lt;/p&gt;

&lt;p&gt;Podman also uses a traditional fork/execution model, as opposed to the client/server model that Docker uses.&lt;/p&gt;

&lt;p&gt;Another advantage of Podman is that it is capable of using UID separation using namespaces, which provides an extra isolation layer when running your containers, Which presents Podman as a safer tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Easy to Migrate
&lt;/h2&gt;

&lt;p&gt;When building Podman, Redhat made sure that Docker users could easily adapt. So all the flags and commands you are familiar with: pull, push, build, run, commit, tag, etc... all exist with Podman.&lt;/p&gt;

&lt;p&gt;Migrating from Docker to Podman is very easy, it provides a Docker-compatible command-line front end that can simply alias the Docker CLI, using a command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# just in case you forgot to type podman!&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;docker&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;podman
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: before using alias command you should stop Docker first, and podman local repository path is &lt;code&gt;/var/lib/containers&lt;/code&gt; based on OCI standards, instead of &lt;code&gt;/var/lib/docker&lt;/code&gt;!&lt;/p&gt;

&lt;p&gt;Podman supports &lt;code&gt;Dockerfile&lt;/code&gt; and &lt;code&gt;docker-compose.yml&lt;/code&gt;, but if you decided to immigrate you can rename &lt;code&gt;Dockerfile&lt;/code&gt; to &lt;code&gt;Containerfile&lt;/code&gt; and &lt;code&gt;docker-compose.yml&lt;/code&gt; to &lt;code&gt;container-compose.yml&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Image Management
&lt;/h2&gt;

&lt;p&gt;Images created by Podman are compatible with other container management tools that adhere to OCI standard, and hence they can be pushed to other container registries like Docker Hub. Podman specializes in all of the commands and functions that help you to maintain and modify OCI container images, such as pulling and tagging. It allows you to create, run, and maintain those containers created from those images in a production environment.&lt;/p&gt;

&lt;p&gt;Although Podman is able to build images very similarly to Docker with the Podman build command, the Redhat team also offers us another tool called Buildah and Skopeo, these tools are much faster and uses less disk space because of overlay storage driver.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Systemd
&lt;/h2&gt;

&lt;p&gt;Podman’s fork and exec architecture allows you to use systemd features like sd notify, socket activation, and managing containers with service files. No daemons are used in the background for this purpose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I hope you liked this article where we discussed What is Podman?, what are its advantages over Docker?, what do you think? Is Podman a &lt;a href="https://www.youtube.com/watch?v=YkBk52MGV0Y"&gt;better alternative to Docker&lt;/a&gt;? try it to see!&lt;/p&gt;

</description>
      <category>devops</category>
      <category>podman</category>
      <category>docker</category>
      <category>containers</category>
    </item>
    <item>
      <title>Using Google Chrome Console On Any Mobile Device!</title>
      <dc:creator>Mohamed El Bahja</dc:creator>
      <pubDate>Fri, 13 Sep 2019 13:39:19 +0000</pubDate>
      <link>https://forem.com/dev0x0/using-google-chrome-console-on-any-mobile-device-9ec</link>
      <guid>https://forem.com/dev0x0/using-google-chrome-console-on-any-mobile-device-9ec</guid>
      <description>&lt;p&gt;Google Chrome is my default web browser in all my devices, in this post I'll share with you how to use the console on your mobile devices.&lt;/p&gt;

&lt;p&gt;Let's Start.&lt;/p&gt;

&lt;h2&gt;
  
  
  Android
&lt;/h2&gt;

&lt;p&gt;1 - Enable &lt;strong&gt;Developer mode&lt;/strong&gt; by going to &lt;strong&gt;Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;About phone&lt;/strong&gt; then tap on &lt;strong&gt;Build number&lt;/strong&gt; 7 times.&lt;br&gt;
2 - Enable &lt;strong&gt;USB Debugging&lt;/strong&gt; from &lt;strong&gt;Developer Options&lt;/strong&gt;.&lt;br&gt;
3 - On your desktop, open &lt;strong&gt;DevTools&lt;/strong&gt; click on more icon then &lt;strong&gt;More Tools&lt;/strong&gt; &amp;gt; &lt;strong&gt;Remote Devices&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fm2sd4xp17hx8uiayx966.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fm2sd4xp17hx8uiayx966.png" alt="Chrome Remote Devices" width="539" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 - Check on &lt;strong&gt;Discover USB devices&lt;/strong&gt; option.&lt;br&gt;
5 - Open chrome on your phone.&lt;br&gt;
6 - Plug your phone via USB, then you will see an authorization popup click OK.&lt;br&gt;
7 - You will be able to see your phone tabs and &lt;strong&gt;Inspect&lt;/strong&gt; them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F9wr0d6fhj3ktk37e92yq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F9wr0d6fhj3ktk37e92yq.png" alt="Chrome Remote Devices Debugging" width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  iOS And Others
&lt;/h2&gt;

&lt;p&gt;Just open new tab and type: &lt;code&gt;chrome://inspect&lt;/code&gt;, then click on &lt;strong&gt;Start logging&lt;/strong&gt; button, then visit the page that you want to debug.&lt;/p&gt;

&lt;p&gt;I hope this helps you 🙏&lt;/p&gt;

</description>
      <category>chrome</category>
      <category>devtools</category>
    </item>
  </channel>
</rss>
