<?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: Kevin J. Estevez</title>
    <description>The latest articles on Forem by Kevin J. Estevez (@kenystev).</description>
    <link>https://forem.com/kenystev</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%2F134273%2F6f73ccd2-d5f3-4f58-a873-e1e3bf7ae1bb.png</url>
      <title>Forem: Kevin J. Estevez</title>
      <link>https://forem.com/kenystev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/kenystev"/>
    <language>en</language>
    <item>
      <title>CSS container queries with SASS mixins</title>
      <dc:creator>Kevin J. Estevez</dc:creator>
      <pubDate>Wed, 23 Aug 2023 20:04:54 +0000</pubDate>
      <link>https://forem.com/kenystev/css-container-queries-with-sass-mixins-6ic</link>
      <guid>https://forem.com/kenystev/css-container-queries-with-sass-mixins-6ic</guid>
      <description>&lt;p&gt;Have you ever wanted to apply certain styles based on the container width instead of the viewport width? well now you can do it using &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_container_queries"&gt;CSS container queries&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's pretty cool but as we used to do with media queries we might want to set standards for the codebase and define common breakpoints' variables to be used across the project.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mobile devices – 320px — 480px.&lt;/li&gt;
&lt;li&gt;iPads, Tablets – 481px — 768px.&lt;/li&gt;
&lt;li&gt;Small screens, laptops – 769px — 1024px.&lt;/li&gt;
&lt;li&gt;Desktops, large screens – 1025px — 1200px.&lt;/li&gt;
&lt;li&gt;Extra large screens, TV – 1201px, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're using some css pre-processor like SASS, then we will do something like a mixin to wrap the code:&lt;/p&gt;

&lt;h3&gt;
  
  
  For Media Queries
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sass"&gt;&lt;code&gt;&lt;span class="nv"&gt;$breakpoint-xs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;480px&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$breakpoint-s&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;768px&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$breakpoint-md&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1024px&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$breakpoint-l&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1200px&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$breakpoint-xl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1900px&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;@mixin&lt;/span&gt; &lt;span class="nf"&gt;x-small&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="n"&gt;screen&lt;/span&gt; &lt;span class="nf"&gt;and&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;min-width&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$breakpoint-xs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;@content&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@mixin&lt;/span&gt; &lt;span class="nf"&gt;small&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="n"&gt;screen&lt;/span&gt; &lt;span class="nf"&gt;and&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;min-width&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$breakpoint-s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;@content&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@mixin&lt;/span&gt; &lt;span class="nf"&gt;medium&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="n"&gt;screen&lt;/span&gt; &lt;span class="nf"&gt;and&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;min-width&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$breakpoint-md&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;@content&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@mixin&lt;/span&gt; &lt;span class="nf"&gt;large&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="n"&gt;screen&lt;/span&gt; &lt;span class="nf"&gt;and&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;min-width&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$breakpoint-l&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;@content&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@mixin&lt;/span&gt; &lt;span class="nf"&gt;x-large&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="n"&gt;screen&lt;/span&gt; &lt;span class="nf"&gt;and&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;min-width&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$breakpoint-xl&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;@content&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  For Container Queries
&lt;/h3&gt;

&lt;p&gt;If we try to do exactly the same for container queries, it won't work out, we need to make a slight change (&lt;em&gt;scaping the variables values&lt;/em&gt;)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sass"&gt;&lt;code&gt;&lt;span class="nc"&gt;...&lt;/span&gt;
&lt;span class="k"&gt;@mixin&lt;/span&gt; &lt;span class="nf"&gt;x-small&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;@container&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;min-width&lt;/span&gt;&lt;span class="nd"&gt;:&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="nt"&gt;breakpoint-xs&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt; &lt;span class="o"&gt;/*&lt;/span&gt; &lt;span class="nt"&gt;this&lt;/span&gt; &lt;span class="nt"&gt;will&lt;/span&gt; &lt;span class="nt"&gt;not&lt;/span&gt; &lt;span class="nt"&gt;work&lt;/span&gt; &lt;span class="nt"&gt;and&lt;/span&gt; &lt;span class="nt"&gt;you&lt;/span&gt; &lt;span class="nt"&gt;will&lt;/span&gt; &lt;span class="nt"&gt;see&lt;/span&gt; &lt;span class="nt"&gt;no&lt;/span&gt; &lt;span class="nt"&gt;error&lt;/span&gt; &lt;span class="o"&gt;*/&lt;/span&gt;
    &lt;span class="k"&gt;@content&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So to make it work for container queries we need to scape the variables with the breakpoints like this: &lt;code&gt;#{$breakpoint-xs}&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sass"&gt;&lt;code&gt;&lt;span class="nc"&gt;...&lt;/span&gt;
&lt;span class="k"&gt;@mixin&lt;/span&gt; &lt;span class="nf"&gt;x-small&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;@container&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;min-width&lt;/span&gt;&lt;span class="nd"&gt;:&lt;/span&gt; &lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nv"&gt;$breakpoint-xs&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt; &lt;span class="o"&gt;/*&lt;/span&gt; &lt;span class="nt"&gt;this&lt;/span&gt; &lt;span class="nt"&gt;will&lt;/span&gt; &lt;span class="nt"&gt;work&lt;/span&gt; &lt;span class="nt"&gt;but&lt;/span&gt; &lt;span class="nt"&gt;you&lt;/span&gt; &lt;span class="nt"&gt;will&lt;/span&gt; &lt;span class="nt"&gt;see&lt;/span&gt; &lt;span class="nt"&gt;the&lt;/span&gt; &lt;span class="nt"&gt;vs-code&lt;/span&gt; &lt;span class="nt"&gt;complaining&lt;/span&gt; &lt;span class="nt"&gt;about&lt;/span&gt; &lt;span class="nt"&gt;some&lt;/span&gt; &lt;span class="nt"&gt;syntax&lt;/span&gt; &lt;span class="nt"&gt;error&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;so&lt;/span&gt; &lt;span class="nt"&gt;just&lt;/span&gt; &lt;span class="nt"&gt;ignore&lt;/span&gt; &lt;span class="nt"&gt;it&lt;/span&gt; &lt;span class="o"&gt;*/&lt;/span&gt;
    &lt;span class="k"&gt;@content&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The solution above is reported as an error (scss-(css-ruleorselectorexpected)) by VSCode, but when it compiles and runs just fine.&lt;/p&gt;

&lt;p&gt;Thanks a lot to the solution I found in this &lt;a href="https://stackoverflow.com/questions/71006004/variables-inside-media-query-in-scss-files-not-working"&gt;thread&lt;/a&gt; by &lt;a href="https://stackoverflow.com/users/3528440/michel-reij"&gt;Michel Reij&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hope this could be helpful to someone else!&lt;br&gt;
Thanks for reading.&lt;/p&gt;

