<?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: Abdessalam Benharira</title>
    <description>The latest articles on Forem by Abdessalam Benharira (@itsabdessalam).</description>
    <link>https://forem.com/itsabdessalam</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%2F86115%2Ff090258e-4060-4bf8-b891-cafa3340f871.png</url>
      <title>Forem: Abdessalam Benharira</title>
      <link>https://forem.com/itsabdessalam</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/itsabdessalam"/>
    <language>en</language>
    <item>
      <title>Protect access to a Netlify site via GitHub Actions</title>
      <dc:creator>Abdessalam Benharira</dc:creator>
      <pubDate>Mon, 17 Aug 2020 06:51:00 +0000</pubDate>
      <link>https://forem.com/itsabdessalam/password-protect-your-site-with-netlify-and-github-actions-1aah</link>
      <guid>https://forem.com/itsabdessalam/password-protect-your-site-with-netlify-and-github-actions-1aah</guid>
      <description>&lt;p&gt;Recently I’ve published an article on &lt;a href="https://abdessalam.dev/blog/ci-cd-github-actions-netlify"&gt;how to set up CI/CD with GitHub Actions and Netlify&lt;/a&gt;. When working on my last project I needed to password protect develop and staging sites. Netlify already has solutions for access control like OAuth or password/JWT secret restriction or even through &lt;code&gt;_headers&lt;/code&gt; file with basic authentication. But what I wanted was to password protect my sites at the beginning  with a single access and then add other accesses on need and maybe only for some routes, all managed through GitHub actions and deployed for each site.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwcb4kes2kzv9p6urru2y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwcb4kes2kzv9p6urru2y.png" alt="Netlify access control" width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Password protection only works with the paid Netlify plans&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Selective protection with basic authentication met my needs very well. The only problem is that at the beginning I had to push &lt;code&gt;_headers&lt;/code&gt; file on GitHub with credentials, which did not seem very clean to me. So I thought it would be better to use GitHub environment variables in &lt;code&gt;_headers&lt;/code&gt; file. The idea is to push this file without any credentials but simply a string that will be replaced. Here are some steps&lt;/p&gt;

