<?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[Mike's stuff]]></title><description><![CDATA[Web developer in progress. 🤓
Salsa and Bachata Lover. 🕺🏻
Passionate about technology. 🖥
🌽 🇲🇽]]></description><link>https://techblog.miguelhernandezmx.com</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1644907750906/QYZq9mA3k.png</url><title>Mike&apos;s stuff</title><link>https://techblog.miguelhernandezmx.com</link></image><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Apr 2026 07:33:25 GMT</lastBuildDate><atom:link href="https://techblog.miguelhernandezmx.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How to create an animated sphere for your website]]></title><description><![CDATA[I've seen some websites using an animated sphere like the following one: 

So I made my own research and I bring you a tutorial on how to create one of this spheres. You can implement it either using Vanilla JavaScript or using React.JS. 
I want to c...]]></description><link>https://techblog.miguelhernandezmx.com/how-to-create-an-animated-sphere-for-your-website</link><guid isPermaLink="true">https://techblog.miguelhernandezmx.com/how-to-create-an-animated-sphere-for-your-website</guid><category><![CDATA[React]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[CSS Animation]]></category><category><![CDATA[sphere]]></category><category><![CDATA[animated sphere]]></category><dc:creator><![CDATA[Miguel Hernández]]></dc:creator><pubDate>Wed, 24 Aug 2022 01:34:01 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1661305013867/cBF6fBz5o.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I've seen some websites using an animated sphere like the following one: </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1660718373576/vB9XcxYzc.gif" alt="sphere.gif" /></p>
<p>So I made my own research and I bring you a tutorial on how to create one of this spheres. You can implement it either using Vanilla JavaScript or using React.JS. </p>
<p>I want to clarify that I didn't write the code for this effect. I just implement it in my site.  The original code is from TagCloud and was written by Cong Ming. Please visit and star his project on Github if you find it useful. </p>
<p>Now... let's get started. </p>
<h1 id="heading-rotating-sphere-with-vanilla-js-and-plain-html">Rotating sphere with vanilla JS and plain HTML</h1>
<h2 id="heading-html">HTML</h2>
<ol>
<li><p>Create a container to hold the TagCloud</p>
<pre><code> <span class="hljs-operator">&lt;</span>div class<span class="hljs-operator">=</span><span class="hljs-string">"content"</span><span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>div<span class="hljs-operator">&gt;</span>
</code></pre></li>
<li><p>Import TagCloud.js script in the document</p>
<pre><code> <span class="hljs-operator">&lt;</span>script src<span class="hljs-operator">=</span><span class="hljs-string">"https://cdn.jsdelivr.net/npm/TagCloud@2.2.0/dist/TagCloud.min.js"</span><span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>script<span class="hljs-operator">&gt;</span>
</code></pre></li>
</ol>
<p>And that's all about the HTML. </p>
<h2 id="heading-css">CSS</h2>
<p>You can use Raw CSS to customize how the text in the sphere looks like:</p>
<pre><code><span class="hljs-selector-class">.tagcloud</span> {
    <span class="hljs-attribute">font-family</span>: <span class="hljs-string">'Poppins'</span>, sans-serif;  
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">20px</span>;
    <span class="hljs-attribute">font-weight</span>: <span class="hljs-number">650</span>;
    <span class="hljs-attribute">margin-left</span>: <span class="hljs-number">30%</span>;
  }
  <span class="hljs-selector-class">.tagcloud--item</span><span class="hljs-selector-pseudo">:hover</span> {
    <span class="hljs-attribute">color</span>: <span class="hljs-number">#36454F</span>;
  }