</description>
      <category>css</category>
      <category>sass</category>
      <category>frontend</category>
    </item>
    <item>
      <title>I'm a lazy Dev</title>
      <dc:creator>Kevin J. Estevez</dc:creator>
      <pubDate>Tue, 04 Jul 2023 18:17:22 +0000</pubDate>
      <link>https://forem.com/kenystev/im-a-lazy-dev-c7l</link>
      <guid>https://forem.com/kenystev/im-a-lazy-dev-c7l</guid>
      <description>&lt;p&gt;Originally publish at: &lt;a href="https://www.jobsity.com/blog/a-guide-to-being-a-lazy-dev-by-using-scripts"&gt;Jobsity Blog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yes! I'm a lazy dev and I like it.&lt;/p&gt;

&lt;p&gt;Don't misunderstand me I haven't said I'm not productive, it is the opposite, let me explain myself.&lt;/p&gt;

&lt;p&gt;I hate doing that kind of repetitive task on a daily basis, I'm always looking for challenges, something that really puts my brain to work and then gets the best of it by figuring out creative solutions.&lt;/p&gt;

&lt;p&gt;That's why I pushed myself through the way of automating repetitive tasks with scripts 😜&lt;/p&gt;

&lt;p&gt;Scripts have helped me a lot to perform repetitive tasks and even to increase my productivity since I don't have to worry on spending a lot of time doing the same and focus on what's worth.&lt;/p&gt;

&lt;p&gt;It might be tough to start but if you want to become a lazy dev too just let me give you some advices on tips you should keep in mind whenever you're writing a new script&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Use a common scripting language known by the team&lt;/li&gt;
&lt;li&gt;Keep it short, clean and understandable&lt;/li&gt;
&lt;li&gt;Follow the same pattern in your scripts&lt;/li&gt;
&lt;li&gt;Document your scripts&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once you identify a task where you could create a script for, please don't hesitate to automate it, your team and even you're going to love it.&lt;/p&gt;

&lt;h1&gt;
  
  
  What language should I use?
&lt;/h1&gt;

&lt;p&gt;Well I prefer writing my scripts using bash, it's simpler, easy to learn and it comes with all the Unix based systems 😄&lt;br&gt;
Javascript could be an option as well if your team is used to javascript.&lt;/p&gt;

&lt;p&gt;Personally I've written most of my scripts in bash and some others with python.&lt;/p&gt;
&lt;h1&gt;
  
  
  One script to rule them all!
&lt;/h1&gt;

&lt;p&gt;Please don't try to write a script to make everything, it's better to have several short and maintainable scripts well documented than a big bunch of code trying to control the world.&lt;/p&gt;

&lt;p&gt;If that's what you want you might consider to write a complete CLI program instead. Though I wouldn't recommend&lt;/p&gt;
&lt;h1&gt;
  
  
  Patterns would make it easy
&lt;/h1&gt;

&lt;p&gt;As a rule of thumb try to keep patterns on your scripts, that'd make it easy not only for you to start creating a new script but also for your teammates to understand how the script works.&lt;/p&gt;

&lt;p&gt;The pattern I like to follow is flag's parameters where you pass them to the script as flags, for instance if you want to pass an external file path you add a flag like &lt;code&gt;-f&lt;/code&gt; or &lt;code&gt;--file&lt;/code&gt; if you prefer the full flag.&lt;/p&gt;
&lt;h1&gt;
  
  
  Document your scripts
&lt;/h1&gt;

&lt;p&gt;Best way to document your scripts is a self explained code but we usually just need a quick documentation of how to use it without need to checkout the code, that's why I'd recommend you to always add a help &lt;code&gt;-h|--help&lt;/code&gt; command.&lt;/p&gt;
&lt;h1&gt;
  
  
  Templates!
&lt;/h1&gt;

&lt;p&gt;For those who reach the end I'll give you some templates you could use to start creating your scripts, and believe me this has helped me so much, improving my performance and accelerating several tasks in the projects I've worked on.&lt;/p&gt;

&lt;p&gt;And on top of that, it makes my clients happy when I build tools to increase the development pace -- and it makes me happy to reduce the need to create and re-create those stressful repetitive tasks we've all grown tired of creating!&lt;/p&gt;

&lt;p&gt;For those who reach the end I'll give you some templates you could use to start creating your scripts, and believe me this has helped me so much, improving my performance and accelerating several tasks in the projects I've worked on.&lt;/p&gt;

&lt;p&gt;And for sure it makes my clients happier when I build tools to increase the development pace of those stressful repetitive tasks we've gone through.&lt;/p&gt;
&lt;h3&gt;
  
  
  Bash Template
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/usr/bin/env bash -e&lt;/span&gt;

&lt;span class="nv"&gt;PARAMS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;

&lt;span class="nv"&gt;COMMANDS_FLAGS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"
Help:
    In order to pass arguments use '--' after the command like: npm run script-name -- -f

  -f|--file:                    Pass file path
  -o|--output-file:             Sets the output file’s name
  -h|--help:                    Lists help options
"&lt;/span&gt;

&lt;span class="c"&gt;# VARS&lt;/span&gt;
&lt;span class="nv"&gt;FILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt; &lt;span class="s2"&gt;"$#"&lt;/span&gt; &lt;span class="o"&gt;))&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  case&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt;
    &lt;span class="nt"&gt;-f&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="nt"&gt;--file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="nv"&gt;FILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
      &lt;span class="nb"&gt;shift&lt;/span&gt;
      &lt;span class="p"&gt;;;&lt;/span&gt;
    &lt;span class="nt"&gt;-h&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="nt"&gt;--help&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$COMMANDS_FLAGS&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
        &lt;span class="nb"&gt;exit &lt;/span&gt;0
      &lt;span class="p"&gt;;;&lt;/span&gt;
    -&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="nt"&gt;--&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;# unsupported flags&lt;/span&gt;
      &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: Unsupported flag &lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&amp;amp;2
      &lt;span class="nb"&gt;exit &lt;/span&gt;1
      &lt;span class="p"&gt;;;&lt;/span&gt;
    &lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;# preserve positional arguments&lt;/span&gt;
      &lt;span class="nv"&gt;PARAMS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PARAMS&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
      &lt;span class="nb"&gt;shift&lt;/span&gt;
      &lt;span class="p"&gt;;;&lt;/span&gt;
  &lt;span class="k"&gt;esac&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;

&lt;span class="c"&gt;# set positional arguments in their proper place&lt;/span&gt;
&lt;span class="nb"&gt;eval set&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PARAMS&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c"&gt;# execute your script&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Running script..."&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$FILE&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"File not found."&lt;/span&gt;
&lt;span class="k"&gt;else
    &lt;/span&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="nv"&gt;$FILE&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Alright let's split the code, first we will need a variable to store the positional parameters &lt;code&gt;$PARAMS&lt;/code&gt;, those are the ones its order is important&lt;/p&gt;

&lt;p&gt;&lt;code&gt;COMMANDS_FLAGS&lt;/code&gt; is basically our documentation we're going to display when the &lt;code&gt;--help&lt;/code&gt; flag is passed or if the passed params does not supply the minimum requirement.&lt;/p&gt;

&lt;p&gt;Always supply short and full flags to your scripts, believe me users are going to love it.&lt;/p&gt;

&lt;p&gt;Then you'd want to define all the default values for the vars you're using, because next is where most of the magic happens...&lt;/p&gt;

