<?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>DEV Community: Jordi</title>
    <description>The latest articles on DEV Community by Jordi (@jordienr).</description>
    <link>https://dev.to/jordienr</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%2F164268%2F3cd51a66-7f04-418f-9b1c-8ba359d17412.jpg</url>
      <title>DEV Community: Jordi</title>
      <link>https://dev.to/jordienr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jordienr"/>
    <language>en</language>
    <item>
      <title>Where to deploy your node.js app [April 2022]</title>
      <dc:creator>Jordi</dc:creator>
      <pubDate>Sat, 30 Apr 2022 14:52:31 +0000</pubDate>
      <link>https://dev.to/jordienr/where-to-deploy-your-nodejs-app-april-2022-3pai</link>
      <guid>https://dev.to/jordienr/where-to-deploy-your-nodejs-app-april-2022-3pai</guid>
      <description>&lt;p&gt;These are some of the services I've been trying lately to deploy my backend applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://workers.cloudflare.com/" rel="noopener noreferrer"&gt;Cloudflare Workers&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Great DX, docs and community. Free course on egghead.io. Not compatible with all npm packages.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://begin.com/" rel="noopener noreferrer"&gt;Begin&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Begin deploys your app to AWS while offering a "vercel-like" frontend. Only compatible with npm for now. They respond quickly by email.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://railway.app/" rel="noopener noreferrer"&gt;Railway.app&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Railway is really promising. The web-app UX/UI reminds me of &lt;a href="https://linear.app/" rel="noopener noreferrer"&gt;Linear&lt;/a&gt;. Really good docs.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://render.com/" rel="noopener noreferrer"&gt;Render.com&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Vercel-like experience for backend apps. Kinda slow if you're on the free tier. Great developer experience and easy to use and get going.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.digitalocean.com/" rel="noopener noreferrer"&gt;Digital Ocean&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Slightly  higher learning curve but great option. Tons of tutorials and great documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.heroku.com/" rel="noopener noreferrer"&gt;Heroku&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Pretty much same as Digital Ocean. Really popular for beginners.&lt;/p&gt;

&lt;h1&gt;
  
  
  Honorable mentions
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.flightcontrol.dev/" rel="noopener noreferrer"&gt;Flight Control&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;New tool I haven't had the chance to try yet but looks really promising :)&lt;/p&gt;

&lt;p&gt;If you liked it consider &lt;a href="https://twitter.com/jordienr" rel="noopener noreferrer"&gt;following me on twitter&lt;/a&gt; :)&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>devops</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Best places to deploy your app in 2022</title>
      <dc:creator>Jordi</dc:creator>
      <pubDate>Thu, 23 Dec 2021 13:21:05 +0000</pubDate>
      <link>https://dev.to/jordienr/best-places-to-deploy-your-app-in-2022-13be</link>
      <guid>https://dev.to/jordienr/best-places-to-deploy-your-app-in-2022-13be</guid>
      <description>&lt;p&gt;A few days ago I wanted to deploy an app but didn't want to go through managing all the infrastructure on AWS. I wanted the same developer experience that I have with my frontend apps where I pick a repo in vercel and that's pretty much it. So here are some cloud providers that have a hundred times better developer experience than AWS/GC/Azure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fly.io
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://fly.io/" rel="noopener noreferrer"&gt;https://fly.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pricing: Freemium (has free tier)&lt;/p&gt;

&lt;p&gt;Description: Run your full stack apps (and databases!) all over the world. No ops required.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F3xxv33dlucgw2jse8ftt.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F3xxv33dlucgw2jse8ftt.JPG" alt="Fly.io" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Render.com
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://render.com/" rel="noopener noreferrer"&gt;https://render.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pricing: Freemium (has free tier)&lt;/p&gt;

&lt;p&gt;Description: Render is a unified cloud to build and run all your apps and websites with free TLS certificates, global CDN, private networks and auto deploys from Git.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fssljj4ynoy1pnsy77p7f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fssljj4ynoy1pnsy77p7f.png" alt="Render.com" width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Qovery
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.qovery.com/" rel="noopener noreferrer"&gt;https://www.qovery.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pricing: Freemium (has free tier)&lt;/p&gt;