</code></pre><h2 id="heading-javascript">JavaScript</h2>
<ol>
<li><p>Define the tags you want to display. Use a JS array:</p>
<pre><code><span class="hljs-keyword">const</span> myTags = [
 <span class="hljs-string">'JavaScript'</span>, <span class="hljs-string">'CSS'</span>, <span class="hljs-string">'HTML'</span>,
 <span class="hljs-string">'C'</span>, <span class="hljs-string">'C++'</span>, <span class="hljs-string">'React'</span>,
 <span class="hljs-string">'Python'</span>, <span class="hljs-string">'Java'</span>, <span class="hljs-string">'git'</span>,
 <span class="hljs-string">'django'</span>, <span class="hljs-string">'Node.js'</span>, <span class="hljs-string">'OpenCV'</span>,
 <span class="hljs-string">'GCP'</span>, <span class="hljs-string">'MySQL'</span>, <span class="hljs-string">'jQuery'</span>,
];
</code></pre></li>
<li><p>Render a default TagCloud :</p>
<pre><code><span class="hljs-keyword">var</span> tagCloud <span class="hljs-operator">=</span> TagCloud(<span class="hljs-string">'.content'</span>, myTags);
</code></pre></li>
<li><p>If you need to, config the TagCloud behavior this way:</p>
</li>
</ol>
<pre><code><span class="hljs-keyword">var</span> tagCloud <span class="hljs-operator">=</span> TagCloud(<span class="hljs-string">'.content'</span>, myTags,{

  <span class="hljs-comment">// radius in px</span>
  radius: <span class="hljs-number">300</span>,

  <span class="hljs-comment">// animation speed</span>
  <span class="hljs-comment">// slow, normal, fast</span>
  maxSpeed: <span class="hljs-string">'fast'</span>,
  initSpeed: <span class="hljs-string">'fast'</span>,

  <span class="hljs-comment">// 0 = top</span>
  <span class="hljs-comment">// 90 = left</span>
  <span class="hljs-comment">// 135 = right-bottom</span>
  direction: <span class="hljs-number">135</span>,

  <span class="hljs-comment">// interact with cursor move on mouse out</span>
  keep: <span class="hljs-literal">true</span>

});
</code></pre><p>The result should be something like this:</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://codepen.io/miguelhernandezk/pen/wvmZJmm">https://codepen.io/miguelhernandezk/pen/wvmZJmm</a></div>
<h1 id="heading-rotating-sphere-with-reactjs">Rotating sphere with React.JS.</h1>
<p>You can use TagCloud by installing it into your project using any of the following options:</p>
<ol>
<li><code>npm install TagCloud</code></li>
<li>import directly from https://cdn.skypack.dev/TagCloud@2.2.0</li>
</ol>
<p>In this tutorial we are going to do it using the direct link.</p>
<p>For HTML, you only need an element for the React app to render:</p>
<pre><code><span class="hljs-operator">&lt;</span>div id<span class="hljs-operator">=</span><span class="hljs-string">"root"</span><span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>div<span class="hljs-operator">&gt;</span>
</code></pre><h2 id="heading-css">CSS</h2>
<p>Again, you can customize your CSS the same way we did as in plain HTML. </p>
<pre><code><span class="hljs-keyword">@import</span> url(<span class="hljs-string">'https://fonts.googleapis.com/css2?family=Poppins&amp;display=swap'</span>);

<span class="hljs-selector-tag">body</span> {
  <span class="hljs-attribute">background-color</span>: <span class="hljs-number">#111827</span>;
}

<span class="hljs-selector-class">.tagcloud</span> {
    <span class="hljs-attribute">font-family</span>: <span class="hljs-string">'Poppins'</span>, sans-serif;  
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">20px</span>;
    <span class="hljs-attribute">margin</span>: auto;
    <span class="hljs-attribute">width</span>: <span class="hljs-number">50%</span>;
    <span class="hljs-attribute">color</span>: <span class="hljs-number">#79f7d9</span>;
  }
  <span class="hljs-selector-class">.tagcloud--item</span><span class="hljs-selector-pseudo">:hover</span> {
    <span class="hljs-attribute">color</span>: <span class="hljs-number">#e94152</span>;
  }
</code></pre><h2 id="heading-javascript">JavaScript.</h2>
<p>You need to create your component and use the TagCloud inside a useEffect hook (since we only need the sphere to render once):</p>
<p>There is a problem when using React useEffect and React.StrictMode at the same time. Depending on your React version, useEffect will run twice (thus, generating two spheres). I think this happens in version 17 and above. Anyway, this double execution will only happen in development mode. Please read the doc in order to know more about why this happens. </p>
<p>However, if this is the case for you, and React.useEffect runs twice, you can avoid that behavior by using useRef hook. </p>
<p>This is how your componen should look like:</p>
<pre><code><span class="hljs-keyword">import</span> <span class="hljs-title">React</span>, { <span class="hljs-title">useRef</span> } <span class="hljs-title"><span class="hljs-keyword">from</span></span> <span class="hljs-string">"https://cdn.skypack.dev/react@17.0.1"</span>;
<span class="hljs-keyword">import</span> <span class="hljs-title">ReactDOM</span> <span class="hljs-title"><span class="hljs-keyword">from</span></span> <span class="hljs-string">"https://cdn.skypack.dev/react-dom@17.0.1"</span>;
<span class="hljs-comment">// If you install TagCloud via npm:</span>
<span class="hljs-comment">//import TagCloud from "TagCloud";</span>
<span class="hljs-keyword">import</span> <span class="hljs-title">TagCloud</span> <span class="hljs-title"><span class="hljs-keyword">from</span></span> <span class="hljs-string">"https://cdn.skypack.dev/TagCloud@2.2.0"</span>;