&lt;p&gt;Here we're parsing our flags and storing the right values in our variables depending on what needs to be done, you can add as many flags as you wish.&lt;/p&gt;

&lt;p&gt;Just add a new case like:&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="nt"&gt;-f&lt;/span&gt;|--flag&lt;span class="o"&gt;)&lt;/span&gt;
      &lt;span class="nv"&gt;FILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
      &lt;span class="nb"&gt;shift&lt;/span&gt;
      &lt;span class="p"&gt;;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Remember the flag's value for non-boolean flags is going to be stored in $2 var.&lt;/p&gt;

&lt;p&gt;And don't forget the last two conditions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;-*|--*=)&lt;/code&gt; is meant to throw an error when a flag is not valid&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;*)&lt;/code&gt; is meant to concat the positional params
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt; &lt;span class="s2"&gt;"$#"&lt;/span&gt; &lt;span class="o"&gt;))&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  case&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt;
    &lt;span class="nt"&gt;-f&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="nt"&gt;--file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="nv"&gt;FILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
      &lt;span class="nb"&gt;shift&lt;/span&gt;
      &lt;span class="p"&gt;;;&lt;/span&gt;
    &lt;span class="nt"&gt;-h&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="nt"&gt;--help&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$COMMANDS_FLAGS&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
        &lt;span class="nb"&gt;exit &lt;/span&gt;0
      &lt;span class="p"&gt;;;&lt;/span&gt;
    -&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="nt"&gt;--&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;# unsupported flags&lt;/span&gt;
      &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: Unsupported flag &lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&amp;amp;2
      &lt;span class="nb"&gt;exit &lt;/span&gt;1
      &lt;span class="p"&gt;;;&lt;/span&gt;
    &lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;# preserve positional arguments&lt;/span&gt;
      &lt;span class="nv"&gt;PARAMS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PARAMS&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
      &lt;span class="nb"&gt;shift&lt;/span&gt;
      &lt;span class="p"&gt;;;&lt;/span&gt;
  &lt;span class="k"&gt;esac&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Also after parsing the your flags remember to put back the positional params on its place with:&lt;br&gt;
&lt;code&gt;eval set -- "$PARAMS"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And that's it! Now you can start running your script based on the conditions set by the flags the user passes or throw an error if the user passes each other exclusive flags, it depends on how you define your script after that.&lt;/p&gt;
&lt;h2&gt;
  
  
  Bonus! (For the Laziest Devs Only)
&lt;/h2&gt;

&lt;p&gt;If you'd like to add more life to your scripts -- like showing an error message in red or a piece of advice in yellow -- I suggest you to define your colors like this:&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="nv"&gt;red&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;$'&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s1"&gt;[1;31m'&lt;/span&gt;
&lt;span class="nv"&gt;green&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;$'&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s1"&gt;[1;32m'&lt;/span&gt;
&lt;span class="nv"&gt;yellow&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;$'&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s1"&gt;[1;33m'&lt;/span&gt;
&lt;span class="nv"&gt;blue&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;$'&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s1"&gt;[1;34m'&lt;/span&gt;
&lt;span class="nv"&gt;magenta&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;$'&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s1"&gt;[1;35m'&lt;/span&gt;
&lt;span class="nv"&gt;cyan&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;$'&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s1"&gt;[1;36m'&lt;/span&gt;
&lt;span class="nv"&gt;purple&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;$'&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s1"&gt;[1;34m%-6s&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s1"&gt;[m'&lt;/span&gt;
&lt;span class="nv"&gt;end&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;$'&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s1"&gt;[0m'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;end&lt;/code&gt; var is to define where to stop painting your text, and it's used like:&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="nb"&gt;printf&lt;/span&gt; &lt;span class="s1"&gt;'%s\n'&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;red&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;Error! There's nothing to be updated!.&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;end&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Well and if that's not enough for you, you can also create helper functions to help you better build your script or even better to add some enhancements to your script like the power of logging the batch of commands to be run in case your script performs a sequence of commands.&lt;/p&gt;

&lt;p&gt;That way the user will be able to see before running the script what is about to be executed, I've made that abstraction for you, so don't worry just use it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;run_command&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$TEST_OUTPUT&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"|&lt;/span&gt;&lt;span class="nv"&gt;$ $@&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  &lt;span class="k"&gt;else
    &lt;/span&gt;&lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s2"&gt;"%s&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;blue&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;running -&amp;gt; &lt;/span&gt;&lt;span class="nv"&gt;$ $@&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;end&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This function as you can read the code requires a variable called &lt;code&gt;TEST_OUTPUT&lt;/code&gt;, you can define the flag whatever you wish I've done it with capital letter T &lt;code&gt;-T|--test&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And what it does basically is if true then echo the command about to be run otherwise print the command and also execute it.&lt;/p&gt;

&lt;p&gt;A simple use example would be if your script wants to run &lt;code&gt;git status&lt;/code&gt; to check out if there's any change then you'd run it with the helper function:&lt;br&gt;
&lt;code&gt;run_command "git status"&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Note
&lt;/h3&gt;

&lt;p&gt;With python you could use &lt;code&gt;argparse&lt;/code&gt; to actually parse your flags in a fancy way than bash does it if you're more a python enthusiast&lt;/p&gt;

&lt;h4&gt;
  
  
  Get Lazy!
&lt;/h4&gt;

&lt;p&gt;Well, that’s it, friends! Hope this could help you improve your productivity and find your way to being a truly lazy developer. If you follow these tips, my advice, and play with my templates, once you identify a task that can be automated by a script, you’ll be able to without much effort. And when you do, don't hesitate to get it written. Your team, your clients, and your lazy nature will thank you later! 🤗&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>tips</category>
      <category>bash</category>
      <category>linux</category>
    </item>
    <item>
      <title>Conciliation Branch in Git</title>
      <dc:creator>Kevin J. Estevez</dc:creator>
      <pubDate>Wed, 09 Nov 2022 01:36:01 +0000</pubDate>
      <link>https://forem.com/kenystev/conciliation-branch-in-git-5bi1</link>
      <guid>https://forem.com/kenystev/conciliation-branch-in-git-5bi1</guid>
      <description>&lt;p&gt;Have you ever fall in the situation where the commit chain from the main branch (prod) differs from the staging branch, either cause by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A cherry-picked commit to main
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--stLi3P0v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mth642ggmhyrsds0gax8.png" alt="cherry-pick case" width="484" height="182"&gt;
&lt;/li&gt;
&lt;li&gt;A bunch of commits squashed and added as a single commit to the main branch
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--epNmHmos--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q6tdrn8u8qncohg0a2jq.png" alt="squashed commits case" width="646" height="178"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Well it has happened to me a couple times in different teams, and on each case several approaches had bumped up from my colleagues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Address the conflicts manually? 😥&lt;/li&gt;
&lt;li&gt;Revert (hard reset main) the conflicting commits? 😰&lt;/li&gt;
&lt;li&gt;Hard push (force) the staging branch to main? 😖&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To be honest I'm not a fan of forcing things, I like my Pull Requests to merge soothly into main 😌&lt;/p&gt;