&lt;p&gt;1- Push &lt;code&gt;_headers&lt;/code&gt; file with Basic-Auth followed by a string that will be replaced.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* 
 Basic-Auth: SITE_ACCESS_USER:SITE_ACCESS_PASSWORD 
    X-Frame-Options: DENY 
    X-XSS-Protection: 1; mode=block 
    Referrer-Policy: no-referrer 
    X-Content-Type-Options: nosniff
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What will interest us is &lt;code&gt;Basic-Auth: SITE_ACCESS_USER:SITE_ACCESS_PASSWORD&lt;/code&gt;. You can also notice that with &lt;code&gt;/*&lt;/code&gt; we will password protect all website routes. We could also set it only for specific routes and this is the advantage of this solution.&lt;/p&gt;

&lt;p&gt;2- In your Github secrets add &lt;code&gt;SITE_ACCESS_USER&lt;/code&gt; and &lt;code&gt;SITE_ACCESS_PASSWORD&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbwjo471ba4wvkc3fxjzo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbwjo471ba4wvkc3fxjzo.png" alt="GitHub secrets" width="800" height="98"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3- In your workflow add a &lt;code&gt;Setup Netlify access&lt;/code&gt; step in which we have to retrieve &lt;code&gt;SITE_ACCESS_USER&lt;/code&gt; and &lt;code&gt;SITE_ACCESS_PASSWORD&lt;/code&gt; variables through GitHub secrets. Then we try to find &lt;code&gt;SITE_ACCESS_USER:SITE_ACCESS_PASSWORD&lt;/code&gt; matching pattern and replace it with our credentials with &lt;code&gt;sed&lt;/code&gt; command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- name: Setup Netlify access
  env:
    SITE_ACCESS_USER: ${{ secrets.SITE_ACCESS_USER }}
    SITE_ACCESS_PASSWORD: ${{ secrets.SITE_ACCESS_PASSWORD }}
  shell: bash
  run: sed -i.bak "s/SITE_ACCESS_USER:SITE_ACCESS_PASSWORD/$SITE_ACCESS_USER:$SITE_ACCESS_PASSWORD/g" $(pwd)/public/_headers &amp;amp;&amp;amp; rm $(pwd)/public/_headers.bak
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Voilà 🎉&lt;/p&gt;

&lt;p&gt;Here is the full code for the GitHub workflow: &lt;a href="https://gist.github.com/itsabdessalam/ee5dfe83d832bf5015b096016cc923f4"&gt;https://gist.github.com/itsabdessalam/ee5dfe83d832bf5015b096016cc923f4&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Actions deploy preview&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4tmsmdcth4pxh8l4bjc3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4tmsmdcth4pxh8l4bjc3.png" alt="GitHub Actions deploy preview" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live password protected site&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fv4k0ov8ng8hsq1g0rj3l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fv4k0ov8ng8hsq1g0rj3l.png" alt="Live password protection site" width="800" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Useful links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.netlify.com/visitor-access/password-protection"&gt;Netlify password protection&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.netlify.com/routing/headers/#syntax-for-the-headers-file"&gt;Netlify custom headers&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication#Basic_authentication_scheme"&gt;Basic authentication&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.github.com/en/actions"&gt;GitHub Actions&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/the-basics-of-using-the-sed-stream-editor-to-manipulate-text-in-linux"&gt;sed command&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before you leave…&lt;br&gt;
Thanks for reading! 😊&lt;/p&gt;

</description>
      <category>github</category>
      <category>netlify</category>
      <category>ci</category>
      <category>cd</category>
    </item>
    <item>
      <title>Get current device type with JavaScript</title>
      <dc:creator>Abdessalam Benharira</dc:creator>
      <pubDate>Wed, 22 Apr 2020 06:35:55 +0000</pubDate>
      <link>https://forem.com/itsabdessalam/detect-current-device-type-with-javascript-490j</link>
      <guid>https://forem.com/itsabdessalam/detect-current-device-type-with-javascript-490j</guid>
      <description>&lt;p&gt;When setting up some scripts, we need to know the current device type. Just take the example of analytics scripts or scripts that need to be loaded depending on the device. We will see through this article how to get the current device type with JavaScript using userAgent.&lt;/p&gt;

&lt;h2&gt;
  
  
  userAgent
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent"&gt;userAgent&lt;/a&gt; is a property of the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/navigator"&gt;navigator&lt;/a&gt; object that indicates the user agent which the browser provides in HTTP headers.&lt;/p&gt;

&lt;p&gt;With the value of this property we can test with a Regex if it contains some elements or not and then get the type of the device, tablet, mobile otherwise desktop. We can combine this test with the width of the current window.&lt;/p&gt;

&lt;p&gt;Here is a function to get the device type&lt;br&gt;
&lt;/p&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;getDeviceType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ua&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;navigator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;userAgent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;tablet|ipad|playbook|silk&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="sr"&gt;|&lt;/span&gt;&lt;span class="se"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;android&lt;/span&gt;&lt;span class="se"&gt;(?!&lt;/span&gt;&lt;span class="sr"&gt;.*mobi&lt;/span&gt;&lt;span class="se"&gt;))&lt;/span&gt;&lt;span class="sr"&gt;/i&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ua&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;tablet&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;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sr"&gt;/Mobile|iP&lt;/span&gt;&lt;span class="se"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;hone|od&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="sr"&gt;|Android|BlackBerry|IEMobile|Kindle|Silk-Accelerated|&lt;/span&gt;&lt;span class="se"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;hpw|web&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="sr"&gt;OS|Opera M&lt;/span&gt;&lt;span class="se"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;obi|ini&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="nx"&gt;ua&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mobile&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;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;desktop&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;blockquote&gt;
&lt;p&gt;userAgent cannot always give us the real device because it can be replaced easily, for example when we use bots the real device can be completely different from what is provided. And the same thing for browser infos. In this case, it will be better to check the availability or unavailability of some methods.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Let's try this function
&lt;/h2&gt;

&lt;h3&gt;
  
  
  desktop
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fz6kmymvdj2xob4o31dks.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fz6kmymvdj2xob4o31dks.png" alt="desktop device detection javascript" width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  tablet
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fc30rahk22r21nejl2b3u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fc30rahk22r21nejl2b3u.png" alt="tablet device detection javascript" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  mobile
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwfx0znbygzbtpowcg97v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwfx0znbygzbtpowcg97v.png" alt="mobile device detection javascript" width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Useful links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/navigator"&gt;navigator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent"&gt;userAgent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.whatismybrowser.com/useragents/explore"&gt;List of user agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/RegExp"&gt;RegExp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/RegExp/test"&gt;test()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://regex101.com"&gt;regex101&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before you leave…&lt;br&gt;
Thanks for reading! 😊&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Work on your personal branding as a developer</title>
      <dc:creator>Abdessalam Benharira</dc:creator>
      <pubDate>Wed, 08 Apr 2020 07:16:00 +0000</pubDate>
      <link>https://forem.com/itsabdessalam/work-on-your-personal-branding-as-a-developer-20pm</link>
      <guid>https://forem.com/itsabdessalam/work-on-your-personal-branding-as-a-developer-20pm</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Personal branding has become very important both personally and professionally in order to highlight your personality, your values ​​and your skills. This approach seems very important to recruiters since it allows them to differentiate you from your competitors. We will see through this article "What is personal branding and how to work on it as a developer?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is personal branding?
&lt;/h2&gt;

&lt;p&gt;Personal branding or personal marketing is an approach which consists in enhancing your image and skills through the marketing techniques usually used to promote a brand. Your reputation, your credibility, your career, your professionalism are all part of personal branding. To summarize well and take up what Jeff Bezos, the CEO of Amazon says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Your brand is what people say about you when you’re not in the room&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Build your personal branding
&lt;/h2&gt;

&lt;p&gt;I will list some points that I think are important in the development of personal branding as a developer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Develop your brand identity around a field that you master
&lt;/h3&gt;

&lt;p&gt;The main idea is to position yourself in a field, but above all it is a question of defining what you like to do the most and what you are good at. As an expert in your field, you will be able to advise and provide your opinion on the various subjects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Write some content on a blog
&lt;/h3&gt;

&lt;p&gt;In my opinion, every developer should have a blog. There are several reasons for this. A blog can be a source of leads and the place where you will have an audience interested in your content. A blog allows you to express your ideas, to show your work, your discoveries and your expertise. It also allows you to gain visibility by appearing in the first google results if the content is relevant and responds to a certain request.&lt;/p&gt;

&lt;h3&gt;
  
  
  Be present on social networks
&lt;/h3&gt;

&lt;p&gt;When we want to learn more about a person, a company or a brand, the first thing that we do spontaneously is to go on the Internet and try to find informations, we talk about e-reputation. The e-reputation brings together several points, we will mainly focus in social networks. In personal branding, it is important to consider social networks, it is through this that you publish content every week, every month or simply on a regular rhythm. In addition, by subscribing to some accounts, you will always be aware of news related to your field (technology watch). Also a detail and not the least, it is thanks to social networks that you convey the image you want and therefore have an effect on the way you are perceived by others. To be as close as possible to your community, it is really important to focus on sharing, answering questions and comments, in other words, interacting with others.&lt;/p&gt;

&lt;p&gt;The main networks I use for example are Twitter, LinkedIn, Medium, Stack Overflow, Instagram, DEV Community, Product Hunt.&lt;/p&gt;

&lt;h3&gt;
  
  
  Attend talks and meetups
&lt;/h3&gt;

&lt;p&gt;Whether it is talks or meetups on soft skills, good practices, new framework... These events are very interesting since they are a very good opportunity to learn about different subjects and get to know people with the same interest as you and with different technical backgrounds. A very good opportunity to develop your personal or professional network.&lt;/p&gt;

&lt;h3&gt;
  
  
  Promote and discuss about your work
&lt;/h3&gt;

&lt;p&gt;You have to try to be as active as possible on GitHub, CodePen, Dribbble or even your own portfolio by working on side projects, which will be useful for yourself and for others. The idea is to see new concepts and the constraints that a project can impose during its development. You can also contribute to open source projects and help other developers by sharing your knowledge. We must not forget that teaching others is an effective learning strategy to strengthen or deepen some acquired knowledges or even new things.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do hackathons and code challenges
&lt;/h3&gt;

&lt;p&gt;A hackathon is an event that brings together teams (developers, UI/UX designers, marketers...) where the goal is to develop a project, which is generally an application, a software, a platform answering a specific problem... This project must be developed over a given period, a day, a night or a weekend. For code challenges, it is the same principle but the idea is most often to solve exercises online. These two types of challenge are a good way to learn, to make yourself known to other developers and to establish again a personal or professional network with which you will maybe work with in the future.&lt;/p&gt;

&lt;h3&gt;
  
  
  Be a brand or company ambassador
&lt;/h3&gt;

&lt;p&gt;To make it simple, in marketing, an ambassador is a person who promotes a brand, a product or a company spontaneously. For my part, I was ambassador for Orange Start-up/Viva Technology for two years and this allowed me to have open doors to several opportunities. Being an ambassador is a real plus that clearly boosts your CV. This shows that you have taken the time for these types of initiatives and acquired some soft skills. An important element to stand out during a job interview.&lt;/p&gt;

&lt;p&gt;Before you leave… &lt;br&gt;
Thanks for reading! 😊&lt;/p&gt;

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