const App <span class="hljs-operator">=</span> () <span class="hljs-operator">=</span><span class="hljs-operator">&gt;</span> {
  const sphereMounted <span class="hljs-operator">=</span> useRef(<span class="hljs-literal">false</span>); <span class="hljs-comment">// useRef hook: Avoids behavior where useeffect runs twice in development mode. </span>
  React.useEffect(() <span class="hljs-operator">=</span><span class="hljs-operator">&gt;</span> {
        <span class="hljs-keyword">if</span>(sphereMounted.current <span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-literal">false</span>){
 <span class="hljs-comment">// Again, define your tags  </span>
            const myTags <span class="hljs-operator">=</span> [
                <span class="hljs-string">'JavaScript'</span>, <span class="hljs-string">'CSS'</span>, <span class="hljs-string">'HTML'</span>,
                <span class="hljs-string">'Node.js'</span>, <span class="hljs-string">'C++'</span>, <span class="hljs-string">'React'</span>,
                <span class="hljs-string">'Python'</span>, <span class="hljs-string">'Jest'</span>, <span class="hljs-string">'git'</span>,
                <span class="hljs-string">'JSON'</span>, <span class="hljs-string">'Webpack'</span>, <span class="hljs-string">'ES5/ES6'</span>,
                <span class="hljs-string">'Express'</span>, <span class="hljs-string">'MongoDB'</span>, <span class="hljs-string">'github'</span>,
            ];
            <span class="hljs-comment">// Render a tagCloud with custom configuration</span>
            <span class="hljs-keyword">var</span> tagCloud <span class="hljs-operator">=</span> TagCloud(<span class="hljs-string">'.sphere'</span>, myTags,{

                <span class="hljs-comment">// radius in px</span>
                radius: <span class="hljs-number">200</span>,

                <span class="hljs-comment">// animation speed</span>
                <span class="hljs-comment">// slow, normal, fast</span>
                maxSpeed: <span class="hljs-string">'fast'</span>,
                initSpeed: <span class="hljs-string">'fast'</span>,

                <span class="hljs-comment">// 0 = top</span>
                <span class="hljs-comment">// 90 = left</span>
                <span class="hljs-comment">// 135 = right-bottom</span>
                direction: <span class="hljs-number">135</span>,

                <span class="hljs-comment">// interact with cursor move on mouse out</span>
                keep: <span class="hljs-literal">true</span>,
            });
        }
        <span class="hljs-keyword">return</span> () <span class="hljs-operator">=</span><span class="hljs-operator">&gt;</span> sphereMounted.current <span class="hljs-operator">=</span> <span class="hljs-literal">true</span>; <span class="hljs-comment">// useRef </span>
    }, []);
<span class="hljs-comment">// This is what will render the tagcloud:</span>
  <span class="hljs-keyword">return</span>(
   <span class="hljs-operator">&lt;</span>span className<span class="hljs-operator">=</span><span class="hljs-string">"sphere"</span><span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>
  );
}