&lt;p&gt;so I'll give you the solution to this problem, which I've called &lt;strong&gt;&lt;em&gt;Conciliation Branch&lt;/em&gt;&lt;/strong&gt; even though I'm not sure if the term already exist or not, but it's an approach I've made several times to solve this. (as a git lover)&lt;/p&gt;

&lt;p&gt;Well let's jump in!&lt;/p&gt;

&lt;h2&gt;
  
  
  Commands:
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Note: all steps we're doing through terminal&lt;/em&gt;&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="nv"&gt;$:&lt;/span&gt; git fetch
&lt;span class="nv"&gt;$:&lt;/span&gt; git checkout staging

&lt;span class="c"&gt;# in case we're not up-to-date with upstream&lt;/span&gt;
&lt;span class="nv"&gt;$:&lt;/span&gt; git merge origin/staging

&lt;span class="c"&gt;# Create a conciliation branch from staging-branch&lt;/span&gt;
&lt;span class="nv"&gt;$:&lt;/span&gt; git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; &amp;lt;conciliation-branch-name&amp;gt;

&lt;span class="c"&gt;# merge master back into staging taking "ours" preference&lt;/span&gt;
&lt;span class="nv"&gt;$:&lt;/span&gt; git pull &lt;span class="nt"&gt;-s&lt;/span&gt; ours origin master

&lt;span class="c"&gt;# push new branch&lt;/span&gt;
&lt;span class="nv"&gt;$:&lt;/span&gt; git push &amp;lt;conciliation-branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  And that's it!
&lt;/h2&gt;

&lt;p&gt;Now all you need to do is create a Pull request from your new &lt;code&gt;conciliation-branch&lt;/code&gt; to &lt;code&gt;staging-branch&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;That will allow you then after merged to now open a new Pull Request from &lt;code&gt;staging-branch&lt;/code&gt; to &lt;code&gt;master&lt;/code&gt; smoothly 🚀 🥳&lt;/p&gt;

&lt;p&gt;Thanks for reading!, Hope this could help you a lot.&lt;/p&gt;

</description>
      <category>git</category>
      <category>agile</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>My hacktoberfest adventure!</title>
      <dc:creator>Kevin J. Estevez</dc:creator>
      <pubDate>Sat, 02 Oct 2021 00:54:51 +0000</pubDate>
      <link>https://forem.com/kenystev/my-hacktoberfest-adventure-2680</link>
      <guid>https://forem.com/kenystev/my-hacktoberfest-adventure-2680</guid>
      <description>&lt;p&gt;It was a few years ago when I started this journey to participate in the Hacktoberfest event and I must confess I was quite nervous about it as I'm actually now too.&lt;/p&gt;

&lt;p&gt;I've always looked up to dev who actively contribute to opensource projects since I know how difficult it is to keep up the pace and commitment it requires.&lt;/p&gt;

&lt;p&gt;Back then in 2018 I started looking there for opensource project to contribute to during hacktoberfest and I realize even though most of them have a very strict process to get PRs accepted if there's a well defined guide to follow is because the core team is open to contributions, and if so they're also really open to help you out get started on it!&lt;/p&gt;

&lt;p&gt;So my advice is to not be shy to start contributing and also reaching the core team with questions about the project!&lt;/p&gt;

&lt;p&gt;I still remember that time when I received this package with that awesome T-shirt and the swag! I was excited about reaching my goal of completing the challenge.&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%2Fnbuplxhg3m242ck5jv0g.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%2Fnbuplxhg3m242ck5jv0g.png" alt="Hacktoberfest 2018 gift"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;from then on I continued participating on Hacktoberfest each year but later on last year was quite great! since I moved on a step on not only looking for opensource projects to contribute to but more known repos and tools used by hundreds on devs...&lt;/p&gt;

&lt;p&gt;Yes I'm talking about &lt;a href="https://github.com/cli/cli" rel="noopener noreferrer"&gt;GitHub-CLI&lt;/a&gt; it was a great adventure! I learnt a lot from it, using Golang in good known cli tool to add a new &lt;em&gt;command&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The thread started from a feature request I found in the &lt;strong&gt;issues&lt;/strong&gt; section inside the repo, I picked that up and starting working (even without the approval of the core team to add that new feature) I started the R&amp;amp;D process and implementation, asking questions about the project to the core team and building the new feature&lt;/p&gt;

&lt;p&gt;Finally I made a PR and bum! 🤯 Pipeline failed to build the app for Windows!!! and then I realized, of course I'm trying to build a feature for a tool which is used across OS (Mac, Linux, Win) and honestly I had never done that before&lt;/p&gt;

&lt;p&gt;It was a huge investigation phase until I finally made the feature work for the three major OS, opened up the PR and prayed 🙏 to be accepted by the core team&lt;/p&gt;

&lt;p&gt;Discussions stated in the &lt;em&gt;code review&lt;/em&gt; until it turns out the core team decided that was not feature they wanted to include in the CLI.&lt;/p&gt;

&lt;p&gt;Well! sadly it was not merged and release to the users but I got the experience of at trying it and also the added up benefit of getting all that new knowledge.&lt;/p&gt;

&lt;p&gt;Right now I'm looking for some &lt;strong&gt;fun opensource project&lt;/strong&gt; to contribute to, so if your a maintainer and want some sort of contribution please write it down in the comments so I'll check it out.&lt;/p&gt;

&lt;p&gt;Let's go Hacking! 💪 and thanks for reading.&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>github</category>
    </item>
    <item>
      <title>The font-size trick in layouts</title>
      <dc:creator>Kevin J. Estevez</dc:creator>
      <pubDate>Thu, 22 Apr 2021 19:13:14 +0000</pubDate>
      <link>https://forem.com/kenystev/the-font-size-trick-in-layouts-4joe</link>
      <guid>https://forem.com/kenystev/the-font-size-trick-in-layouts-4joe</guid>
      <description>&lt;p&gt;Have you ever faced the issue when 50% and 50% does not fit in 100%? 🤯 Where has the math gone?&lt;/p&gt;

&lt;p&gt;I remember my first days learning CSS, putting markup tags here and there then styling them out! yeah! the least aesthetic page ever xD&lt;/p&gt;

&lt;p&gt;Flexbox had just appeared and then barely used, we still fought aligning items with &lt;code&gt;float: left&lt;/code&gt; and &lt;code&gt;float: right&lt;/code&gt; and the famously used &lt;code&gt;clear: both&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Nothing worse than dealing with those properties and then boom! we played the fools trying to split a view evenly in two pieces 50/50 using &lt;code&gt;display: inline-block&lt;/code&gt; and &lt;code&gt;width: 50%&lt;/code&gt; ending with something like this:&lt;/p&gt;

&lt;h3&gt;
  
  
  HTML
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    item 1
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    item 2
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  CSS
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.container {
  width: 100%;
}

