<?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" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Hamza HAMIDI on Medium]]></title>
        <description><![CDATA[Stories by Hamza HAMIDI on Medium]]></description>
        <link>https://medium.com/@hamidihamza?source=rss-6ab2ee4a00f1------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*NQfE76BdgXSk5ffyKCJ0Rw.jpeg</url>
            <title>Stories by Hamza HAMIDI on Medium</title>
            <link>https://medium.com/@hamidihamza?source=rss-6ab2ee4a00f1------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Wed, 29 Apr 2026 19:13:22 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@hamidihamza/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[ Fixing 503 Errors During Kubernetes Rollouts: Two Approaches]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@hamidihamza/fixing-503-errors-during-kubernetes-rollouts-two-approaches-2d322b24a3fb?source=rss-6ab2ee4a00f1------2"><img src="https://cdn-images-1.medium.com/max/1536/1*vEOTXCNkYOA1C-aFiBzg9A.png" width="1536"></a></p><p class="medium-feed-snippet">Introduction</p><p class="medium-feed-link"><a href="https://medium.com/@hamidihamza/fixing-503-errors-during-kubernetes-rollouts-two-approaches-2d322b24a3fb?source=rss-6ab2ee4a00f1------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@hamidihamza/fixing-503-errors-during-kubernetes-rollouts-two-approaches-2d322b24a3fb?source=rss-6ab2ee4a00f1------2</link>
            <guid isPermaLink="false">https://medium.com/p/2d322b24a3fb</guid>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[503-error]]></category>
            <category><![CDATA[high-availability]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[nodejs]]></category>
            <dc:creator><![CDATA[Hamza HAMIDI]]></dc:creator>
            <pubDate>Wed, 03 Sep 2025 22:21:45 GMT</pubDate>
            <atom:updated>2025-09-03T22:21:45.803Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Add coverage to your Angular project CI]]></title>
            <link>https://medium.com/@hamidihamza/add-coverage-to-your-angular-project-ci-fd30ccf38a31?source=rss-6ab2ee4a00f1------2</link>
            <guid isPermaLink="false">https://medium.com/p/fd30ccf38a31</guid>
            <category><![CDATA[travis-ci]]></category>
            <category><![CDATA[coverage]]></category>
            <category><![CDATA[continuous-integration]]></category>
            <category><![CDATA[angular]]></category>
            <category><![CDATA[web-development]]></category>
            <dc:creator><![CDATA[Hamza HAMIDI]]></dc:creator>
            <pubDate>Tue, 10 Mar 2020 22:43:20 GMT</pubDate>
            <atom:updated>2020-06-09T23:38:39.306Z</atom:updated>
            <content:encoded><![CDATA[<h3>Publish your Angular application coverage</h3><p>If you want to show the code coverage of your Angular project, this tutorial is the way to go.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/765/1*68Dleb-9gTa4XY8EksVT_g.png" /></figure><h3>Prerequisites</h3><p>In this tutorial we’ll be using <a href="https://travis-ci.com/"><strong>Travis-CI</strong></a><strong> </strong>&amp; <a href="https://codecov.io/"><strong>codecov</strong></a>. So create the corespondent accounts &amp; add your project.</p><h3>Setup</h3><p>For this example, I’ll start by creating a new angular application. Following that, let’s add <a href="https://www.npmjs.com/package/codecov"><strong>codecov</strong></a><strong> </strong>as a dev-dependency:</p><pre>$ ng new angular-app-codecov<br>$ cd angular-app-codecov<br>$ npm i -D codecov</pre><p>Next, let’s setup Karma. Remember we need to run the test coverage on Travis-CI. So, we need to run Chrome in <a href="https://developers.google.com/web/updates/2017/04/headless-chrome">Headless Mode</a>. Let’s edit <strong>Karma.conf.js</strong> which is located in the root of the project. Add these new lines to your config:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/89146ee567d81fe64859ac83b1bf835d/href">https://medium.com/media/89146ee567d81fe64859ac83b1bf835d/href</a></iframe><p>Create a file <strong>.travis.yml</strong> which contains the CI script to run in the build.</p><p>Add the following script:</p><pre>language: node_js<br>node_js:    <br>  - &quot;12&quot;<br>addons:<br>  chrome: stable<br>env:<br>  global:<br>    CODECOV_TOKEN=$CODECOV_TOKEN    <br>before_script:<br>  - npm install <br>jobs:<br>  include:<br>    - stage: Test coverage<br>      script:<br>        - ng test --browsers=ChromeHeadlessNoSandbox --codeCoverage=true --watch=false<br>      after_script:<br>         - if [[ &quot;$TRAVIS_TEST_RESULT&quot; == 0 ]]; then ./node_modules/.bin/codecov; fi</pre><p>Connect to your codecov account, search for your repository &amp; add it. You’ll see a token ( see image below), that’s the token Travis will use to upload your code coverage report to codecov.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*EcJvwPCS9WecEIjYXcqPmg.png" /></figure><p>Next, let’s add that token to Travis-CI. So, connect to your Travis-CI account, add the repository &amp; go to settings. Let’s add an environment variable <strong>CODECOV_TOKEN </strong>to the build &amp; let’s give it the value of the codecov token.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*LkoQTVU5z4evsEt-FV_3Vg.png" /></figure><p>And that’s it, all that’s left is to trigger the build manually or add a commit to see the coverage report of your project.</p><h3>Badge</h3><p>The last thing you probably want to to is to add the badge on your project:</p><p>On codecov, go to your project settings. Under ‘badge’ copy the markdown snippet &amp; paste it in your README.md</p><p>And That’s it. If you face any issue leave a comment or open an issue in the <a href="https://github.com/hamzahamidi/angular-app-codecov">Github repository</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fd30ccf38a31" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Optimize React web apps with webpack-bundle-analyzer]]></title>
            <link>https://medium.com/@hamidihamza/optimize-react-web-apps-with-webpack-bundle-analyzer-6ecb9f162c76?source=rss-6ab2ee4a00f1------2</link>
            <guid isPermaLink="false">https://medium.com/p/6ecb9f162c76</guid>
            <category><![CDATA[optimization]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[react]]></category>
            <category><![CDATA[reactjs]]></category>
            <category><![CDATA[webpack]]></category>
            <dc:creator><![CDATA[Hamza HAMIDI]]></dc:creator>
            <pubDate>Mon, 24 Jun 2019 14:59:12 GMT</pubDate>
            <atom:updated>2020-06-09T14:28:52.373Z</atom:updated>
            <content:encoded><![CDATA[<h3>Optimize your React application with webpack-bundle-analyzer</h3><p>The website speed makes the first impression about your business. Low website speed is one of the most frustrating things that will turn people off about your resource.</p><p>In this article we’ll only talk about <strong>React apps </strong>optimization.</p><h3>Webpack-bundle-analyzer speed optimization</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/908/1*dusVhPiL44VDoS4gJHMWSg.gif" /><figcaption><a href="https://github.com/webpack-contrib/webpack-bundle-analyzer">webpack-bundle-analyzer</a> demonstration</figcaption></figure><p><a href="https://github.com/webpack-contrib/webpack-bundle-analyzer"><strong>Webpack-bundle-analyzer</strong></a> is a <strong>webpack plugin</strong> which helps you visualize the size of your bundles with an interactive zoom-able tree-map.</p><p><a href="https://github.com/webpack-contrib/webpack-bundle-analyzer"><strong>Webpack-bundle-analyzer</strong></a> helps you:</p><ol><li>Explore the content of your bundles.</li><li>Find out the biggest modules in your bundles.</li><li>Find out unused/unwanted modules.</li></ol><h3>Adding webpack-bundle-analyzer to <a href="https://github.com/facebook/create-react-app">create-react-app</a> 1</h3><p>To use <a href="https://github.com/webpack-contrib/webpack-bundle-analyzer"><strong>Webpack-bundle-analyzer</strong></a><strong> </strong>we need first to install <strong>webpack-bundle-analyzer:</strong></p><pre>npm i -D webpack-bundle-analyzer<br># OR<br>yarn add -D webpack-bundle-analyzer</pre><p>Then, let’s create a file <strong>analyse.js </strong>at the root of the repository with the following content:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c5b1bcba0c50f1bd677bb4576d755172/href">https://medium.com/media/c5b1bcba0c50f1bd677bb4576d755172/href</a></iframe><p>You can now test your little script with just running the command:</p><pre>node analyse.js</pre><p>Let’s make it more sophisticated &amp; add a script entry to our <strong>package.json. </strong>Under scripts add the following line:</p><pre>“scripts”: {<br>   ...</pre><pre>   “analyse”: “node analyse.js”,</pre><pre>   ...</pre><pre>},</pre><p>Now, you can run <strong>webpack-bundle-analyzer</strong> with just <strong>npm run analyse </strong>Or <strong>yarn analyse .</strong></p><h3>Adding webpack-bundle-analyzer to create-react-app 2 &amp; 3</h3><p><strong>create-react-app 2 &amp; 3</strong> are using a different configuration of <strong>webpack</strong> than the first version. So, we need to change a little the script we used above:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/fc4b406e7623af31d0d823c162273f81/href">https://medium.com/media/fc4b406e7623af31d0d823c162273f81/href</a></iframe><p>You can also add the analyse script entry in your <strong>package.json.</strong></p><p>And That’s it. If you face any issue leave a comment or open an issue in this <a href="https://github.com/hamzahamidi/webpack-bundle-analyzer-react">repository</a>.</p><p>links:</p><ul><li><a href="http://www.hamidihamza.com">Portfolio</a></li><li><a href="https://github.com/hamzahamidi">Github</a></li><li><a href="https://twitter.com/hamzahamidii">Twitter</a></li></ul><h4>👉 Don’t forget to clap if you like the post</h4><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6ecb9f162c76" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Deploy Ionic application in GitHub using Travis-CI]]></title>
            <link>https://medium.com/@hamidihamza/ionic-project-continuous-integration-with-travis-for-gh-pages-3275edaac6a0?source=rss-6ab2ee4a00f1------2</link>
            <guid isPermaLink="false">https://medium.com/p/3275edaac6a0</guid>
            <category><![CDATA[github]]></category>
            <category><![CDATA[github-pages]]></category>
            <category><![CDATA[ionic]]></category>
            <category><![CDATA[travis-ci]]></category>
            <category><![CDATA[continuous-integration]]></category>
            <dc:creator><![CDATA[Hamza HAMIDI]]></dc:creator>
            <pubDate>Sat, 03 Mar 2018 21:02:29 GMT</pubDate>
            <atom:updated>2020-03-29T22:44:55.024Z</atom:updated>
            <content:encoded><![CDATA[<p>In this article, I’m going to share my experience with setting up Continuous Integration with Travis for an Ionic 2/3 project.</p><p>Before starting, I’m assuming you’re familiar with Ionic &amp; Ionic CLI (just the basic commands to start a project).</p><p>Let’s start by creating a simple ionic ionic project from the blank template.</p><pre>$ ionic start ionic-travis-gh-pages blank</pre><p>Now let’s put the project in GitHub. Create a new project , I chose ionic-travis-gh-pages. Then, let’s push our repository from the command line (Just the follow the instructions in GitHub).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/840/1*TRtV8qnPweOTEh2t875iJQ.png" /></figure><p>In my case, this what I’ve done:</p><pre>$ cd ionic-travis-gh-pages<br>$ git remote add origin <a href="https://github.com/hamzahamidi/ionic-travis-gh-pages.git">https://github.com/hamzahamidi/ionic-travis-gh-pages.git</a><br>$ git push -u origin master</pre><p>Before we move on to Travis-CI, we need to do generate a token for Travis to give it the access to our public repository. So, go to <a href="https://github.com/settings/tokens"><strong>Personal access tokens (just follow the link)</strong></a><strong>.</strong></p><p>Click on generate a new token: give a description to the token, you can choose whatever you want, I chose travis-token. Then click on <strong>public_repo </strong>in<strong> repo.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Nj6kh6DpipI4SCgoGu1VZA.png" /></figure><p><strong>Just make sure to copy your new personal access token because you won’t be able to see it again!</strong></p><p>Just store the token somewhere else we’ll need it once we set up the project in Travis.</p><p>Let’s move on to create a Travis account. Follow this <a href="https://travis-ci.org/">link</a>.</p><p>You need to go now to your <a href="https://travis-ci.org/profile">profile</a> &amp; click on the button <strong>sync account (check the image below) </strong>so that you<strong> </strong>synchronize your GitHub account with Travis.</p><p>Down below, you have a list of your public GitHub repositories. Search for the ionic project we just created.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/737/1*jALexgk_3HV6EJsE01aYeA.png" /></figure><p>Click on the ionic project &amp; go to its settings. Now, in the section <strong>Environment Variables, </strong>add a new variable call it<strong> GITHUB_TOKEN </strong>&amp; in the value give it the token we generated before in <strong>github Personal access tokens</strong> (check the image below).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/977/1*u3LA2mWX6Wuz6USydsPl6A.png" /></figure><p>In the root of your project create file<strong> .travis.yml </strong>&amp; copy the following content:</p><pre>language: node_js<br>node_js:<br> — “8.9.4”</pre><pre>branches:<br> only:<br> — master</pre><pre>before_script:<br> — npm install -g ionic<br> — npm ci </pre><pre>script:<br> — ionic build --prod -- --base-href ./</pre><pre>deploy:<br> provider: pages<br> skip-cleanup: true<br> github-token: $GITHUB_TOKEN <br> keep-history: true<br> on:<br>   branch: master<br> local_dir: www</pre><p>I’ll quickly summarize these configurations.</p><p><strong>branches:only:</strong> means the branches where you want to run the builds. Here I only chose the master branch.</p><p><strong>before_script:</strong> These are the commands that run before the build step. Here I just install ionic&amp; the dependencies of the project.</p><p><strong>script:</strong> The build step where we generate a production build of the application. Here we generate the build for the web application.</p><p>For more information <a href="https://docs.travis-ci.com/user/deployment/pages/">the doc</a> is the best place.</p><p>Now we commit the changes &amp; push them the repository:</p><pre>$ git add .travis.yml<br>$ git commit -m &quot;ci: Add Travis-CI&quot; <br>$ git push origin master</pre><p>Now, go to your <a href="https://travis-ci.org/profile"><strong>Travis profile</strong></a><strong>, </strong>Click on the<strong> Sync account button </strong>&amp; activate the builds in the ionic project (just turn the switch on). The build we’ll trigger automatically, if not just trigger it manually with button inside more options.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/974/1*avdWSfQFX4DOnUh5RJ4VBA.png" /></figure><p>If the build passes, go to your GitHub repository settings. Under GitHub Pages choose the branch where you want to deploy from &amp; choose gh-pages (check the image below).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/857/1*2TT-MkFhv-nzRjA-aGHrFQ.png" /></figure><p>Here’s the link of my Github <a href="https://github.com/hamzahamidi/ionic-travis-gh-pages">project</a>.</p><h3>links:</h3><ul><li><a href="http://www.hamidihamza.com">Portfolio</a></li><li><a href="https://github.com/hamzahamidi">GitHub</a></li><li><a href="https://twitter.com/hamzahamidii">Twitter</a></li></ul><h4>👉 Don’t forget to clap if you like the post</h4><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3275edaac6a0" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Theming your Angular application with Bootstrap SASS]]></title>
            <link>https://medium.com/@hamidihamza/theming-your-angular-application-with-bootstrap-sass-79b4127fce61?source=rss-6ab2ee4a00f1------2</link>
            <guid isPermaLink="false">https://medium.com/p/79b4127fce61</guid>
            <category><![CDATA[bootstrap]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[bootstrap-4]]></category>
            <category><![CDATA[angular]]></category>
            <category><![CDATA[sass]]></category>
            <dc:creator><![CDATA[Hamza HAMIDI]]></dc:creator>
            <pubDate>Sun, 17 Dec 2017 19:36:10 GMT</pubDate>
            <atom:updated>2018-03-03T20:58:43.023Z</atom:updated>
            <content:encoded><![CDATA[<p>Bootstrap is the most popular HTML, CSS, and JavaScript framework for developing responsive, mobile-first web sites.Bootstrap is completely free to download and use. It’s basically used everywhere in the web!</p><p>What I’m going to show you in this article is how to customize your bootstrap your liking!</p><p>Now, I know you can find multiple Bootstrap themes where the only work you have to do is to download the customized version. Like for example Bootswatch (<a href="https://bootswatch.com/">https://bootswatch.com/</a>).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xqtWCd-azz2MWlJE85rDog.png" /></figure><p>Yes, It’s much easier to use. All you have to do is to simply download the CSS file and replace the one in Bootstrap. But in case of you to create your own theme &amp; use it in Angular project, follow these steps:</p><h3>Getting Started</h3><p>Create a new project and navigate into the project:</p><pre>ng new my-app --style=scss<br>cd my-app</pre><h4>Install Bootstrap</h4><pre># version 3.x<br>npm install bootstrap-sass --save<br><br># version 4.x<br>npm install bootstrap@next --save</pre><h4>Configuring Project</h4><p>Create an empty file _variables.scss in src/.</p><p>If you are using bootstrap-sass, add the following to _variables.scss:</p><pre>$icon-font-path: &#39;../node_modules/bootstrap-sass/assets/fonts/bootstrap/&#39;;</pre><p>In styles.scss add the following:</p><pre>// version 3<br>@import &#39;variables&#39;;<br>@import &#39;../node_modules/bootstrap-sass/assets/stylesheets/_bootstrap&#39;;</pre><pre>// version 4<br>@import &#39;variables&#39;;<br>@import &#39;../node_modules/bootstrap/scss/bootstrap&#39;;</pre><h4>Testing Project</h4><p>Now to test if your changes are taking effect: open app.component.html and add the following markup:</p><pre>&lt;button class=&quot;btn btn-primary&quot;&gt;Test&lt;/button&gt;</pre><p>Run ng serve to run your application. In your browser navigate to the application localhost:4200. Open _variables.scss and add the following:</p><pre>// If bootstrap version 3<br>$brand-primary: red;</pre><pre>// If bootstrap version 4<br>$primary: red;</pre><p>Return to the browser to see the font color changed. The primary color is supposed to be <strong>Blue</strong>. With our change the color of primary becomes now <strong>Red.</strong></p><p>To see the list of variables of Bootstrap. Here’s the list for <a href="http://getbootstrap.com/docs/3.3/customize/">version 3 </a>&amp; Here’s the link of instructions for <a href="https://v4-alpha.getbootstrap.com/getting-started/options/">Version 4</a>.</p><p>links:</p><ul><li><a href="http://www.hamidihamza.com">Portfolio</a></li><li><a href="https://github.com/hamzahamidi">Github</a></li><li><a href="https://twitter.com/hamzahamidii">Twitter</a></li></ul><h4>👉 Don’t forget to clap if you like the post</h4><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=79b4127fce61" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>