ReactDOM.render(<span class="hljs-operator">&lt;</span>App <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>,
document.getElementById(<span class="hljs-string">"root"</span>))
</code></pre><p>Result is this:</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://codepen.io/miguelhernandezk/pen/rNdbyRN">https://codepen.io/miguelhernandezk/pen/rNdbyRN</a></div>
<p>And that's all for today!
Hope you find it useful.</p>
]]></content:encoded></item><item><title><![CDATA[5 websites that made my life easier as a web developer]]></title><description><![CDATA[Hello. It's been a few months since I started my journey as a web developer. However, there are some webpages that have made my life easier. 
Today I want to share some of the webpages that have helped me through my journey as web developer. I hope y...]]></description><link>https://techblog.miguelhernandezmx.com/5-websites-that-made-my-life-easier-as-a-web-developer</link><guid isPermaLink="true">https://techblog.miguelhernandezmx.com/5-websites-that-made-my-life-easier-as-a-web-developer</guid><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Miguel Hernández]]></dc:creator><pubDate>Wed, 01 Jun 2022 02:38:30 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/npxXWgQ33ZQ/upload/v1654051100757/HHUAZd6Em.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello. It's been a few months since I started my journey as a web developer. However, there are some webpages that have made my life easier. </p>
<p>Today I want to share some of the webpages that have helped me through my journey as web developer. I hope you find them useful just like I do. </p>
<h1 id="heading-flexbox-froggyhttpsflexboxfroggycom"><a target="_blank" href="https://flexboxfroggy.com/">Flexbox Froggy</a></h1>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1654050676603/62qNvnEwb.png" alt="Captura de Pantalla 2022-05-31 a la(s) 9.04.41 p.m..png" /></p>
<p>This is an interactive web page designed to help you understand how "flexbox" in CSS works. </p>
<p>There are 24 different levels in which you have to help some froggies to get their lilypads. Depending on the code you write, the froggies will rearrange on the screen. If you do it right, every froggy will get to the right place. If not, you'll have to keep trying different values until you get it right. </p>
<p>This website has several languages to play and learn with and you can also change the difficulty if you think you are ready enough. </p>
<h1 id="heading-grid-gardenhttpscssgridgardencom"><a target="_blank" href="https://cssgridgarden.com/">Grid Garden</a></h1>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1654050686602/KrjSlhS5r.png" alt="Captura de Pantalla 2022-05-31 a la(s) 9.08.28 p.m..png" /></p>
<p>Similar to Flexbox Froggy, grid garden allows you to learn the grid property used in CSS. </p>
<p>There are 28 different levels in which you have to grow your carrot garden. Depending on the code you write, the "water" will be displayed in a different place. If you do it right, you will be able to water your carrots. </p>
<p>It also has different languages. However, I could not find an option to change the difficulty, though that option might unlock once you clear all levels. </p>
<h1 id="heading-css-referencehttpscssreferenceio"><a target="_blank" href="https://cssreference.io/">CSS Reference</a></h1>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1654050700896/rIOhrJ5qH.png" alt="Captura de Pantalla 2022-05-31 a la(s) 9.29.48 p.m..png" /></p>
<p>They describe themselves as a free visual guide to CSS. And they are. </p>
<p>On the main page you can find different CSS properties and where you can apply them. For example, the property "align-content" can only be used if you are working on a box with "flexbox<a class="user-mention" href="https://hashnode.com/@Display">Display</a></p>
<p>But if you go to the collections section, you'll find a really useful guide for animations, typography, etc.</p>
<h1 id="heading-html-referencehttpshtmlreferenceio"><a target="_blank" href="https://htmlreference.io/">HTML reference</a></h1>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1654050712187/e3tzLGGV6.png" alt="Captura de Pantalla 2022-05-31 a la(s) 9.29.35 p.m..png" /></p>
<p>Similar to CSS reference, this site will help you understand how the different HTML elements work. </p>
<p>On the main page, you can find the different HTML elements, their default display mode and the type of element they are. </p>
<p>If you go to the collections section, you can find easy examples of how  to implement each HTML tag. </p>
<h1 id="heading-html-color-codeshttpshtmlcolorcodescom"><a target="_blank" href="https://htmlcolorcodes.com/">HTML Color codes</a></h1>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1654050725187/CltFkZt1a.png" alt="Captura de Pantalla 2022-05-31 a la(s) 9.29.18 p.m..png" /></p>
<p>This is a website where you can easily pick a color you like and get the HEX code for that color. </p>
<p>Besides, when coding, you might have noticed that you can use some name for colors instead of an Hex code. For example: blue, yellow, pink, papayawhip, plum, etc. </p>
<p>In this site you can find the name for each color defined in HTML/CSS that you can use instead of writing the Hex code. </p>
<p>It's just amazing and really helpful when you need to use preset colors. </p>
]]></content:encoded></item><item><title><![CDATA[The definitive roadmap to become a Web Developer [part 1]]]></title><description><![CDATA[Why I created this roadmap
Hi everyone. It's been more than a month since I started my journey as a web developer. I think it's been relatively easy. But it was not always like this. Some months ago I tried to become a web developer but the results w...]]></description><link>https://techblog.miguelhernandezmx.com/the-definitive-roadmap-to-become-a-web-developer-part-1</link><guid isPermaLink="true">https://techblog.miguelhernandezmx.com/the-definitive-roadmap-to-become-a-web-developer-part-1</guid><category><![CDATA[Roadmap]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[HTML]]></category><category><![CDATA[CSS]]></category><category><![CDATA[JavaScript]]></category><dc:creator><![CDATA[Miguel Hernández]]></dc:creator><pubDate>Thu, 03 Mar 2022 02:40:48 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1646269917399/MYIVd8rcI.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-why-i-created-this-roadmap">Why I created this roadmap</h1>
<p>Hi everyone. It's been more than a month since I started my journey as a web developer. I think it's been relatively easy. But it was not always like this. Some months ago I tried to become a web developer but the results were totally different. </p>
<p>Why is that?</p>
<p>You know, when I gave it my first try, I didn't have a clear guidance. I just looked for some tutorials on Youtube. But most of them are incomplete or not consistent with the tools they use or the methodology they use in order to teach. </p>
<p>This makes it difficult to learn. One day I was writing my first html document and the next day I was styling it using CSS. And the following day I was using JavaScript to create some "cool" stuff. You might think this is great, and it would be, except for the fact that I didn't know the basics. </p>
<p>Although I was writing some JavaScript to modify the DOM, I didn't even know what DOM is. I didn't know what "Semantic HTML" is. I didn't know lots of things. And there I was... trying my best to become a developer. It was frustrating each time I wanted to do something cooler, but my limited knowledge didn't help me to do so. </p>
<p>I remember when I wanted to implement a button to play and pause a video, using JavaScript. First, I started by learning how to "write" a button in HTML. Then I had to learn how to link that button to a JavaScript code. I discovered something called "querySelector". And since I wanted to understand everything, I had to learn something about media elements. </p>
<p>At the time, I found some of this stuff really complex. That's why I quitted. </p>
<p>And I think that's why many people quit as well. </p>
<p>They don't have a clear guidance. They just learn what they think they must learn in order to create what they want to create. </p>
<p>And this is not a good methodology, because you might need some advanced knowledge. And if you don't have the basics, it will not only be frustrating, but time-consuming as well. </p>
<p>Now, in my second try, everything is different. I received help from some of my friends. And everything seems to be easier. </p>
<p>I don't want people to get frustrated at coding. </p>
<p>I don't want people to quit. </p>
<p>That's why I decided to create a roadmap. A roadmap which will be a guide to make your path smoother. </p>
<p>If you're already a developer, this might not be useful for you. But it might be for your friend, your partner, or you little brother. </p>
<h1 id="heading-the-roadmap-part-1">The roadmap part 1.</h1>
<p>The following roadmap is intended to be a guide for everyone who wants to become a web developer and has no idea about where to start. This is just the beginning (wait for the second part) but it is enough to get you started. </p>
<h2 id="heading-1-prework-choose-your-os-and-configure-your-computer-windows-linux-or-mac">1. Prework: Choose your OS and configure your computer (Windows, Linux or Mac)</h2>
<ol>
<li>What is a browser?</li>
<li>Browser and its devtools.</li>
<li>Install and customize your text editor (recommended: Visual Studio Code)</li>
<li>What is a Live Server and how to use it.</li>
<li>Installing Homebrew (or equivalent, depending on your OS) and NodeJS.</li>
<li>Basic Terminal commands</li>
<li>What is Git and Github?</li>
<li>Working with Git and Github: Commits, push and pull request, SSH and HTTPS keys, versions and conflicts. (I'll write a whole roadmap for Git and Github)</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645769234721/yCjSfHVdX.png" alt="windows_linux_mac.png" /></p>
<h2 id="heading-2-web-developer-fundamentals">2. Web developer fundamentals</h2>
<ol>
<li>Frontend definition</li>
<li>Backend definition</li>
<li>Full Stack definition</li>
<li>Static vs. Dynamic pages. </li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645769375718/dib9AOksY.jpeg" alt="frontend_backend.jpeg" /></p>
<h2 id="heading-3-html">3. HTML</h2>
<ol>
<li>Anatomy of a webpage: What is HTML?</li>
<li>Index file</li>
<li>Head tag and its content</li>
<li>Body tag and its content</li>
<li>Parts of an HTML tag</li>
<li>Semantic HTML</li>
<li>Basic HTML tags</li>
<li>Media tags: img, figure, video</li>
<li>Image formats: Lossy and lossless</li>
<li>Form tags: form, input, calendar, autocomplete, require, select.</li>
<li>Differences between "input type submit" and button tag.</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1646268460163/mFFnqYdAy.png" alt="html5.png" /></p>
<h2 id="heading-4-css">4. CSS</h2>
<ol>
<li>What is CSS?</li>
<li>Using CSS: tag, selector, class and ID.</li>
<li>Pseudo-class and pseudo-elements.</li>
<li>Anatomy of a "CSS rule"</li>
<li>Box model</li>
<li>CSS Inheritance</li>
<li>CSS specificity</li>
<li>CSS combinators</li>
<li>Measurements: Absolute measurements, EM, REM</li>
<li>Position</li>
<li>Display</li>
<li>Display flex</li>
<li>Display grid</li>
<li>Variables</li>
<li>Webfonts</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1646268480738/k-14GFXq_.png" alt="css_3_logo.png" /></p>
<h2 id="heading-5-responsive-design">5. Responsive Design</h2>
<ol>
<li>Media queries</li>
<li>Mostly Fluid</li>
<li>Layout shifter</li>
<li>Column Drop</li>
<li>Best practices for responsive design</li>
<li>Media in responsive design: Page load time.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645769609695/txSfdhpEQ.jpeg" alt="responsive_design.jpeg" /></li>
</ol>
<h2 id="heading-6-mobile-first-design">6. Mobile First Design</h2>
<ol>
<li>Why mobile first?</li>
<li>Growing your project from mobile to desktop. </li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645770235089/usBNQQWI1.png" alt="mobile_first.png" /></p>
<h2 id="heading-7-basics-of-web-accesibility">7. Basics of web accesibility</h2>
<ol>
<li>Semantic HTML</li>
<li>Text</li>
<li>Labels, alt and title.</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645770410412/N_wNlNM51.jpeg" alt="web_accesibility.jpeg" /></p>
<h2 id="heading-9-basic-frontend-development-html-and-css-integration">9. Basic Frontend development: HTML and CSS integration</h2>
<ol>
<li>Browser engine definition</li>
<li>Most used HTML tags</li>
<li>Display: block, inline and inline-block</li>
<li>Z-index</li>
<li>Most used CSS properties</li>
<li>CSS Architectures definition</li>
<li>OOCSS, BEM, SMACSS, ITCSS and Atomic Design</li>
<li>Build your first functional WebSite</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645770565001/XncOZLXfA.png" alt="basic_frontend_development.png" /></p>
<h2 id="heading-10-css-transform-and-css-transitions">10. CSS Transform and CSS transitions.</h2>
<ol>
<li>Why and when to use CSS animations?</li>
<li>Properties used to create animations</li>
<li>Pseudo-classes and pseudo-elements in animations</li>
<li>Timing functions, planes and axes</li>
<li>Transform translate</li>
<li>Transform rotate, scale, skew and matrix</li>
<li>Transform origin</li>
<li>Transform style and perspective</li>
<li>Backface visibility</li>
<li>Parallax effect: HTML structure</li>
<li>Parallax effect: CSS styling</li>
<li>Transition property and duration</li>
<li>Transition timing function and delay</li>
<li>Accesibility and performance</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645770668365/fiPlgHTxR.png" alt="CSS_transition.png" /></p>
<h2 id="heading-11-css-animations">11. CSS Animations</h2>
<ol>
<li>CSS Counters</li>
<li>Stacking context</li>
<li>Animation name and keyframe</li>
<li>Animation duration</li>
<li>Animation timing function</li>
<li>Iteration count and delay</li>
<li>CSS Triggers: layout, paint and composite</li>
<li>Animation debugging using devTools</li>
<li>Best practices for web animation</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645770704396/NzuPQgtjb.png" alt="css_animation.png" /></p>
<h2 id="heading-12-introduction-to-javascript">12. Introduction to JavaScript</h2>
<ol>
<li>What is JavaScript and why JavaScript?</li>
<li>Variables, functions and syntax</li>
<li>Function declaration and function expression</li>
<li>Scope</li>
<li>Hoisting</li>
<li>Coercion</li>
<li>Truthy and Falsy values</li>
<li>Operators</li>
<li>Conditionals</li>
<li>Switch</li>
<li>Arrays</li>
<li>Loops: For and while</li>
<li>Objects</li>
<li>Closures</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1646268502721/kRh5bjDJA.png" alt="JS_logo.png" /></p>
<h2 id="heading-13-basics-of-object-oriented-programming-oop">13. Basics of Object Oriented Programming (OOP)</h2>
<ol>
<li>Differences between OOP and structured programming</li>
<li>UML</li>
<li>Objects</li>
<li>Abstraction and class.</li>
<li>Modularity</li>
<li>Inheritance</li>
<li>Class definition</li>
<li>Methods or functions</li>
<li>Atributes</li>
<li>Constructor Method</li>
<li>Instance</li>
<li>Encapsulation</li>
<li>Polymorphism</li>
</ol>
<h2 id="heading-14-poo-using-javascript">14. POO using JavaScript</h2>
<ol>
<li>All in Basics of OOP, but using JavaScript, plus:</li>
<li>Object literal and prototypes</li>
<li>Getters and setters</li>
</ol>
<p>And that's all for now. 
I think this is pretty good to start with. Eventually, there is a lot more to learn, but we will talk about it in another post. </p>
]]></content:encoded></item><item><title><![CDATA[Why you need a portfolio and how to create one?]]></title><description><![CDATA[😫 Looking for a job or a job looking for you? 😏
It's been a month since I started my journey as a web developer. I'm still learning a lot of new stuff and I practise almost everyday. It's good to learn from everyone and now I think I'm ready to sta...]]></description><link>https://techblog.miguelhernandezmx.com/why-you-need-a-portfolio-and-how-to-create-one</link><guid isPermaLink="true">https://techblog.miguelhernandezmx.com/why-you-need-a-portfolio-and-how-to-create-one</guid><category><![CDATA[portfolio]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[recruitment]]></category><category><![CDATA[jobs]]></category><dc:creator><![CDATA[Miguel Hernández]]></dc:creator><pubDate>Tue, 15 Feb 2022 07:16:34 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1644907263716/9OeEmQ9EH.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-looking-for-a-job-or-a-job-looking-for-you">😫 Looking for a job or a job looking for you? 😏</h1>
<p>It's been a month since I started my journey as a web developer. I'm still learning a lot of new stuff and I practise almost everyday. It's good to learn from everyone and now I think I'm ready to start sharing with you part of what I've learnt. </p>
<p>Since the very first moment I started learning, I noticed the tech community was divided into two main groups: the ones who have lots of opportunities, and the ones who are always struggling to get a job/project. I started to wonder why this is happening. </p>
<p>And I realized it's a matter of mindset. But not just mindset. Mindset by itself serves nothing. It's about the stuff you do. It's about how people thinks of you. </p>
<p>Remember this: Nobody talks about the things they don't have in mind.</p>
<p>Read it again: Nobody talks about the things they don't have in mind.</p>
<p>So. It doesn't matter if you are super ultra really good at coding. If few people knows about it, then you're likely to be always looking for a job.</p>
<p>Well, let me tell you something. Instead of looking for a job, you could have that job looking for you. How is it possible? By working on your personal brand. </p>
<p>I'm not going to talk about your personal brand (not in this post, although you should Google it if you're interested). I'm going to talk about a particular element of your personal brand: your portfolio. </p>
<h1 id="heading-increasing-your-odds">✅  Increasing your odds</h1>
<p>Think about this: What if I recommended you to invest in cryptocurrencies? What if I told you to use Bitso instead of Binance? It doesn't matter which one you choose. What matters is why you choose it. Here are a few things you might do before you make your final decision:</p>
<ol>
<li>Look for it into Google. </li>
<li>Look for user reviews. </li>
<li>Look for comparisons between the two platforms. </li>
<li>Look for pros and cons. </li>
<li>Look for specific features you need/want.</li>
</ol>
<p>Whichever you choose. You'll make sure you choose what serves you best. But what would happen if, let's say, you cannot find Bitso on Google? or what if they don't have reviews to show? or what if you cannot find the answers to your questions on their page?</p>
<p>All of that influence your decision.</p>
<p>And that's pretty much the same that happens when you're applying for a job.</p>
<p>Most of the times, recruiters will choose the candidates that show best their projects/portfolio. Because you're not the only one applying for that job. It is easier for them to get a quick glance at your portfolio than waiting for a response from you or trusting what you tell them without any proof. </p>
<p>Now you understand what I mean?</p>
<p>Creating a portfolio gives recruiters the opportunity to get to know what you are capable of. And they can take the time needed to do so. </p>
<p>You can think this is unfair. You can say things like "No, recruiters shouldn't ask for a portfolio in order to hire someone". And you're right. They shouldn't. But if you don't do a portfolio, someone else will. And guess what? That's marketing. That's sales. The one who has a better marketing, the one who can sell themselves better, is the one who will get the job. </p>
<p>And having a portfolio increases your value in the market. A lot.</p>
<p>I hope you're convinced to create a portfolio by now. </p>
<p>So, this is the question: How to create a portfolio? Let me answer that in the following lines.</p>
<h1 id="heading-creating-your-portfolio">🤓 🖥 Creating your portfolio.</h1>
<p>Did I tell you I started learning to code a month ago? 
Yup. That's me. I don't have the knowledge to create a website from scratch. Not a complex one. But I can do some pretty cool basic stuff. And I can show that to the world. </p>
<p>But how am I supposed to show that stuff to recruiters?</p>
<h2 id="heading-think-like-a-recruiter">🤔 💡 Think like a recruiter</h2>
<p>First, you must know that recruiters are not always technical experts. That's specially true in Latin America. </p>
<p>In the beginning you are in this level where recruiters are from Human Resources department. And most of the time they have no idea of what Node.js (React, Python, decorators, POO, etc..) is. Let's say this is the first filter. </p>
<p>Secondly, if you succeed in the first filter, you might now encounter a technical expert. And this is where there is usually a knowledge assessment. But before the assessment, this technical expert might (surely will) have a glance at your portfolio. This is the second filter.</p>
<p>You cannot show your portfolio the same way in both filters. </p>
<p>In the first filter you may want to show an overview of each of your projects. No technical aspects, but a mention of the technologies/skills implemented in those projects. I suggest answering the following questions:</p>
<ol>
<li>What is the project about?</li>
<li>How does it work?</li>
<li>Who was it made for?</li>
<li>Which technologies/skills did you use?</li>
<li>Links to your Github / Gitlab repositories. </li>
<li>Link to live project (if possible)</li>
</ol>
<p>I suggest you have a Youtube channel or a blog for this. The format you should use is the very same you would use to promote an app or a product. People don't care about the maths and coding behind it. They just care about its main features and how this solve their problems (recruiting someone). </p>
<p>In the second filter, the most important question is the following one:</p>
<ol>
<li>How did you do it?</li>
</ol>
<p>You can be a little bit technical here. It's better if you make tutorials teaching how to do some of the stuff you implemented in that project. Besides, you have to comment your code in your public repositories. </p>
<p>I know some projects are private. And you don't need to exhibit that code to the public. But you can take some sections of it and teach people how to do it. You just need to modify some stuff and use your imagination. It's not that hard. </p>
<h2 id="heading-how-do-i-get-projects-if-nobody-hires-me-to-begin-with">🥴 How do I get projects if nobody hires me to begin with?</h2>
<p>I know I know. I always see people tweeting the same stuff once and again. </p>
<p>The answer is: You have lack of imagination. </p>
<p>Doing a personal project is free. And if you're already experienced enough, you have no excuses. </p>
<p>Look at this portfolio (Spanish):
https://midiaenunosminutos.com/</p>
<p>It is pretty basic and it might not have an amazing design. But it's better than nothing. You can always improve it when you learn something new. </p>
<p>Besides, there are websites where you can participate in challenges. For example, if you are a frontend developer, you can use <a target="_blank" href="https://www.frontendmentor.io/home">Frontend Mentor</a>. </p>
<p>There are multiple sites. You just have to look for them. And if you cannot do that, wel... maybe you shouldn't apply for that job. Because we are talking about proactivity here. And that's the first thing you need. Even before coding. </p>
<h2 id="heading-i-have-projects-what-platform-should-i-use-to-show-them">😎 I have projects, what platform should I use to show them?</h2>
<p>Short answer: A personal website.</p>
<p>You can have multiple profiles in different platforms, but it's better if you get all together into one place. That should be www.yourname.com</p>
<p>Why?</p>
<p>Firstly, because you want people to know all the places where they can find you: Youtube, Github, Medium, Hashnode, etc. You can use direct links on your website. </p>
<p>Secondly, it is easier to navigate through your stuff if it is all in one place. For example, I can describe a project, show pictures of it, embed a video and show some code or links of interest. All in the same page. That's better than having people opening several tabs for each platform. </p>
<p>Mine is <a target="_blank" href="https://www.miguelhernandezmx.com">www.miguelhernandezmx.com</a>. By the time I'm writing this, my site is still under construction. </p>
<p>I'm using Wordpress, but eventually, when I improve my skills, I'll switch to one made from scratch. </p>
<h1 id="heading-conclusions">🙉 Conclusions</h1>
<ul>
<li>Having a portfolio will give you a clear advantage over those who doesn't have one. </li>
<li>Design your portfolio according to the different profiles of people you want to show it to.</li>
<li>Even if you've just started your career, you can always have personal projects to show in your portfolio.</li>
<li>Use different platforms like Youtube, Github, etc, but get all together into one place: your personal website. </li>
</ul>
<p>PS. I'm practising my English. Let me know if something is not clear and how I can improve it.
🌽🇲🇽</p>
]]></content:encoded></item></channel></rss>