.item {
  display: inline-block;
  width: 50%;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Fooling!
&lt;/h1&gt;

&lt;p&gt;And you know the end, how 50% plus 50% is different than 100%? then more than one ended doing the weirdest thing ever done 50% and 49% 🤦🏻‍♂️ others tried to heal the wound a bit by evenly distributing the difference like 49.5% and 49.5%&lt;/p&gt;

&lt;p&gt;But you know what? just to make it worse guess what? That's not gonna behave as well as expected if you're aiming for responsive views&lt;/p&gt;

&lt;h1&gt;
  
  
  Problem solved!
&lt;/h1&gt;

&lt;p&gt;Do you know what's the real issue here?&lt;/p&gt;

&lt;p&gt;Well it's even simpler than you thought! The reason why 50/50 doesn't fit 100 is because of the &lt;code&gt;font-size&lt;/code&gt; yeah!&lt;/p&gt;

&lt;p&gt;Remember we're using &lt;code&gt;display: inline-block&lt;/code&gt; right? to change the default &lt;code&gt;block&lt;/code&gt; value of divs, and as fact in CSS all the inline elements by default share a property called &lt;code&gt;font-size&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Wait! divs could have &lt;code&gt;font-size&lt;/code&gt;? for sure they can once you change their display property from &lt;em&gt;block&lt;/em&gt; to &lt;em&gt;inline&lt;/em&gt;, even &lt;em&gt;inline-block&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;If you do not set a &lt;code&gt;font-size&lt;/code&gt; property to your 50/50 elements they will inherit from their parent (which most of the time might not be zero)&lt;/p&gt;

&lt;p&gt;All you have to do is set &lt;code&gt;font-size: 0;&lt;/code&gt; to your items and boom! out of magic everything will work! Here's an example of the result so you could check it out:&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/kenystev/embed/PoGMRNe?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Before you go!
&lt;/h3&gt;

&lt;p&gt;Note: The example above it's working pretty well just because we don't have content inside those divs, once you have some content there by default most of the browsers set the property &lt;code&gt;box-sizing: content-box;&lt;/code&gt; and I'd suggest you to set that property to &lt;code&gt;box-sizing: border-box;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Thanks for reading and see you soon... 🤗&lt;/p&gt;

</description>
      <category>css</category>
      <category>html</category>
      <category>tips</category>
      <category>webdev</category>
    </item>
    <item>
      <title>EasyASM, Ramping up in Assembly</title>
      <dc:creator>Kevin J. Estevez</dc:creator>
      <pubDate>Tue, 06 Oct 2020 23:17:16 +0000</pubDate>
      <link>https://forem.com/kenystev/easyasm-ramping-up-in-assembly-21n5</link>
      <guid>https://forem.com/kenystev/easyasm-ramping-up-in-assembly-21n5</guid>
      <description>&lt;p&gt;I was remembering the time I was coursing Compiler lessons at my alma mater, and decided to check out an open-source project that helped me understand in a better way the core concepts of the compiling process, and even further in the Assembly languages.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Yeah! I know some might get scared by those lower-level programming languages but in the end they're just that: another language with its own complexity.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;First thing we need to know is, there are different Assembly languages and we're going to list some of them here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.mips.com/products/architectures/mips32-2/"&gt;MIPS32&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cs.virginia.edu/~evans/cs216/guides/x86.html"&gt;X86&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.arm.com/documentation/dui0473/m/writing-arm-assembly-language"&gt;ARM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://software.intel.com/content/www/us/en/develop/articles/introduction-to-x64-assembly.html"&gt;X64&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;newly added to the family &lt;a href="https://webassembly.org/"&gt;WebAssembly&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And a famous widely used assembler for X86 is &lt;a href="https://www.nasm.us/"&gt;NASM&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  But for education purposes
&lt;/h2&gt;

&lt;p&gt;I came here to introduce to you all to this awesome open source project, an interpreter of the MIPS32 and X86 instruction set &lt;a href="https://github.com/ideras/EasyASM"&gt;EasyASM&lt;/a&gt;.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ideras"&gt;
        ideras
      &lt;/a&gt; / &lt;a href="https://github.com/ideras/EasyASM"&gt;
        EasyASM
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      MIPS32 and x86 simulator for easy learning of assembler language
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
EasyASM&lt;/h1&gt;
&lt;p&gt;EasyASM is a simple simulator for a subset of MIPS32 and x86 ISAs.  The main purpose is make easy the process
of learning the assembler language.  For this purpose EasyASM provides a simple command line interface were the
user can type assembler instructions and test them without the need of using some assembler program.  The program
provides instant feedback to user, in case of an error.  Apart from that the simulator provides some useful commands
which are described in the section commands.&lt;/p&gt;
&lt;h2&gt;
Installation&lt;/h2&gt;
&lt;p&gt;To install the program you need a C++ compiler and the source code.  Once you have both you just need to enter
the directory with the source code and type the commands&lt;/p&gt;
&lt;h3&gt;
Linux (Debian based distribution)&lt;/h3&gt;
&lt;div class="highlight highlight-text-shell-session js-code-highlight"&gt;
&lt;pre&gt;$ &lt;span class="pl-s1"&gt;make deps&lt;/span&gt;
$ &lt;span class="pl-s1"&gt;make&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
Windows&lt;/h3&gt;
&lt;p&gt;It might work if you use &lt;strong&gt;msys&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
Usage&lt;/h2&gt;
&lt;p&gt;Once you have the simulator compiled, you can run it by typing &lt;code&gt;./EasyASM&lt;/code&gt; in the source…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ideras/EasyASM"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;It’s a project where you can play around with a vast instruction set for either MIPS32 or X86 and have good feedback of what’s going on. Also you have available some helper instructions to pre-fill a register with a desired value and then use it later in the code.&lt;/p&gt;

&lt;p&gt;I've made very few contributions to it, the most recent being an easy way to set it up and running in your Debian based distribution.&lt;/p&gt;

&lt;h2&gt;
  
  
  A bit of History
&lt;/h2&gt;

&lt;p&gt;The project was made by a professor I had during my major and was developed while we were having lessons with him, so we were pretty much like Beta Testers 😆 at the time.&lt;/p&gt;

&lt;p&gt;A few of us made very few contributions back then, and it wasn't until recently that I came back to see if the project was still alive and noticed there were some changes which weren't quite well explained in the Readme.md file about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;specific i386 dependencies&lt;/li&gt;
&lt;li&gt;custom version of Lemon&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It really wasn't easy to set the project up and running at once, so I decided to figure out the needed dependencies and the custom version of Lemon myself.&lt;/p&gt;

&lt;p&gt;I added a script to install all those dependencies easily just by executing one shell command... Yeah, I went through all that pain to simplify that process to future users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git clone https://github.com/ideras/EasyASM.git
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;EasyASM
&lt;span class="nv"&gt;$ &lt;/span&gt;make deps
&lt;span class="nv"&gt;$ &lt;/span&gt;make
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cp&lt;/span&gt; ./EasyASM /usr/bin/EasyASM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The last command is optional. It is mostly there so that you can use it from any directory you are in, like any other CLI program or you could easily use it directly from the project folder.&lt;/p&gt;

&lt;h3&gt;
  
  
  Running
&lt;/h3&gt;

&lt;p&gt;If you followed all the steps above just type:&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="nv"&gt;$ &lt;/span&gt;EasyASM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And if you skipped the last step:&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="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &amp;lt;/path/where/you/cloned/the/project&amp;gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;./EasyASM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should expect this output in your console:&lt;br&gt;
&lt;em&gt;(there's a blinking cursor waiting for you start typing)&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;--- EasyASM MIPS32 mode (big endian) ----

Global base address = 0x10000000
Stack pointer address = 0x7fffeffc
Global memory size = 256 words
Stack size         = 256 words

&lt;/span&gt;&lt;span class="gp"&gt;ASM&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;_
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;The default mode is MIPS32 (big endian)&lt;/p&gt;

&lt;p&gt;To run it as &lt;strong&gt;X86 (little endian)&lt;/strong&gt;: &lt;code&gt;$ EasyASM --x86&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  EasyASM's own helper commands
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;#set&lt;/code&gt; store a value into a register or memory address&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;#show&lt;/code&gt; display what is stored in a register or memory address&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;#exec&lt;/code&gt; execute a whole assembler file&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;quit&lt;/code&gt; exit the command line prompt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now let's see a simple example running in EasyASM&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ASM&amp;gt; start:
ASM&amp;gt; &lt;span class="c"&gt;#set $t0 = 10&lt;/span&gt;
ASM&amp;gt; &lt;span class="c"&gt;#set $t1 = 20&lt;/span&gt;
ASM&amp;gt; lbl_add1: add &lt;span class="nv"&gt;$t2&lt;/span&gt;, &lt;span class="nv"&gt;$t0&lt;/span&gt;, &lt;span class="nv"&gt;$t1&lt;/span&gt;
&lt;span class="nv"&gt;$t2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 0x1E 30 30
ASM&amp;gt; &lt;span class="c"&gt;#show $t2&lt;/span&gt;
&lt;span class="nv"&gt;$t2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 30
ASM&amp;gt; _
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can see right after a calc operation, EasyASM will show us the result value stored in the register in three different formats:&lt;br&gt;
&lt;code&gt;[target register] = [HEX] [Signed Decimal] [Unsigned Decimal]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Note: &lt;em&gt;We can add labels but we cannot jump to &lt;code&gt;not existing&lt;/code&gt; labels, so if we want to jump to a label further down in the program, we'd better use a &lt;code&gt;file.asm&lt;/code&gt; and execute it with the &lt;code&gt;#exec&lt;/code&gt; command&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;I hope this can be helpful so that someone can really take full advantage of the power of this project.&lt;/p&gt;

&lt;p&gt;Thanks for reading! 😊&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>My GitHub Profile</title>
      <dc:creator>Kevin J. Estevez</dc:creator>
      <pubDate>Tue, 08 Sep 2020 01:25:34 +0000</pubDate>
      <link>https://forem.com/kenystev/my-github-profile-4a3a</link>
      <guid>https://forem.com/kenystev/my-github-profile-4a3a</guid>
      <description>&lt;p&gt;Recently I read a few posts and articles about the new feature of GitHub to customize your profile with a Readme file.&lt;/p&gt;

&lt;p&gt;Then I took ideas from those posts and updated my profile, so here's the result:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/KenyStev"&gt;
        KenyStev
      &lt;/a&gt; / &lt;a href="https://github.com/KenyStev/KenyStev"&gt;
        KenyStev
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a href="https://github.com/ryo-ma/github-profile-trophy"&gt;&lt;img src="https://camo.githubusercontent.com/b5372ac4c0dd53d80393eb26fe59a2716ebf5242/68747470733a2f2f6769746875622d70726f66696c652d74726f7068792e76657263656c2e6170702f3f757365726e616d653d4b656e7953746576267468656d653d6f6e656461726b" alt="trophy"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
Hi there, I'm Kevin 👋
&lt;/h3&gt;
&lt;p&gt;I'm a software engineer who is passionate about making well structured clean and deep core algorithms, so I'm pretty oriented to game development, hyped by compilers developing and all kind of data structures like trees, graphs, maps, sets, hashes and so on.&lt;/p&gt;
&lt;p&gt;Although when working for a company I've been more oriented and experienced to work as a Full-Stack developer, from bottom up making Database decisions, Controllers, API endpoints (Backend), Templating views and Implementing full Frontend pages whether Single Page Applications, Server Side Rendering or Hybrid.&lt;/p&gt;
&lt;p&gt;I've got sharped the skills of fast learning, fit in the desired environment and performing deep useful researches; so it doesn't matter the stack, I'd better handle the task, I bet I'll commit it.&lt;/p&gt;
&lt;p&gt;I'm eager to learn every single day and become the better version of myself. Although most of the technologies I've been used to work with…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/KenyStev/KenyStev"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Pretty simple I know but it's better than nothing.&lt;/p&gt;




&lt;h3&gt;
  
  
  Here the plugins I used to have polished like that:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ryo-ma/github-profile-trophy"&gt;github-profile-trophy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/anuraghazra/github-readme-stats"&gt;github-readme-stats&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>career</category>
      <category>github</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Interview Tests/Challenges, what companies are looking for?</title>
      <dc:creator>Kevin J. Estevez</dc:creator>
      <pubDate>Thu, 23 Jan 2020 19:47:35 +0000</pubDate>
      <link>https://forem.com/kenystev/interview-tests-challenges-what-companies-are-looking-for-1jin</link>
      <guid>https://forem.com/kenystev/interview-tests-challenges-what-companies-are-looking-for-1jin</guid>
      <description>&lt;p&gt;I was recently looking for a new job as middle developer, spent about one and a half month having interviews, applying here and there to whatever job opportunity I thought it was a good match for me or if it looked like something I'd like to get involved in as a new technology or a new programming language even if it meant to apply as a junior dev.&lt;/p&gt;

&lt;p&gt;And to be honest, it has been exhausting doing those code challenges which some of them took me about a week to complete; others were shorter but even though I guess doing those code challenges like a short project is quite more legit to test a developer's skill than some kind of timed quizzes, which ask you to make some sort of math algorithm in short period of time as 30 mins for example.&lt;/p&gt;

&lt;h2&gt;
  
  
  My reasons? there we go:
&lt;/h2&gt;

&lt;p&gt;Real life is about solving problems and getting things done, which is one of the hardest skills to get for most of the developers.&lt;/p&gt;

&lt;p&gt;That's why I say challenging developers this way is even more legit for making a developer probe their skills and look if they are good at finishing stuff even if they had some issues during the process with any of the technologies implied.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Buuut!&lt;/strong&gt; and here is where I want to be careful: &lt;em&gt;when you are hunting for a job&lt;/em&gt; you &lt;em&gt;Must&lt;/em&gt; be careful about what kind of company are you targeting and plan ahead your expectations for it (same as companies does).&lt;/p&gt;

&lt;p&gt;although I think those kind of challenges are good at choosing the right developer, it will depend on what the company is looking for, what is the company's developer target, some companies look for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;devs who are good at finishing things even if they don't have a degree in computer science at all&lt;/li&gt;
&lt;li&gt;devs with a deep understanding in certain technologies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that's the reason why I say that you better target the type of company you are looking for, the kind of company you think you fit better based on your personality.&lt;/p&gt;

&lt;p&gt;Do you homework and know more about the company you want to work in, the kind of culture, the kind of developers this company grows, how much long in depth this company goes for in the tech field!&lt;/p&gt;

&lt;p&gt;good luck!&lt;/p&gt;

</description>
      <category>career</category>
      <category>jobhunting</category>
    </item>
    <item>
      <title>Looking for a Junior compiler position</title>
      <dc:creator>Kevin J. Estevez</dc:creator>
      <pubDate>Fri, 02 Aug 2019 15:38:37 +0000</pubDate>
      <link>https://forem.com/kenystev/looking-for-a-junior-compiler-position-445</link>
      <guid>https://forem.com/kenystev/looking-for-a-junior-compiler-position-445</guid>
      <description>&lt;p&gt;Hello everyone,&lt;/p&gt;

&lt;p&gt;I'm currently looking for a job and I want to move from a web developer to a compiler developer, I'm looking for remote and junior positions in the field if do you have any suggestion or know about any opening.&lt;/p&gt;

&lt;p&gt;Thank you so much!&lt;/p&gt;

</description>
      <category>compiler</category>
      <category>career</category>
    </item>
    <item>
      <title>Understanding how `this` works in Javascript - Default Binding</title>
      <dc:creator>Kevin J. Estevez</dc:creator>
      <pubDate>Mon, 18 Mar 2019 19:34:30 +0000</pubDate>
      <link>https://forem.com/kenystev/understanding-how-this-works-in-javascript---default-binding-56m4</link>
      <guid>https://forem.com/kenystev/understanding-how-this-works-in-javascript---default-binding-56m4</guid>
      <description>&lt;p&gt;We've seen in the previous post that &lt;code&gt;this&lt;/code&gt; is bound depending on where is called, if you haven't read it please go back to &lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/kenystev" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F134273%2F6f73ccd2-d5f3-4f58-a873-e1e3bf7ae1bb.png" alt="kenystev"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/kenystev/understanding-how-this-works-in-javascript---the-call-site-3hj3" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Understanding how `this` works in Javascript - The call-site&lt;/h2&gt;
      &lt;h3&gt;Kevin J. Estevez ・ Mar 18 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#ignoredconcepts&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#gettingdeeper&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;I'll start by saying that default binding is the last case which is going to match in case any other fit.&lt;/p&gt;

&lt;p&gt;When default binding is applied, &lt;strong&gt;the global object&lt;/strong&gt; will be bind to the called function, consider the next code:&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;function&lt;/span&gt; &lt;span class="nf"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;bar&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;bazz&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nf"&gt;bazz&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nf"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  &lt;span class="c1"&gt;// 2&lt;/span&gt;
&lt;span class="nf"&gt;bar&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  &lt;span class="c1"&gt;// 5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is worth to point out that &lt;strong&gt;global object&lt;/strong&gt; will be eligible just if &lt;code&gt;strict mode&lt;/code&gt; is not set either inside or outside the definition scope of the called function, but if &lt;code&gt;'use strict'&lt;/code&gt; is set at one of them, then &lt;code&gt;this = undefined&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;'use strict'&lt;/code&gt; inside function's definition&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;function&lt;/span&gt; &lt;span class="nf"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;use strict&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nf"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  &lt;span class="c1"&gt;// TypeError: Cannot read property 'a' of undefined (this = undefined)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;'use strict'&lt;/code&gt; outside function's definition&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;function&lt;/span&gt; &lt;span class="nf"&gt;bar&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;use strict&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;bazz&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nf"&gt;bazz&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nf"&gt;bar&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  &lt;span class="c1"&gt;// TypeError: Cannot read property 'b' of undefined (this = undefined)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's worth to point out, despite of biding is entirely based on &lt;em&gt;call-site&lt;/em&gt;, the &lt;code&gt;'use strict'&lt;/code&gt; concern is totally base on where the function itself is declared.&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;function&lt;/span&gt; &lt;span class="nf"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;use strict&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;    
    &lt;span class="nf"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  &lt;span class="c1"&gt;// 3&lt;/span&gt;
&lt;span class="p"&gt;})();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>programming</category>
      <category>ignoredconcepts</category>
      <category>gettingdeeper</category>
    </item>
    <item>
      <title>Understanding how `this` works in Javascript - The call-site</title>
      <dc:creator>Kevin J. Estevez</dc:creator>
      <pubDate>Mon, 18 Mar 2019 19:33:41 +0000</pubDate>
      <link>https://forem.com/kenystev/understanding-how-this-works-in-javascript---the-call-site-3hj3</link>
      <guid>https://forem.com/kenystev/understanding-how-this-works-in-javascript---the-call-site-3hj3</guid>
      <description>