&lt;p&gt;Description: Deploy your apps on AWS Better, faster, simpler&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fs4d03416t41vfnt9mtf0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fs4d03416t41vfnt9mtf0.png" alt="Qovery.com" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I ended up choosing Render.com. There's also Heroku but I'm sure most people know about it already :)&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://toolhunt.dev?ref=devto" rel="noopener noreferrer"&gt;Toolhunt.dev&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;This list was originally posted on &lt;a href="https://toolhunt.dev?ref=devto" rel="noopener noreferrer"&gt;Toolhunt.dev&lt;/a&gt; a website where I list great tools that help developers ship faster. You can find the original list here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.toolhunt.dev/where-to-deploy-backend-apps?ref=devto" rel="noopener noreferrer"&gt;https://www.toolhunt.dev/where-to-deploy-backend-apps&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for reading and have a great day ✌✌&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/jordienr" rel="noopener noreferrer"&gt;jordienr&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Questions YOU can ask during interviews</title>
      <dc:creator>Jordi</dc:creator>
      <pubDate>Wed, 02 Jun 2021 07:07:04 +0000</pubDate>
      <link>https://dev.to/jordienr/questions-you-can-ask-during-interviews-4kl9</link>
      <guid>https://dev.to/jordienr/questions-you-can-ask-during-interviews-4kl9</guid>
      <description>&lt;p&gt;Here are some of the questions I like to ask in interviews.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What stack would I be working on?&lt;/li&gt;