&lt;p&gt;If you have ever gotten your hands dirty with some javascript code, you'd maybe hit with &lt;code&gt;this&lt;/code&gt; keyword's unexpected behavior, like it turd out to be &lt;code&gt;undefined&lt;/code&gt; or you've probably declared a global variable, or maybe you just got another value but not what you were looking for.&lt;/p&gt;

&lt;p&gt;If you're like me who came from a firm basis on Object Oriented Programming (aka OOP), and you're used to work with stuff like classes, class’s methods, instantiation, object's instance, constructors, etc. Then you'll notice in javascript this kind of concepts are slightly different and it tends to confuse.&lt;/p&gt;

&lt;p&gt;Here specially I'm going to talk about the way &lt;code&gt;this&lt;/code&gt; keyword works and the different kinds of how it could be bound to a function regardless either explicitly or implicitly. And what is the precedence of the binding methods?.&lt;/p&gt;

&lt;p&gt;Let's get started ;)&lt;/p&gt;

&lt;h1&gt;
  
  
  4 types of binding &lt;code&gt;this&lt;/code&gt;
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://dev.to/kenystev/understanding-how-this-works-in-javascript---default-binding-56m4"&gt;Default Binding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Implicit Binding&lt;/li&gt;
&lt;li&gt;Explicit Binding&lt;/li&gt;
&lt;li&gt;new binding&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And they have nothing to do with what we've learnt from classes by OOP.&lt;/p&gt;

&lt;p&gt;In Javascript &lt;code&gt;this&lt;/code&gt; is bound to an object and it depends on &lt;strong&gt;not where the function is declared&lt;/strong&gt; but where the function is called.&lt;br&gt;
So we should take a look at where the function is called to answer what does &lt;code&gt;this&lt;/code&gt; reference to?&lt;/p&gt;

&lt;p&gt;Let's get deep into some code:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;buzz&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// call-stack is: foo -&amp;gt; fizz -&amp;gt; buzz&lt;/span&gt;
    &lt;span class="c1"&gt;// then, our call-site is fizz&lt;/span&gt;

    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'buzz'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;fizz&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// call-stack is: foo -&amp;gt; fizz&lt;/span&gt;
    &lt;span class="c1"&gt;// then, our call-site is foo&lt;/span&gt;

    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'fizz'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;buzz&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// &amp;lt;-- call-site for buzz&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// call-stack is: foo&lt;/span&gt;
    &lt;span class="c1"&gt;// then, our call-site is in the global scope&lt;/span&gt;

    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'foo'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;fizz&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// &amp;lt;-- call-site for fizz&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  &lt;span class="c1"&gt;// &amp;lt;-- call-site for foo&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;You should be careful when you're analyzing your call-stack to determine what your actual call-site is.&lt;/p&gt;