&lt;li&gt;What stack is the backend written on? (I'm front)&lt;/li&gt;
&lt;li&gt;How is the relationship with the backend teams or design teams?&lt;/li&gt;
&lt;li&gt;Would I be able to participate in design decisions?&lt;/li&gt;
&lt;li&gt;What is the design / frontend development process like?&lt;/li&gt;
&lt;li&gt;How do you measure developers performance?&lt;/li&gt;
&lt;li&gt;What is the best and worst part of working there?&lt;/li&gt;
&lt;li&gt;What are the biggest challenges in this project?&lt;/li&gt;
&lt;li&gt;What can you tell me about the project?&lt;/li&gt;
&lt;li&gt;What would you expect from me in X time?&lt;/li&gt;
&lt;li&gt;Do you give access to education tools / platforms (Egghead, - Pluralsight, Frontend Masters)?&lt;/li&gt;
&lt;li&gt;Why are you looking for more people, are you understaffed or want to start new projects?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you can come up with more, please share them in the comments!&lt;/p&gt;

&lt;h3&gt;
  
  
  Find me on &lt;a href="https://twitter.com/jordienr" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;
&lt;/h3&gt;

</description>
      <category>career</category>
      <category>codenewbie</category>
      <category>javascript</category>
      <category>html</category>
    </item>
    <item>
      <title>How to get your first job as a Software Developer</title>
      <dc:creator>Jordi</dc:creator>
      <pubDate>Tue, 25 May 2021 13:37:15 +0000</pubDate>
      <link>https://dev.to/jordienr/how-to-get-your-first-job-as-a-software-developer-5fi9</link>
      <guid>https://dev.to/jordienr/how-to-get-your-first-job-as-a-software-developer-5fi9</guid>
      <description>&lt;p&gt;Lately I've been reviewing junior frontend CVs and technical tests at my current job to help with the hiring process. They kinda remind me of me when I started and I realize now all the things I could've done better.&lt;/p&gt;

&lt;p&gt;First of all, there's a problem with people applying to jobs. Junior Frontend job offers can easily get 100+ sign-ups. It's impossible to check them all. If you don't have a degree or have no experience, or both, it's really easy for your CV to be ignored. I know it sucks, I've been there. But that's the reality.&lt;/p&gt;

&lt;p&gt;Maybe Netflix, Google and Apple can afford to hire enough people to check all the CVs but most businesses don't.&lt;/p&gt;

&lt;p&gt;What I recommend you do is cultivate a network so you don't have to rely on this process to find jobs. I did this without realizing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building your network
&lt;/h2&gt;

&lt;p&gt;I know most developers despise LinkedIn but without it, I probably wouldn't have made it. I wouldn't say I have a LinkedIn strategy but here's what I believe works best.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Find job-offers you want to apply to.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connect with people from that company (use the LinkedIn search to find them)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ask someone, recruiters or engineers, questions about the offer. Be polite. Let them know you know they are busy, and it's okay if they can't respond.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ask them who can you contact to ask more questions about the offer (whoever is in charge of the process)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add them through LinkedIn and pitch them (politely) why you think you're a good fit for the job.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You'll probably have to do this a bunch of times until you get a job, but in the process you're cultivating a pretty good LinkedIn network.&lt;/p&gt;

&lt;p&gt;With a LinkedIn network when you share stuff about what you're learning and building they will see it and most (in my experience) will like it. Eventually you'll start getting connection requests and messages from people that are looking for Junior Developers.&lt;/p&gt;

&lt;p&gt;In my experience, most people are pretty cool with you contacting them and will try to help you somehow if you let them know you're looking for a job. Specially developers.&lt;/p&gt;

&lt;p&gt;Some will be assholes, forget about it and move on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Follow me on &lt;a href="https://twitter.com/jordienr" rel="noopener noreferrer"&gt;twitter&lt;/a&gt; for more
&lt;/h3&gt;

</description>
      <category>career</category>
      <category>watercooler</category>
      <category>webdev</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>How to write more content when you don't have time</title>
      <dc:creator>Jordi</dc:creator>
      <pubDate>Sun, 23 May 2021 18:49:25 +0000</pubDate>
      <link>https://dev.to/jordienr/how-to-write-more-content-when-you-don-t-have-time-1l6f</link>
      <guid>https://dev.to/jordienr/how-to-write-more-content-when-you-don-t-have-time-1l6f</guid>
      <description>&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@glenncarstenspeters?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Glenn Carstens-Peters&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/writing?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have a full time job, and you've tried writing before, you'll find it's a really time-consuming process. After work, I don't want to jump on the keyboard again and start writing about things related to my job. But I've decided to try and write one article a week, and I've started to develop a system that makes it easy to write.&lt;/p&gt;

&lt;p&gt;In this article I'm going to show you my system and how I've organized it so that writing articles is faster and more rewarding. &lt;/p&gt;

&lt;h1&gt;
  
  
  1. Keep a bank of ideas
&lt;/h1&gt;

&lt;p&gt;I have a bank of ideas in a notion page. When I have an idea for an article I add a title (that later I might change) to this list so that I always have fresh ideas to pick from.&lt;/p&gt;

&lt;h1&gt;
  
  
  2. Outlines
&lt;/h1&gt;

&lt;p&gt;When I write an article I start first with an outline with stuff I'm going to talk about. Usually to come up with the outline I ask questions about the subject, or I google what people are asking about the subject. When you have questions you basically have the sections of your article, for example, let's say you're writing an article about Frontend Testing with Jest.&lt;/p&gt;

&lt;p&gt;"How do I install jest in my React project?" could be a question someone could have. So the first point in my article would be:&lt;/p&gt;

&lt;p&gt;"How to install Jest in your React Project" &lt;/p&gt;

&lt;p&gt;Sometimes I leave the question as the title of the section since it could help with SEO.&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Batching tasks
&lt;/h1&gt;

&lt;p&gt;When you sit down to write an outline what you can do is, instead of trying to write an outline and an article in a sitting, try and create 3 or 4 outlines for different articles. That way next time you sit down to write it will be easier.&lt;/p&gt;

&lt;h1&gt;
  
  
  4. Research when you have the outlines
&lt;/h1&gt;

&lt;p&gt;Once you have the outline, you just have to do the research for the sections you've decided that will go in the article. You don't have to become an expert on the whole topic. Just search and learn about the things you've decided will go in the article.&lt;/p&gt;

&lt;p&gt;What I also do is take a lot of notes when I do courses, read docs, learn new things by building them. Usually my notes make their way into articles.&lt;/p&gt;

&lt;h1&gt;
  
  
  5. Writing
&lt;/h1&gt;

&lt;p&gt;If you have a few titles and outlines, writing 2 or 3 articles in one sitting is usually faster than trying to start from scratch and do the whole process for one article. &lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Try to batch your tasks and keep a stash of ideas, outlines and notes so that when you sit down to write you're 100% ready and just have to put the words together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow me on &lt;a href="https://twitter.com/jordienr" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; for more :)
&lt;/h2&gt;

</description>
      <category>career</category>
      <category>codenewbie</category>
      <category>watercooler</category>
      <category>writing</category>
    </item>
    <item>
      <title>Vue Quick Tip #01: SFC Structure</title>
      <dc:creator>Jordi</dc:creator>
      <pubDate>Thu, 20 May 2021 06:42:08 +0000</pubDate>
      <link>https://dev.to/jordienr/vue-quick-tip-01-sfc-structure-252c</link>
      <guid>https://dev.to/jordienr/vue-quick-tip-01-sfc-structure-252c</guid>
      <description>&lt;p&gt;If you've been writing SFC (Single File Components) in Vue you're probably familiar with this structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;style&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;style&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Which is totally right and if you're comfortable using it, it's 100% ok. &lt;/p&gt;

&lt;p&gt;But if you think about it, when you're working on a component, you're rarely working with the &lt;code&gt;script&lt;/code&gt; and &lt;code&gt;style&lt;/code&gt; tags at the same time, right? &lt;/p&gt;

&lt;p&gt;You're always working between &lt;code&gt;template/style&lt;/code&gt; or &lt;code&gt;template/script&lt;/code&gt;, rarely ever &lt;code&gt;script/style&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That's why I recommend you start using this structure instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;style&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;style&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This way you have less scroll distance between your targets and the template works as a clear visual "wall" between your script and your style. Once you get used to it, you won't want to go back!&lt;/p&gt;

&lt;p&gt;That's my quick tip for today, follow me on &lt;a href="https://twitter.com/jordienr" rel="noopener noreferrer"&gt;twitter&lt;/a&gt; if you enjoyed it :)&lt;/p&gt;

&lt;p&gt;Have a good day!&lt;/p&gt;

</description>
      <category>vue</category>
      <category>codenewbie</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Everything I use daily as a Senior Frontend Engineer</title>
      <dc:creator>Jordi</dc:creator>
      <pubDate>Sun, 09 May 2021 08:30:22 +0000</pubDate>
      <link>https://dev.to/jordienr/everything-i-use-daily-as-a-senior-frontend-engineer-4pa4</link>
      <guid>https://dev.to/jordienr/everything-i-use-daily-as-a-senior-frontend-engineer-4pa4</guid>
      <description>&lt;h1&gt;
  
  
  VSCode
&lt;/h1&gt;

&lt;p&gt;I use these extensions:&lt;/p&gt;

&lt;h2&gt;
  
  
  Utilities
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Auto Close Tag: Automatically add HTML/XML close tag, same as Visual Studio IDE or Sublime Text&lt;/li&gt;
&lt;li&gt;Auto Rename Tag: Auto rename paired HTML/XML tag&lt;/li&gt;
&lt;li&gt;Better Comments: Improve your code commenting by annotating with alert, informational, TODOs, and more!&lt;/li&gt;
&lt;li&gt;Better TOML: Better TOML Language support&lt;/li&gt;
&lt;li&gt;Bracket Pair Colorizer: A customizable extension for colorizing matching brackets&lt;/li&gt;
&lt;li&gt;DotENV: Support for dotenv file syntax&lt;/li&gt;
&lt;li&gt;ESLint: Integrates ESLint JavaScript into VS Code.&lt;/li&gt;
&lt;li&gt;Firebase: Firestore Security Rules syntax highlighting&lt;/li&gt;
&lt;li&gt;GitLens: Supercharge the Git capabilities built into Visual Studio Code — Visualize code authorship at a glance via Git blame annotations and code lens, seamlessly navigate and explore Git repositories, gain valuable insights via powerful comparison commands, and so much more&lt;/li&gt;
&lt;li&gt;Gremlins Tracker: Reveals some characters that can be harmful because they are invisible or looking like legitimate ones. Inspired by Sublime Gremlins.&lt;/li&gt;
&lt;li&gt;Import Cost: Display import/require package size in the editor&lt;/li&gt;
&lt;li&gt;Intellisense for CSS class names in HTML: CSS class name completion for the HTML class attribute based on the definitions found in your workspace.&lt;/li&gt;
&lt;li&gt;Jest: Use Facebook's Jest With Pleasure.&lt;/li&gt;
&lt;li&gt;Jest Test Explorer: Run your Jest tests in the Sidebar of Visual Studio Code&lt;/li&gt;
&lt;li&gt;Markdown Preview Enhanced: Markdown Preview Enhanced ported to vscode&lt;/li&gt;
&lt;li&gt;markdownlint: Markdown linting and style checking for Visual Studio Code&lt;/li&gt;
&lt;li&gt;Material Design icons Intellisense&lt;/li&gt;
&lt;li&gt;npm Intellisense&lt;/li&gt;
&lt;li&gt;Path Intellisense&lt;/li&gt;
&lt;li&gt;Prettier&lt;/li&gt;
&lt;li&gt;Project Manager: Easily switch between projects&lt;/li&gt;
&lt;li&gt;Rainbow CSV: Highlight CSV and TSV files, Run SQL-like queries&lt;/li&gt;
&lt;li&gt;Random Everything: Generate random ints, floats, strings, words, etc.&lt;/li&gt;
&lt;li&gt;SCSS Intellisense: Advanced autocompletion and refactoring support for SCSS&lt;/li&gt;
&lt;li&gt;Todo Tree: Show TODO, FIXME, etc. comment tags in a tree view&lt;/li&gt;
&lt;li&gt;TS QuickFixes: Quick fixes for typescript&lt;/li&gt;
&lt;li&gt;TS&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Look &amp;amp; feel
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fluent Icons: Fluent product icons for Visual Studio Code&lt;/li&gt;
&lt;li&gt;GlassIt-VSC: VS Code Extension to set window to transparent on Windows and Linux platforms.&lt;/li&gt;
&lt;li&gt;Peacock: Subtly change the workspace color of your workspace. Ideal when you have multiple VS Code instances, and you want to quickly identify which is which.&lt;/li&gt;
&lt;li&gt;Yi Dark &amp;amp; Yi Light Themes&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Git Bash Terminal
&lt;/h1&gt;

&lt;p&gt;I use it to CRUD between folders &amp;amp; files. Open projects in VS Code, manage Git in projects, use VIM, etc.&lt;/p&gt;

&lt;p&gt;I recommend you set up some aliases for the most common commands you type.&lt;/p&gt;

&lt;p&gt;For example, I have aliases to quickly move to folders like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;alias cdhp="cd h:/projects"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or run npm commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;alias nr="npm run"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Screen to GIF
&lt;/h1&gt;

&lt;p&gt;I'm a frontend developer, so most of my work can be screenshotted or screengiffed (I made this word up) which is really useful when working remotely. I use Screen to GIF to quickly create GIFs of parts of the UI to show how it's going or working. This tool is really helpful to have better async conversations with different teams.&lt;/p&gt;

&lt;h1&gt;
  
  
  Todoist
&lt;/h1&gt;

&lt;p&gt;Even tho at work I use Azure I like to keep a personal to-do list to keep track of tasks I'm working on. I pay the todoist subscription which is pretty reasonable to have everything in one place. There are other free alternatives like trello, notion and more.&lt;/p&gt;

&lt;h1&gt;
  
  
  Notion
&lt;/h1&gt;

&lt;p&gt;I use Notion only for documentation and taking notes. I find it pretty slow but haven't found any alternatives that I like. &lt;/p&gt;

&lt;h1&gt;
  
  
  Figma
&lt;/h1&gt;

&lt;p&gt;Even tho I usually don't participate in design processes Figma is really useful to create graphics for documentation. I used to do freelance UI Design, so I'm pretty comfortable with the tool. I'd recommend anyone who is working in Frontend development to get comfortable with Figma.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;These are all the tools I use on a daily basis. Only with these I can do my job 100% no problem. I believe that having more tools adds complexity to your day, so I try to keep it simple. I'd recommend you don't have too many tools in your belt and have a clear goal for each. &lt;/p&gt;

&lt;p&gt;I could keep track of tasks in Notion, but I prefer to use Notion only for documentation so that it doesn't get too messy.&lt;/p&gt;

&lt;h1&gt;
  
  
  So, what are your tools? Leave a comment and share them!
&lt;/h1&gt;

&lt;p&gt;Follow me on &lt;a href="https://twitter.com/jordienr" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; for more.&lt;/p&gt;

</description>
      <category>career</category>
      <category>codenewbie</category>
      <category>webdev</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Create CSS Gradient Animations Effortlessly 🌌</title>
      <dc:creator>Jordi</dc:creator>
      <pubDate>Tue, 04 May 2021 07:42:08 +0000</pubDate>
      <link>https://dev.to/jordienr/create-css-gradient-animations-effortlessly-3ok3</link>
      <guid>https://dev.to/jordienr/create-css-gradient-animations-effortlessly-3ok3</guid>
      <description>&lt;p&gt;Here's a preview of what we'll make 👇&lt;/p&gt;

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

&lt;h2&gt;
  
  
  1. Create a gradient
&lt;/h2&gt;

&lt;p&gt;I'll save mine in a variable for easy reuse.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--main-gradient&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;linear-gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-66deg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#15162a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#291a33&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#381a2c&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#121e42&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Create a container div and add the background
&lt;/h2&gt;

&lt;p&gt;We use background-size to zoom into the gradient.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--main-gradient&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;background-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;400%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Create the animation
&lt;/h2&gt;

&lt;p&gt;This is a basic animation that changes the background-position. Since we zoomed into the gradient it will look like it's moving.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;gradient&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0%&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;00%&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Add the animation to our container!
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--main-gradient&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;background-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;400%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;gradient&lt;/span&gt; &lt;span class="m"&gt;8s&lt;/span&gt; &lt;span class="n"&gt;ease&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can check the codepen &lt;a href="https://codepen.io/jordienric/pen/JjEVgXv" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Follow me on &lt;a href="https://twitter.com/jordienr" rel="noopener noreferrer"&gt;twitter&lt;/a&gt; for more!
&lt;/h3&gt;

</description>
      <category>css</category>
      <category>codenewbie</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>7 pieces of advice I wish I knew when I started as a Junior Software Engineer</title>
      <dc:creator>Jordi</dc:creator>
      <pubDate>Tue, 04 May 2021 07:38:46 +0000</pubDate>
      <link>https://dev.to/jordienr/7-pieces-of-advice-i-d-give-to-my-younger-developer-self-np6</link>
      <guid>https://dev.to/jordienr/7-pieces-of-advice-i-d-give-to-my-younger-developer-self-np6</guid>
      <description>&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@corinarainer?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Corina Rainer&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/taking-notes?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Someone asked this question recently and this are my thoughts about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Write more &amp;amp; take notes
&lt;/h2&gt;

&lt;p&gt;Writing is a really valuable skill for developers, the sooner you start developing it the better. Take notes so you have stuff you can write about later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Teach what you learn
&lt;/h2&gt;

&lt;p&gt;The best moment to teach something is when you just learned it. Apply to do workshops with other developers, write articles, create videos. Teach what you learned and you will solidify that knowledge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Show your work
&lt;/h2&gt;

&lt;p&gt;You'll feel imposter syndrome every time. Publish articles, create websites, try to get people to use them. You'll only find the things you can improve at when you see people reacting to your work. &lt;/p&gt;

&lt;h2&gt;
  
  
  Connect with people
&lt;/h2&gt;

&lt;p&gt;Try not to be just a lurker and participate in conversations about topics you're interested in. Give your opinion and your thoughts. Learn from others.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ask more questions, even the stupid ones
&lt;/h2&gt;

&lt;p&gt;Specially the stupid ones. Asking questions will start conversations that will make you learn 100% times more than tutorials and books.&lt;/p&gt;

&lt;p&gt;Asking good questions is a great skill, and you develop it by asking stupid questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chill, you don't have to know everything by tomorrow
&lt;/h2&gt;

&lt;p&gt;Learn things as you need them. Don't rush it or you'll burn out of tutorials, books and making projects for the sake of learning technologies.&lt;/p&gt;

&lt;h2&gt;
  
  
  A healthy lifestyle will make you more productive
&lt;/h2&gt;

&lt;p&gt;5 hours of work a day, exercise and healthy diet will get more done than 12 hours of work a day. If it's not sustainable don't do it.&lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://twitter.com/jordienr" rel="noopener noreferrer"&gt;twitter&lt;/a&gt; for more.&lt;/p&gt;

</description>
      <category>watercooler</category>
      <category>codenewbie</category>
      <category>career</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I gave my first workshop yesterday. Here's what I learned.</title>
      <dc:creator>Jordi</dc:creator>
      <pubDate>Sat, 01 May 2021 09:48:23 +0000</pubDate>
      <link>https://dev.to/jordienr/i-gave-my-first-workshop-yesterday-here-s-what-i-learned-8pn</link>
      <guid>https://dev.to/jordienr/i-gave-my-first-workshop-yesterday-here-s-what-i-learned-8pn</guid>
      <description>&lt;p&gt;Hello! Yesterday I gave my first ever workshop, about frontend testing principles. Lasted 2 hours and 20+ people showed up. I learned a ton. Here are the things I'll do better next time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Only write bullet points of stuff I want to talk about and improvise more. I had notes that didn't help me because they were paragraphs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Prepare possible questions people might have since asking "anyone has any questions?" doesn't seem to work. I think most people don't have time to process the info + come up with questions. Thankfully I had 2 very engaged participants in the workshop that asked questions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ask participants by email a few days before the workshop how much experience do they have with the thing I'm going to teach. I did this too late, and I had to change stuff the day before the workshop. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Prepare real life examples and stories of real life situations where whatever I'm explaining is used / helps. People will not remember technical stuff but will remember stories. I'll try to make these stories funny if I can.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Any tips you'd like to share?&lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://twitter.com/jordienr" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; for more!&lt;/p&gt;

</description>
      <category>career</category>
      <category>codenewbie</category>
      <category>webdev</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Learn to create your own mini testing library in 5 minutes</title>
      <dc:creator>Jordi</dc:creator>
      <pubDate>Mon, 26 Apr 2021 15:30:29 +0000</pubDate>
      <link>https://dev.to/jordienr/learn-to-create-your-own-mini-testing-library-in-5-minutes-948</link>
      <guid>https://dev.to/jordienr/learn-to-create-your-own-mini-testing-library-in-5-minutes-948</guid>
      <description>&lt;h2&gt;
  
  
  Before you start
&lt;/h2&gt;

&lt;p&gt;Create a &lt;code&gt;testing.js&lt;/code&gt; file and run it with &lt;code&gt;node testing.js&lt;/code&gt; to try your library.&lt;/p&gt;

&lt;p&gt;This article is aimed at beginners who just started using jest and want to have a better grasp on how it works behind the scenes.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to create our library
&lt;/h2&gt;

&lt;p&gt;If you've used jest you've probably seen the &lt;code&gt;test() - expect() - toBe()&lt;/code&gt; methods.&lt;/p&gt;

&lt;p&gt;I'm going to teach you how to build your own "mini" testing library, so you can have these methods and test your app without installing jest, just using Node.&lt;/p&gt;

&lt;p&gt;First let's create a method we can test&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&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="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now let's create a function to test this method&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&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="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Test failed. Sum function is broken!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now if we ever break our &lt;code&gt;sum&lt;/code&gt; function our &lt;code&gt;if&lt;/code&gt; statement will send an error to the console.&lt;/p&gt;

&lt;p&gt;This works, but we want to test our other methods too and writing if statements would be repeating too much code. Remember, keep your code DRY! (Don't Repeat Yourself)&lt;/p&gt;

&lt;p&gt;Let's turn that logic into a reusable function. We'll call it &lt;code&gt;expect&lt;/code&gt; and it will return a function called &lt;code&gt;toBe&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;actual&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;toBe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;expected&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;actual&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nx"&gt;expected&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Test failed&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we can test our function like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)).&lt;/span&gt;&lt;span class="nf"&gt;toBe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is what we call an assertion.&lt;/p&gt;

&lt;p&gt;If our sum function works, we'll get nothing in the console. If it's broken however, we'll get an error.&lt;/p&gt;

&lt;p&gt;Now let's create a &lt;strong&gt;test suite&lt;/strong&gt;! We want to test our sum function with different numbers to make sure it always works.&lt;/p&gt;

&lt;p&gt;For this we'll create a function called &lt;code&gt;test&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;callback&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="nx"&gt;title&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; tests passed!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&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;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Some tests failed!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we can test our sum function or any other function like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Sum&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;expected1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;expected2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;expected3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;

    &lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result1&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toBe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;expected1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result2&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toBe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;expected2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result3&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toBe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;expected3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we'll get "Sum tests passed" if our function works correctly or "Some tests failed" if we break it.&lt;/p&gt;

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

&lt;p&gt;The idea behind this article is showing the simplicity behind some basic functionalities of testing libraries. If you understand how they're built you'll have a better time using them. If you've followed the code in this tutorial you'll probably get some ideas on how to improve it. &lt;/p&gt;

&lt;p&gt;You could try adding more functions like &lt;code&gt;notToBe&lt;/code&gt; or &lt;code&gt;equals&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;I decided to not use newer JS syntax in this article to make it easier to understand for those starting out. &lt;/p&gt;




&lt;p&gt;Find me on &lt;a href="https://twitter.com/jordienr" rel="noopener noreferrer"&gt;twitter&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;I'm also working on a website &amp;amp; newsletter with resources, tools and cool stuff for frontend developers, you can find it here: &lt;a href="https://zerotofrontend.dev/" rel="noopener noreferrer"&gt;https://zerotofrontend.dev/&lt;/a&gt; it's currently on "soft launch" mode and I haven't started sending the letters yet. Subscribe now to get the first one in May!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>testing</category>
    </item>
    <item>
      <title>How to exit vim &amp; learn vim in 5 minutes</title>
      <dc:creator>Jordi</dc:creator>
      <pubDate>Mon, 26 Apr 2021 10:19:30 +0000</pubDate>
      <link>https://dev.to/jordienr/how-to-exit-vim-learn-vim-in-5-minutes-1ih0</link>
      <guid>https://dev.to/jordienr/how-to-exit-vim-learn-vim-in-5-minutes-1ih0</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Press Escape, this puts vim in "normal mode".&lt;/li&gt;
&lt;li&gt;write :q! to quit without saving.&lt;/li&gt;
&lt;li&gt;write :wq to quit while saving the file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's it. Vim is pretty cool and fast once you learn how to use it.&lt;/p&gt;

&lt;p&gt;Check this if you want to learn the basics of Vim in 5 minutes:&lt;br&gt;
&lt;a href="https://paulgorman.org/technical/vim5minutes.html" rel="noopener noreferrer"&gt;Vim in 5 minutes&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Follow me on &lt;a href="https://twitter.com/jordienr" rel="noopener noreferrer"&gt;twitter&lt;/a&gt; for more.&lt;br&gt;
I'm building a newsletter with tools, resources and news about frontend development &lt;a href="https://zerotofrontend.dev" rel="noopener noreferrer"&gt;here&lt;/a&gt; if you're interested in that 🙂&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>webdev</category>
      <category>vim</category>
    </item>
  </channel>
</rss>