&lt;p&gt;The call-stack is the sequence of your functions called in order, then your call-site is the function called right before your actual function, for instance:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Initial&lt;/th&gt;
&lt;th&gt;First call&lt;/th&gt;
&lt;th&gt;Second call&lt;/th&gt;
&lt;th&gt;Third call&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;(empty stack)&lt;/td&gt;
&lt;td&gt;foo()&lt;/td&gt;
&lt;td&gt;fizz()&lt;/td&gt;
&lt;td&gt;buzz()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;foo()&lt;/td&gt;
&lt;td&gt;fizz()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;foo()&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Being at the bottom of the stack, the first function called, and at the top of the stack, the last one.&lt;/p&gt;

&lt;p&gt;Then if we were looking for the call-site for &lt;code&gt;foo()&lt;/code&gt;, since there is nothing below, the call-site would be the global scope.&lt;/p&gt;

&lt;p&gt;For &lt;code&gt;fizz()&lt;/code&gt; the call-site would be foo.&lt;br&gt;
For &lt;code&gt;buzz()&lt;/code&gt; the call-site would be fizz.&lt;br&gt;
An so on...&lt;/p&gt;

&lt;p&gt;Now we understand better what the call-site is and where to find it, we may proceed to the next chapter: &lt;a href="https://dev.to/kenystev/understanding-how-this-works-in-javascript---default-binding-56m4"&gt;&lt;em&gt;&lt;strong&gt;Default Binding&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading ;)&lt;br&gt;
I'll be writing the next posts of the series soon.&lt;/p&gt;


</description>
      <category>javascript</category>
      <category>programming</category>
      <category>ignoredconcepts</category>
      <category>gettingdeeper</category>
    </item>
    <item>
      <title>How to declutter the bunch of stuff you want to do at the same time?</title>
      <dc:creator>Kevin J. Estevez</dc:creator>
      <pubDate>Thu, 07 Feb 2019 17:15:21 +0000</pubDate>
      <link>https://forem.com/kenystev/how-to-declutter-the-bunch-of-stuff-you-want-to-do-at-the-same-time-33f1</link>
      <guid>https://forem.com/kenystev/how-to-declutter-the-bunch-of-stuff-you-want-to-do-at-the-same-time-33f1</guid>
      <description>

&lt;p&gt;I've decided to start my journey here on dev.to with this post.&lt;br&gt;
Since a few months ago I've been thinking about so many things I'd like to do, but then again, I've &lt;em&gt;just been thinking&lt;/em&gt; and not &lt;strong&gt;really making&lt;/strong&gt; my dreams come true.&lt;/p&gt;

&lt;p&gt;And that's just been because my time had started draining into other things. Last year, 2018, was an awesome year for me, but it was a life changing year for me as well.&lt;/p&gt;

&lt;h1&gt;
  
  
  2018 journey
&lt;/h1&gt;

&lt;h4&gt;
  
  
  awesome study year
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;I met my closest friends from college, who are also colleagues in the same field of study (Computer Science), so much better&lt;/li&gt;
&lt;li&gt;I met new friends who became close friends too&lt;/li&gt;
&lt;li&gt;Started full-time working as a web developer for a company few months before graduating&lt;/li&gt;
&lt;li&gt;Graduated from college&lt;/li&gt;
&lt;li&gt;Learnt a lot new things on web development flow and docker containers&lt;/li&gt;
&lt;li&gt;Learnt and got experience with React.js, ES6, HTML5, CSS3 in particular&lt;/li&gt;
&lt;li&gt;Could rest a little from the constant project working and studying within college&lt;/li&gt;
&lt;li&gt;Reached my dream of &lt;strong&gt;traveling to a different&lt;/strong&gt; country for vacation&lt;/li&gt;
&lt;li&gt;I participated in 2018’s hacktoberfest and earned the 5-PR contribution gift, partnered by &lt;strong&gt;DigitalOcean&lt;/strong&gt;, &lt;strong&gt;Github&lt;/strong&gt;, &lt;strong&gt;Docker&lt;/strong&gt; and &lt;strong&gt;Twilio&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Got focused on studying Japanese again&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  life changing year
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Entered the adult life of paying bills xD&lt;/li&gt;
&lt;li&gt;Now it's not college but the job the one that takes most of my time&lt;/li&gt;
&lt;li&gt;Got to get up too early every day (&lt;em&gt;I still don't get used to&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;Arrive too tired at home so I don't focus on my personal projects&lt;/li&gt;
&lt;li&gt;Problems managing my time an set up my schedule and stick to it&lt;/li&gt;
&lt;li&gt;Got stressed because there are too many things and projects I want to work on or be part of, or habits I want to stick to my day to day&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As you can see, 2018 was a great year for me but after all that I had a moment were I got stressed, really stressed, As I thought when college was over I'd have more time to spend on my real dreams and passions, but it wasn't true at all.&lt;/p&gt;

&lt;p&gt;By every day I was trying to:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- read at least one chapter of a book before work
- do my work as front-end developer in my job
- study at least 30mins of Japanese Vocabulary (I ended up studying more than an hour)
- practice my listening skill of English by watching at least a chapter of any series
- study/practice at least 30mins of Kanji
- study/practice 1 or 2 hours of Japanese grammar
- do at least 1 hour of swimming sport 
- go to the gym / work out
- go to the church (we've meetings everyday, its name is: The Light of the World)
- work on a personal project to improve my skills with Angular
- make a personal web portfolio
- make a personal project for improving my react native skills
- make a personal project for improving my compilers knowledge
- create a personal indie game and publish it
- learn unity
- contribute to opensource projects like Rosalila Engine
- learn Haskell better
- create and publish an npm module
- practice guitar
- read a book before sleep
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Obviously I always ended the day frustrated because I couldn't be committed to all that stuff in a day, I just ended doing ones more than others or nothing at all.&lt;/p&gt;

&lt;p&gt;But then I realized the actual issue was I was trying to do everything at the same time, so because of that I was feeling I had no time in the day for completing everything I wanted do.&lt;/p&gt;

&lt;p&gt;I still got a huge list of  &lt;strong&gt;TO DO&lt;/strong&gt; things in Trello, but now I just decided to make goals for each one and start completing them one by one or at least a few ones by every month.&lt;/p&gt;

&lt;p&gt;The key is just to start by prioritizing the ones you love, the ones you believe in, but one by one without getting your responsibilities out.&lt;/p&gt;

&lt;p&gt;I will start to contribute to opensource projects from little changes to meaningful ones in an increasing way, and I recognized too that I support open source community by writing posts and helping people in forums, chat channels, video tutorials and stuff like that.&lt;/p&gt;

&lt;p&gt;thanks for reading and wish me luck on the journey! ;)&lt;/p&gt;


</description>
      <category>productivity</category>
      <category>developinggoingon</category>
      <category>career</category>
    </item>
  </channel>
</rss>
