<?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: Dominik Ilnicki</title>
    <description>The latest articles on DEV Community by Dominik Ilnicki (@dominikilnicki).</description>
    <link>https://dev.to/dominikilnicki</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%2F327638%2Ff4d04c27-ba89-4ccf-8e86-12f1513b7b62.jpg</url>
      <title>DEV Community: Dominik Ilnicki</title>
      <link>https://dev.to/dominikilnicki</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dominikilnicki"/>
    <language>en</language>
    <item>
      <title>I worked 3 weeks on trains traveling around Europe - report</title>
      <dc:creator>Dominik Ilnicki</dc:creator>
      <pubDate>Tue, 16 Aug 2022 20:27:00 +0000</pubDate>
      <link>https://dev.to/dominikilnicki/i-worked-3-weeks-on-trains-visiting-europe-report-492e</link>
      <guid>https://dev.to/dominikilnicki/i-worked-3-weeks-on-trains-visiting-europe-report-492e</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;Hey, I come to you with a report from &lt;strong&gt;working remotly from the three-week train-only euro-trip&lt;/strong&gt; I took at the begining of July. Below you can find all &lt;a href="https://www.linkedin.com/in/dominik-ilnicki/"&gt;LinkedIn&lt;/a&gt; posts I was writing during the trip. I decided to put all updates in a one place here. Maybe some of you find it interesting or even motivating. Enjoy!&lt;/p&gt;

&lt;h2&gt;
  
  
  1/7 (07/02/2022)
&lt;/h2&gt;

&lt;p&gt;Today, I’m starting a three-week train-only euro-trip through Poland-Germany-Netherlands-Belgium-France-Italy while still working 20h/week at Dataedo. &lt;/p&gt;

&lt;p&gt;I decided to document this journey and share the lights and shadows of working on a go. I’ve always wanted to do something like that and now I have a chance to try it out!&lt;/p&gt;

&lt;p&gt;Is it all going to be easy and without issues like on digital nomads' Instagram posts? Probably not, but I believe it’s going to be a great time and valuable experience. Right now I’m heading to Berlin to stay there for a couple of hours and then move to Hamburg for 2 days.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Fzho85t4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v5ru8yozvt04dachrsb7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fzho85t4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v5ru8yozvt04dachrsb7.png" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2/7
&lt;/h2&gt;

&lt;p&gt;So the week has started with some small defeats in terms of working from the road. &lt;/p&gt;

&lt;p&gt;Every Monday we have a team meeting to summarize and plan our work. Today, even though I was willing to join I couldn’t make it. My train was supposed to depart 15min before a meeting. I thought I could set everything up and join from the train, but there was a 20min delay… So I was already late. Then I was in rush to set everything up just to find out that the Internet connection is too slow for a video call and what’s more the only place I can seat is in a quiet zone. &lt;/p&gt;

&lt;p&gt;Going back to the Internet connection in Deutsche Bahn. It’s great for me to work - browse the Internet, and download small files, but most of the time not enough for a video call. &lt;/p&gt;

&lt;p&gt;I also experienced some weird and even potentially catastrophic situations. My colleague sent me a file I downloaded while connected to the train's Wi-Fi. The downloading was completed successfully, but I found out not all content appears. The file had drastically different sizes with every download (?!). After a few tries, I used my hotspot, and the size was correct, and everything was there.&lt;/p&gt;

&lt;p&gt;Today I came to Amsterdam from Hamburg and stay there for more 2 days.&lt;/p&gt;

&lt;p&gt;Key takeaways: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make sure I won’t be on a train during next Monday's meetings &lt;/li&gt;
&lt;li&gt;Working from the DB is completely doable for me &lt;/li&gt;
&lt;li&gt;Check if everything is fine with files I download via public Wi-Fi I guess 🤔&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YZm2uztf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dfxmnumvq4tvi1f43lkm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YZm2uztf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dfxmnumvq4tvi1f43lkm.png" alt="Image description" width="750" height="1000"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3/7
&lt;/h2&gt;

&lt;p&gt;Quick update from the road.&lt;/p&gt;

&lt;p&gt;I really feel like I’m getting used to it. I found out it’s really important to look for great places to work (cafes) ahead of time. Finding a good spot is harder than I thought, so it needs a bit of planning.&lt;/p&gt;

&lt;p&gt;What makes a spot good for me to work?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wi-Fi (most of places have it)&lt;/li&gt;
&lt;li&gt;Good location (not too far from the central station)&lt;/li&gt;
&lt;li&gt;Power sockets (of course)&lt;/li&gt;
&lt;li&gt;Good overall vibe (not too loud, more cafe than bar or club)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Key takeaways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flexible working hours rules (thank you Dataedo ❤️)&lt;/li&gt;
&lt;li&gt;Charge everything whenever it’s possible&lt;/li&gt;
&lt;li&gt;Plan where and when to work ahead&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Although so far it was awesome to see all the places and meet all the people, I need to admit I’m a bit of tired and my back hurts 😅&lt;/p&gt;

&lt;p&gt;After Amsterdam I was in Haag for 3h then Breda 🇳🇱 and spent the night in Antwerp 🇧🇪. The next day I moved from Antwerp to Paris - it took 7h and 4 trains, but I did it 😄&lt;/p&gt;

&lt;p&gt;PS&lt;br&gt;
Our Airbnb host canceled the reservation in Brussels 3h before arrival. We needed to find a new stay ASAP. Didn’t find in Brussels, but did in Antwerp so we must have changed our plans. No regrets though 😃&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pKihNpjt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qd26wd5fdbaeoq8169fl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pKihNpjt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qd26wd5fdbaeoq8169fl.png" alt="Image description" width="750" height="1000"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4/7
&lt;/h2&gt;

&lt;p&gt;Top unconventional workplace? For me working from the boat in La Rochelle 🇫🇷&lt;/p&gt;

&lt;p&gt;There was a WI-FI and electricity so why not to put together couple lines of code 😄 &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BWu8cgHd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pkfqlxsxzxhybqojyrkz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BWu8cgHd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pkfqlxsxzxhybqojyrkz.png" alt="Image description" width="750" height="1000"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5/7
&lt;/h2&gt;

&lt;p&gt;It's been 11 days since I've been traveling through Europe while working remotely.&lt;/p&gt;

&lt;p&gt;I've learned my lesson from the previous week and this Monday I was prepared to join our weekly meeting. I was in a hotel room with fast WI-FI so the video call went smoothly 🎉&lt;/p&gt;

&lt;p&gt;Most of my stays I find on Airbnb. It has really neat filters you can use. For example, I always try to find a place with fast WI-FI and an available workspace. It can save me some mobile internet I have on a local SIM card and it's much more convenient to work at the desk.&lt;/p&gt;

&lt;p&gt;Before I departed Dataedo provided me with a mobile router so I can work wherever I want to 🚀&lt;/p&gt;

&lt;p&gt;In terms of the trip, I encountered some difficulties. We couldn't leave Toulouse because of the French rail strike. Our train was canceled and there was just one train from Toulouse to Marseille that day. We were waiting at a station for 3h and finally continued our journey.&lt;/p&gt;

&lt;p&gt;From La Rochelle, I've moved to Bordeaux then Toulouse, Marseille, and now I'm heading to San Remo.&lt;/p&gt;

&lt;p&gt;Below you can see a king-size desk in one of the Airbnbs I was and trip stats as well.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OmA5nOZG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lujey4kally8zzyxs0mm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OmA5nOZG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lujey4kally8zzyxs0mm.png" alt="Image description" width="632" height="1186"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--S7OSqkYO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iw2rzszpqi9amuhl783y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--S7OSqkYO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iw2rzszpqi9amuhl783y.png" alt="Image description" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6/7
&lt;/h2&gt;

&lt;p&gt;Next update from working remotely during a train-only euro-trip 🚊&lt;/p&gt;

&lt;p&gt;Firstly, I wasn’t aware that Italy has some different power sockets and it may be a problem to charge my laptop there. I’m not an electricity expert and can’t tell you much more about it than the typical Italian power socket has 3 holes in one row and it isn’t compatible with my laptops charger 😕&lt;/p&gt;

&lt;p&gt;Fortunately the guest house I was in had adapters, so It didn’t cause many troubles. Anyway, it’s something I should consider while planning to work in another country.&lt;/p&gt;

&lt;p&gt;The next thing I want to share is that working from the southern countries is much harder for me. The temperature is very high so it’s difficult to take my thoughts and stay energetic and motivated.&lt;/p&gt;

&lt;p&gt;In the beginning (Germany, north France) I was usually working during the first half of the day. I had to adapt and change my schedule a bit. In Italy or south France, it’s much better for me to work in the afternoon when the temperatures are the highest in a cafe or a hotel room. You can’t do much sightseeing anyway so it’s great to do some work at that time. Then around 8/9 pm go to eat dinner and see the city.&lt;/p&gt;

&lt;p&gt;Key takeaways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do some research on power sockets in the country you go to&lt;/li&gt;
&lt;li&gt;Have in mind you probably will have to adapt to the conditions of the country you travel to (climate, temperatures, habits)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From San Remo I moved to Pisa, then Roma and Naples. Now I’m heading to Florence.&lt;/p&gt;

&lt;p&gt;In a photo, you can see an adapter to the Italian power socket I got &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8pAjZClJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5hsgoys53eb8jooarkbf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8pAjZClJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5hsgoys53eb8jooarkbf.png" alt="Image description" width="750" height="1000"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  7/7 (07/22/2022)
&lt;/h2&gt;

&lt;p&gt;It's been a couple of days since I completed my working-remotely journey. This post is my reflection on this whole trip.&lt;/p&gt;

&lt;p&gt;Positives:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The main advantage is I could see all the beautiful places and cities while still working and having an income stream. This is the reason I decided to do that so I'm delighted It worked!&lt;/li&gt;
&lt;li&gt;I'm up-to-date with all the current tasks and issues. I can't imagine going back to work after nearly a month off. That would be stressful.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Negatives:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Being in one place just for one night and moving to another is often too short, especially in big cities with many attractions and can produce some stress.&lt;/li&gt;
&lt;li&gt;Uncertain Internet connection. You can try to prepare (mobile router, hotels with WI-FI), but it's not your home or office, there always may be some issues.&lt;/li&gt;
&lt;li&gt;Lack of day plan = chaos = less effective work and lack of rest.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What would I change if I did it again:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stay in one place for at least a couple of days.&lt;/li&gt;
&lt;li&gt;Improve planning. When you plan to combine work and vacation being spontaneous is not gonna work.&lt;/li&gt;
&lt;li&gt;If you move to a different climate (much hotter/colder, with different humidity, etc.) it'd be best to take one or two days off to get a bit used to that.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you for following this series! I hope you found it at least a bit insightful 😃&lt;/p&gt;

&lt;p&gt;In the photos below you can check out trip statistics.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AW1uTDld--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sapezq47iiyi8qhfzox0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AW1uTDld--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sapezq47iiyi8qhfzox0.png" alt="Image description" width="632" height="1190"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yasjB-fm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u8oouzaaklqh83n9osf0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yasjB-fm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u8oouzaaklqh83n9osf0.png" alt="Image description" width="632" height="1187"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>career</category>
      <category>remotework</category>
    </item>
    <item>
      <title>First steps in R</title>
      <dc:creator>Dominik Ilnicki</dc:creator>
      <pubDate>Tue, 10 Nov 2020 21:10:01 +0000</pubDate>
      <link>https://dev.to/dominikilnicki/first-steps-in-r-1ale</link>
      <guid>https://dev.to/dominikilnicki/first-steps-in-r-1ale</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;Recently I've enrolled in a university course "Mathematical modeling and Data analysis". In the future, I plan to combine my front end development skills with data science working on product analysis and business growth.&lt;/p&gt;

&lt;p&gt;I started learning R lang 3 weeks ago at University and using DataCamp. In this article, I'll show you the basics I learned so far.&lt;/p&gt;

&lt;h2&gt;
  
  
  More about R
&lt;/h2&gt;

&lt;p&gt;R is a free and open-source language. It's an awesome choice when it comes to data manipulation, mathematic, and statistic. It's used by many big players and equally with Python is a great weapon for every Data Scientist.&lt;/p&gt;

&lt;p&gt;To write R code you can either &lt;a href="https://rstudio.com/"&gt;download R studio&lt;/a&gt; or start with an online tool like &lt;a href="https://repl.it"&gt;repl.it&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic calculations
&lt;/h2&gt;

&lt;p&gt;Almost everything is as you may be expected. What's interesting is how we get a remainder (&lt;code&gt;%%&lt;/code&gt;) and a result of division (&lt;code&gt;%/%&lt;/code&gt;)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight r"&gt;&lt;code&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 15&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 5&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 20&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 3.33333&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="m"&gt;5.5&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 2.5&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%/%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Variables
&lt;/h2&gt;

&lt;p&gt;In R you can use variables like in every programming language but you don't assign values using &lt;code&gt;=&lt;/code&gt;. The preferable way to do that is by using &lt;code&gt;-&amp;gt;&lt;/code&gt;(rightward operator) or &lt;code&gt;&amp;lt;-&lt;/code&gt;(leftward operator).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight r"&gt;&lt;code&gt;&lt;span class="n"&gt;my_var&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;my_var_2&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c1"&gt;# my_var_2 TRUE&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c1"&gt;# my_var 5&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Vectors
&lt;/h2&gt;

&lt;p&gt;This was the fun part for me. Vectors are the simplest data type in R. It contains elements of the same type.&lt;/p&gt;

&lt;h3&gt;
  
  
  Declaration
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight r"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# [1] 1 2 3 4&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"test"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"test2"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# [1] "test" "test2"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"test"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# [1] "TRUE" "2" "test"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Naming
&lt;/h3&gt;

&lt;p&gt;To avoid confusion while using your data later on you can name data inside your vector.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight r"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1.90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;89&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;25&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nf"&gt;names&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Height [m]'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'Weight [kg]'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'Age'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c1"&gt;# Height [m]  Weight [kg]  Age&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c1"&gt;#       1.90           89   25&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Calculations
&lt;/h3&gt;

&lt;p&gt;You don't need to use loops to make calculations on vectors in R it's a built-in behavior.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight r"&gt;&lt;code&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 5,7,9&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# -3,-3,-3&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 4,10,18&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 4,10,18&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 1,2,3&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%/%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 4,2,2&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Selecting elements
&lt;/h3&gt;

&lt;p&gt;The way how we select elements is very similar to other languages, but &lt;strong&gt;R indexes elements from 1&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight r"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;21&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 32&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 21 1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;-1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 3&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Selecting elements by comparison
&lt;/h3&gt;

&lt;p&gt;Sometimes you want to get values from vector meeting specific criteria. In JavaScript, you would do this using .filter() but in R we can achieve this in a slightly different way.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight r"&gt;&lt;code&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# TRUE FALSE FALSE TRUE FALSE&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see we're trying to get all even numbers from the vector &lt;code&gt;x&lt;/code&gt;. &lt;br&gt;
But the expression above returns a vector with logical values representing a condition state for every element.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight r"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 2 10&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When we want to actually get those elements we need to put the condition inside the brackets. &lt;br&gt;
As you can see it only select those elements where the condition value was &lt;code&gt;TRUE&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sum up
&lt;/h2&gt;

&lt;p&gt;That's it for today. I hope I encouraged you to give R a try. If you know any good resources for learning R/Data Science/Data Analysis please let me know in the comments I'd love to find more resources for learning those.&lt;/p&gt;




&lt;p&gt;🐦 Follow me on &lt;a href="https://twitter.com/dominikilnicki"&gt;Twitter&lt;/a&gt; for a web dev &amp;amp; side projects content&lt;br&gt;
👉 Check the SaaS I'm building right now &lt;a href="https://embedtables.com"&gt;EmbedTables&lt;/a&gt; - Beautifully embed Google Sheets or Airtable data into website in no time.&lt;/p&gt;

&lt;p&gt;📰 My 3 recent posts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/dominikilnicki/jc-v2-find-cool-open-source-projects-start-contributing-4bpm"&gt;JC v2 - find cool open-source projects &amp;amp; start contributing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/dominikilnicki/semantic-html-by-real-life-example-part-2-4b1d"&gt;Semantic HTML by real-life example part 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/dominikilnicki/5-tools-to-audit-your-website-accessibility-2ffb"&gt;5 tools to audit your website accessibility&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>machinelearning</category>
      <category>beginners</category>
      <category>datascience</category>
    </item>
    <item>
      <title>JC v2 - find cool open-source projects &amp; start contributing</title>
      <dc:creator>Dominik Ilnicki</dc:creator>
      <pubDate>Tue, 29 Sep 2020 17:39:37 +0000</pubDate>
      <link>https://dev.to/dominikilnicki/jc-v2-find-cool-open-source-projects-start-contributing-4bpm</link>
      <guid>https://dev.to/dominikilnicki/jc-v2-find-cool-open-source-projects-start-contributing-4bpm</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;For the last few months, I've been building v2 of my side project called &lt;a href="https://justcontribute.netlify.app"&gt;JustContribute&lt;/a&gt;. It's an app that allows you to find open, unassigned issues with newcomers welcoming labels like "good first issue" or "first timers only". You can search by programming language and popularity of the issue (number of interactions with an issue).&lt;/p&gt;

&lt;p&gt;You can read more about tech stack and motivation in the first post.&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/dominikilnicki" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LNOPU-cr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--hbdOiV6G--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/327638/f4d04c27-ba89-4ccf-8e86-12f1513b7b62.jpg" alt="dominikilnicki image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/dominikilnicki/i-built-side-project-helps-you-find-cool-open-source-projects-and-join-them-1fpo" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;I built side-project helps you find cool open source projects and join them&lt;/h2&gt;
      &lt;h3&gt;Dominik Ilnicki ・ Jun  7 ・ 1 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#showdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  What I've done
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Tech
&lt;/h3&gt;

&lt;p&gt;I rewrote the whole codebase. The v1 was made by me in 2 days because I was so excited about the idea, but it definitely has a reflection of the code quality.   I stayed with React but I made my components much more clear, readable, and reusable. What's more, I used flow js for data types to make the code more maintainable and less buggy. &lt;/p&gt;

&lt;p&gt;The whole backend concept was rewritten too. I no longer hit directly Github API in order to very stick limit rates. Instead of that, I made a cron function that runs every day, fetches all the issues, and stores them in Firestore. Thank's to that users communicate with my database instead of hitting GH API dozens of times every hour.&lt;/p&gt;

&lt;h3&gt;
  
  
  UI/UX
&lt;/h3&gt;

&lt;p&gt;I redesigned UI using Figma. I feel like dark mode fits better to developers' habits and it looks pretty neat. I'm not a designer so I can't say a lot about designing process, because it wasn't very sophisticated. I sat down one weekend, made a design, and thought "Yeah, might be" and that's it. Hope you like it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's new
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Better UX/UI with dark mode by default&lt;/li&gt;
&lt;li&gt;Filter by issues' labels&lt;/li&gt;
&lt;li&gt;Highlighted projects section with the ability to highlight your OSS project 
Highly encourage you to fill a simple form and highlight your thing. It's free and maybe drives some traffic to your OSS repo. &lt;/li&gt;
&lt;li&gt;Side-projects feature landing page where u can sign up for a waiting list
It's just a loose idea right now. I need feedback to see is it a point to work on that.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  To sum up
&lt;/h2&gt;

&lt;p&gt;I hope you like the changes and use JC to find and join cool open-source projects. Let me know in the comments or on Twitter &lt;a href="https://twitter.com/dominikilnicki"&gt;@dominikilnicki&lt;/a&gt; what you guys think about the idea and the execution. Happy Hacktober fest! &lt;/p&gt;




&lt;p&gt;🐦 Follow me on &lt;a href="https://twitter.com/dominikilnicki"&gt;Twitter&lt;/a&gt; for a web dev &amp;amp; side projects content&lt;br&gt;
👉 Check out &lt;a href="https://justcontribute.netlify.app"&gt;JC&lt;/a&gt; if you want to get into open-source or highlight your project&lt;/p&gt;

&lt;p&gt;📰 My 3 recent posts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/dominikilnicki/semantic-html-by-real-life-example-part-2-4b1d"&gt;Semantic HTML by real-life example part 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/dominikilnicki/5-tools-to-audit-your-website-accessibility-2ffb"&gt;5 tools to audit your website accessibility&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/dominikilnicki/open-source-diary-1-1pah"&gt;Open source diary #1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>showdev</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>react</category>
    </item>
    <item>
      <title>Semantic HTML by real-life example part 2</title>
      <dc:creator>Dominik Ilnicki</dc:creator>
      <pubDate>Sat, 22 Aug 2020 20:03:37 +0000</pubDate>
      <link>https://dev.to/dominikilnicki/semantic-html-by-real-life-example-part-2-4b1d</link>
      <guid>https://dev.to/dominikilnicki/semantic-html-by-real-life-example-part-2-4b1d</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;Hey, it's the next part of my mini-series where you can find how popular websites deal with their HTML markup. If you haven't seen the recent post check it out!&lt;/p&gt;

&lt;p&gt;Today we take a look at the Smashing Magazine homepage.&lt;/p&gt;

&lt;h2&gt;
  
  
  01
&lt;/h2&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%2Fi%2Fptjvswdkn05whuw6ipf4.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%2Fi%2Fptjvswdkn05whuw6ipf4.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see the &lt;code&gt;h2&lt;/code&gt; tag has a bigger font-size then &lt;code&gt;h1&lt;/code&gt;. It's a very good example that the headers' hierarchy is about the text's importance, not a style property. Don't use &lt;code&gt;h1&lt;/code&gt; just to make text bigger, CSS can make that job.&lt;/p&gt;

&lt;p&gt;What's interesting to me they don't use a &lt;code&gt;section&lt;/code&gt; tag to wrap the latest articles and a heading.&lt;/p&gt;

&lt;p&gt;They use the &lt;code&gt;figure&lt;/code&gt; tag for author image but I'm not sure why they don't put the author's name inside &lt;code&gt;figcaption&lt;/code&gt;. You can read more about figure &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figure" rel="noopener noreferrer"&gt;here on MDN&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  02
&lt;/h2&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%2Fi%2F36f33a9hqolqgafx847u.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%2Fi%2F36f33a9hqolqgafx847u.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next chunk of articles is surrounded by the &lt;code&gt;section&lt;/code&gt; tag and has multiple &lt;code&gt;articles&lt;/code&gt; inside. We can see that they use the &lt;code&gt;header&lt;/code&gt; inside the article. Remember header tag can be used for every header content on your website, not just for the main header on a top.&lt;/p&gt;

&lt;p&gt;What's also interesting how they placed &lt;code&gt;h4&lt;/code&gt; heading. It's rotated and moved to the left. It looks awesome and at the same time is accessible for screen readers users.&lt;/p&gt;

&lt;p&gt;I'm a little bit confused about why they used &lt;code&gt;h1&lt;/code&gt;in the red div. As far as I know, there should be only one &lt;code&gt;h1&lt;/code&gt; heading for the site. If you have any ideas about is it wrong or right usage of &lt;code&gt;h1&lt;/code&gt; please let me know in the comments below.&lt;/p&gt;

&lt;p&gt;Thank's to that site I discovered a &lt;code&gt;small&lt;/code&gt; tag. You can read more about it &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/small" rel="noopener noreferrer"&gt;here on MDN&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  03
&lt;/h2&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%2Fi%2Flqng7m8kwzikgfbt35fk.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%2Fi%2Flqng7m8kwzikgfbt35fk.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here I'm also a little bit confused about the &lt;code&gt;h1&lt;/code&gt; tag. I've no idea why they used that here, but this is how it looks like.&lt;/p&gt;

&lt;h2&gt;
  
  
  04
&lt;/h2&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%2Fi%2Fi9xlhdrc68g2mz6qxa6q.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%2Fi%2Fi9xlhdrc68g2mz6qxa6q.png" alt="Alt Text"&gt;&lt;/a&gt;&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%2Fi%2F6zj1uzs8ize0hzlwfu0x.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%2Fi%2F6zj1uzs8ize0hzlwfu0x.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my opinion, they used the &lt;code&gt;h2&lt;/code&gt; tag in a very smart way. They put the &lt;code&gt;span&lt;/code&gt; there to style the most important words for visual users, but for screen readers, it's just a normal title.&lt;/p&gt;

&lt;p&gt;I initially thought that they forgot to use &lt;code&gt;label&lt;/code&gt; for the email input. I was wrong, there is a label but only for screen readers users, it's visually hidden for the rest.&lt;/p&gt;




&lt;p&gt;Also If you want to find some cool open-source project and start contributing check out &lt;a href="https://justcontribute.netlify.app" rel="noopener noreferrer"&gt;JustContribute&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/dominikilnicki" rel="noopener noreferrer"&gt;Follow me on Twitter for a web dev content&lt;/a&gt;&lt;/p&gt;

</description>
      <category>html</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>5 tools to audit your website accessibility </title>
      <dc:creator>Dominik Ilnicki</dc:creator>
      <pubDate>Tue, 07 Jul 2020 21:11:08 +0000</pubDate>
      <link>https://dev.to/dominikilnicki/5-tools-to-audit-your-website-accessibility-2ffb</link>
      <guid>https://dev.to/dominikilnicki/5-tools-to-audit-your-website-accessibility-2ffb</guid>
      <description>&lt;p&gt;In a previous post, I shared with you 5 web accessibility issues and some ways to cope with them.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/dominikilnicki" 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%2F327638%2Ff4d04c27-ba89-4ccf-8e86-12f1513b7b62.jpg" alt="dominikilnicki"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/dominikilnicki/5-deadly-sins-of-web-accessibility-3bp6" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;5 deadly sins of web accessibility&lt;/h2&gt;
      &lt;h3&gt;Dominik Ilnicki ・ Jun 14 '20&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#a11y&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#html&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Today I'll list 5 tools that help you test your site against the a11y and help improve your codebase in that area.&lt;/p&gt;

&lt;h2&gt;
  
  
  01. &lt;a href="https://chrome.google.com/webstore/detail/accessibility-insights-fo/pbjjkligggfmakdaogkfomddhfmpjeni" rel="noopener noreferrer"&gt;"Accessibility Insights for Web" extension&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;I'm a very big fan of that tool. It has three main features. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fast Pass :

&lt;ul&gt;
&lt;li&gt;Automatic test - You run a generic test against your site and it returns the report. You can find their useful tips on how to get rid of all the fundamental problems.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Tab stops - It visualizes the tab order on your site. You can walk through the app using the keyboard and see how the focus behaves.
&lt;/li&gt;
&lt;li&gt;Assessment
It provides you a checklist with all the stuff that you should check manually to make sure that your app is accessible. It tells you very specific why, what and how you should test,&lt;/li&gt;
&lt;li&gt;Ad hoc tools
That feature lets you test different things like heading hierarchy or color contrast ratio in real-time.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  02. &lt;a href="https://chrome.google.com/webstore/detail/nocoffee/jjeeggmbnhckmgdhmgdckeigabjfbddl" rel="noopener noreferrer"&gt;"NoCoffee Vision Simulator" chrome extension&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Thank's to that extension you can step into disordered people's shoes and simulate various eye diseases directly in your browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  03. &lt;a href="//web.dev"&gt;Accessibility tab in lighthouse&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;You can also audit your site using Google lighthouse and check the Accessibility tab to get insights on how to improve your site.&lt;/p&gt;

&lt;h2&gt;
  
  
  04. &lt;a href="//whocanuse.com"&gt;Whocanuse.com&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;That site allows you to check the element's contrast ratio. You can also investigate what percentage of the population may have problems with capturing your elements.&lt;/p&gt;

&lt;h2&gt;
  
  
  05. &lt;a href="https://github.com/dequelabs/axe-core" rel="noopener noreferrer"&gt;axe-core&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Axe core it's the mother of the vast majority of accessibility tools. It's an accessibility testing engine used by a lot of other tools like Google lighthouse. You can build something completely new on top of that.  &lt;/p&gt;

&lt;p&gt;--&lt;br&gt;
I hope you haven't heard at least about one of them and It'll help you make the web a more accessible place, see you in the next post ✌️&lt;/p&gt;




&lt;p&gt;🐦 Follow me on &lt;a href="https://twitter.com/dominikilnicki" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; for more a11y/webdev related stuff.&lt;/p&gt;

&lt;p&gt;👨‍💻 If you want to find &amp;amp; join the open-source project check out my latest side-project - &lt;a href="https://justcontribute.netlify.app" rel="noopener noreferrer"&gt;JustContribute&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>a11y</category>
      <category>webdev</category>
      <category>html</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Open source diary #1</title>
      <dc:creator>Dominik Ilnicki</dc:creator>
      <pubDate>Wed, 24 Jun 2020 22:02:05 +0000</pubDate>
      <link>https://dev.to/dominikilnicki/open-source-diary-1-1pah</link>
      <guid>https://dev.to/dominikilnicki/open-source-diary-1-1pah</guid>
      <description>&lt;p&gt;Hi there, Some time ago I decided to start contributing to the open-source project. In this series, I'll share my thoughts, stories, successes, and failures in my contribution process.&lt;/p&gt;

&lt;h2&gt;
  
  
  OK, I need to find some project
&lt;/h2&gt;

&lt;p&gt;To be honest that wasn't an easy part for me. I wanted to join a small project without dozens of contributors and without very complex and advanced codebase because I'm not a JS expert yet. I wanted to start small. Also, I wanted to code in React I'm learning that tech right now and I want to keep mastering it.&lt;/p&gt;

&lt;p&gt;I used the tool I built to easily find OS project/issues and start contributing &lt;a href="https://justcontribute.netlify.app" rel="noopener noreferrer"&gt;https://justcontribute.netlify.app&lt;/a&gt; You can read more about it in my previous DEV post&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/dominikilnicki" 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%2F327638%2Ff4d04c27-ba89-4ccf-8e86-12f1513b7b62.jpg" alt="dominikilnicki"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/dominikilnicki/i-built-side-project-helps-you-find-cool-open-source-projects-and-join-them-1fpo" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;I built side-project helps you find cool open source projects and join them&lt;/h2&gt;
      &lt;h3&gt;Dominik Ilnicki ・ Jun 7 '20&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#showdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;It took me a while to find a good fit for me. Some of the projects weren't exciting, some of them used Svetle or Vue. But finally, I came across &lt;a href="https://github.com/rlueder/tidytweets" rel="noopener noreferrer"&gt;TidyTweets repo&lt;/a&gt;. There was just one developer and a bunch of &lt;code&gt;good first issues&lt;/code&gt;. What's more, Rafael - the maintainer, is a much more experienced developer then I am so it was a great opportunity to learn new stuff.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up a dev environment was... hard
&lt;/h2&gt;

&lt;p&gt;I tried to set all the things up on my local machine. It wasn't as easy. I couldn't force it to work. The project contains a lot of things that need to be configured like Netlify functions or Twitter Development Account. Rafael spent with me a lot of time to get it up and going. That was the biggest obstacle I faced so far in the project.&lt;/p&gt;

&lt;p&gt;Right now new contributors don't need to make all those steps because TidyTwitts was added to the Netlify Open Source program so the configuration is much simpler. You just need to link TidyTweets netlify account to your local app using App ID.&lt;/p&gt;

&lt;h2&gt;
  
  
  First issues and PR's
&lt;/h2&gt;

&lt;p&gt;Before I started I've read the contributing rules in the README. Rafael shared a great article about &lt;a href="https://nvie.com/posts/a-successful-git-branching-model/" rel="noopener noreferrer"&gt;a successful git branching model&lt;/a&gt; It helped me to understand how to use git more efficient and systemize my work. Also, I've watched this &lt;a href="https://www.youtube.com/watch?v=HbSjyU2vf6Y" rel="noopener noreferrer"&gt;YT movie&lt;/a&gt; about using GitHub fork.&lt;/p&gt;

&lt;p&gt;As I mentioned I started small. Took 2 easy issues with a &lt;code&gt;good first issue&lt;/code&gt; label. My first pull request was merged a couple of days ago and the second is in a review when I write this article.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sum up
&lt;/h2&gt;

&lt;p&gt;Things are just getting started. I hope I'll take more advanced and complicated issues as time progress. I want to encourage you all to join Rafael and me and contribute to &lt;a href="https://github.com/rlueder/tidytweets" rel="noopener noreferrer"&gt;TidyTweets&lt;/a&gt; all the help will be appreciated! &lt;/p&gt;

&lt;p&gt;Also If you want to find other great OS project check out&lt;a href="https://justcontribute.netlify.app" rel="noopener noreferrer"&gt; JustContribute&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>react</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>5 deadly sins of web accessibility</title>
      <dc:creator>Dominik Ilnicki</dc:creator>
      <pubDate>Sun, 14 Jun 2020 20:01:53 +0000</pubDate>
      <link>https://dev.to/dominikilnicki/5-deadly-sins-of-web-accessibility-3bp6</link>
      <guid>https://dev.to/dominikilnicki/5-deadly-sins-of-web-accessibility-3bp6</guid>
      <description>&lt;p&gt;In this article, I'll point out the 5 most common mistakes related to web accessibility and share ideas about how you can cope with them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table Of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;No semantic HTML&lt;/li&gt;
&lt;li&gt;Ommiting alt tag&lt;/li&gt;
&lt;li&gt;Lack of labels&lt;/li&gt;
&lt;li&gt;Too low contrast ratio&lt;/li&gt;
&lt;li&gt;No keyboard navigation support&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  01. No semantic HTML &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Using tags like &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;aside&amp;gt;&lt;/code&gt; make your site much more accessible right on the starting point. Thanks to that, screen readers used by blind people can clearly recognize the purpose of different parts of the website. Tags like &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; haven't any informative value and make your content much harder to interpret.&lt;/p&gt;

&lt;p&gt;A quick win for your app is using proper heading hierarchy. &lt;br&gt;
It's common that beginning developers think about heading tags (&lt;code&gt;&amp;lt;h1&amp;gt;,&amp;lt;h2&amp;gt;,...&lt;/code&gt;) in size category. But it's not the point! Heading tags &lt;strong&gt;are not about the size or design property, they are about the priority of the text.&lt;/strong&gt; If your text needs to be bigger just use CSS to achieve that.&lt;/p&gt;

&lt;p&gt;Also, you shouldn't skip heading levels. Start from &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; then &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;h3&amp;gt;&lt;/code&gt; and etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  02. Omitting &lt;code&gt;alt&lt;/code&gt; tag &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Remember, every &lt;code&gt;img&lt;/code&gt; should have &lt;code&gt;alt&lt;/code&gt; property. That makes photos accessible.&lt;br&gt;
The rule is simple there. If the image is just a decoration element without any content message the value of &lt;code&gt;alt&lt;/code&gt; should be an empty string. In another case, &lt;code&gt;alt&lt;/code&gt; should have a descriptive description of the image. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tip:&lt;/em&gt; Don't write 'The image presents...' or 'In the photo...' in the &lt;code&gt;alt&lt;/code&gt; text. The screen readers already have known that's an image.&lt;/p&gt;

&lt;h2&gt;
  
  
  03. Lack of labels &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;People need labeled inputs to know what kind of information they are supposed to provide.&lt;/p&gt;

&lt;p&gt;Some people use the &lt;code&gt;placeholder&lt;/code&gt; value to tell the user what the input is for. It's not the best idea when it comes to a11y. Firstly, some screen readers don't read placeholder value at all. Secondly, it's just a bad UX. When the user starts typing the placeholder value disappears.&lt;/p&gt;

&lt;h2&gt;
  
  
  04. Too low contrast ratio &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;If the element's contrast ratio between background and foreground is too low people with vision disorders just can't see the content. &lt;br&gt;
The interesting fact is that it's very important even for your average users, for example on a sunny day it's almost impossible to capture low contrast elements.&lt;/p&gt;

&lt;p&gt;If colors fail audit you should consider changing the palette to make your element accessible. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tip:&lt;/em&gt; You can check contrast ratio using this tool &lt;a href="https://whocanuse.com"&gt;https://whocanuse.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  05. No keyboard navigation support &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Sometimes users want to navigate your site using a keyboard only. You need to make their life easier. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.outlinenone.com/"&gt;Never remove the outline&lt;/a&gt; from the focused element if you don't provide any alternative styling (box-shadow, background, border).&lt;/p&gt;

&lt;p&gt;What's more, your focus order can't behave unpredictably. The order of focus should be consistent with the reading direction in the user's country. You can use negative &lt;code&gt;z-index&lt;/code&gt; value to make some elements unreachable from a keyboard (eg. emojis) but be aware of messing focus order up.&lt;/p&gt;

&lt;p&gt;Thanks for reading, I hope those points will point your attention to some web accessibility issues.&lt;/p&gt;




&lt;p&gt;Hey, If you want to find &amp;amp; join to some cool open-source project check out my latest side project &lt;a href="https://justcontribute.netlify.app"&gt;Just Contribute&lt;/a&gt;&lt;/p&gt;

</description>
      <category>a11y</category>
      <category>webdev</category>
      <category>html</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I built side-project helps you find cool open source projects and join them</title>
      <dc:creator>Dominik Ilnicki</dc:creator>
      <pubDate>Sun, 07 Jun 2020 19:47:24 +0000</pubDate>
      <link>https://dev.to/dominikilnicki/i-built-side-project-helps-you-find-cool-open-source-projects-and-join-them-1fpo</link>
      <guid>https://dev.to/dominikilnicki/i-built-side-project-helps-you-find-cool-open-source-projects-and-join-them-1fpo</guid>
      <description>&lt;p&gt;tldr; Tool that let you find latest GH issues meant for newcomers and help you start contributing to the open-source&lt;/p&gt;

&lt;p&gt;link: &lt;a href="https://justcontribute.netlify.app"&gt;https://justcontribute.netlify.app&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Motivation
&lt;/h2&gt;

&lt;p&gt;For some time I was thinking about joining some open-source project. I believe that's is a huge opportunity to gain some experience in real-life projects. &lt;/p&gt;

&lt;p&gt;But I was struggling in finding projects I can join. I'm a beginner so I was looking for some small less popular repos. It wasn't too easy, because I needed to browse GH typing some long weird queries, checking is there any open issue that I can handle, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  My solution
&lt;/h2&gt;

&lt;p&gt;I created site that let you provide programming language and popularity of issue that you want to get and it presents you issues that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;are open&lt;/li&gt;
&lt;li&gt;have at least one of the "newcomers welcoming" label (good first issue, up for grab, easy, etc)&lt;/li&gt;
&lt;li&gt;doesn't have linked pull request&lt;/li&gt;
&lt;li&gt;no one is assigned to them&lt;/li&gt;
&lt;li&gt;conversation is unlocked&lt;/li&gt;
&lt;li&gt;are in public repos&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tech stack
&lt;/h2&gt;

&lt;p&gt;Front-end: react, scss&lt;br&gt;
Back-end: node, express js&lt;/p&gt;

&lt;p&gt;I built this whole thing in just 2 days so if you have any suggestions, feedback, or getting some errors please let me know in comments!&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>react</category>
    </item>
    <item>
      <title>Semantic HTML by real-life examples</title>
      <dc:creator>Dominik Ilnicki</dc:creator>
      <pubDate>Mon, 01 Jun 2020 20:02:09 +0000</pubDate>
      <link>https://dev.to/dominikilnicki/semantic-html-by-real-life-examples-5e6h</link>
      <guid>https://dev.to/dominikilnicki/semantic-html-by-real-life-examples-5e6h</guid>
      <description>&lt;p&gt;On my way of learning semantic HTML, I found it very useful to take a look at how other big players cope with that. &lt;/p&gt;

&lt;p&gt;I prepared for you two examples of how Twitter and Dev.to use semantic HTML tags like &lt;code&gt;article&lt;/code&gt;, &lt;code&gt;section&lt;/code&gt;, or &lt;code&gt;nav&lt;/code&gt; on their home page. I'll continue that series if you find it interesting too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dev.to
&lt;/h2&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%2Fi%2F65k2vgs9d6adeqro4p8t.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%2Fi%2F65k2vgs9d6adeqro4p8t.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Twitter
&lt;/h2&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%2Fi%2Fi0lqrj96siwd00kwrxv6.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%2Fi%2Fi0lqrj96siwd00kwrxv6.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>html</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Optimize images for website</title>
      <dc:creator>Dominik Ilnicki</dc:creator>
      <pubDate>Mon, 25 May 2020 19:59:26 +0000</pubDate>
      <link>https://dev.to/dominikilnicki/optimize-images-for-website-3cf4</link>
      <guid>https://dev.to/dominikilnicki/optimize-images-for-website-3cf4</guid>
      <description>&lt;p&gt;Unoptimized images may cause a lot of performance issues and slow down your site significantly. In this article, I'll share with you some ways how to increase your web app performance dealing with images.&lt;/p&gt;

&lt;h2&gt;
  
  
  01. Lazy loading
&lt;/h2&gt;

&lt;p&gt;Lazy loaded images start loading only when they are in the user's viewport. That's a huge win because you don't need to load all the images at once.&lt;/p&gt;

&lt;h3&gt;
  
  
  how to do it?
&lt;/h3&gt;

&lt;p&gt;The simplest way is to use native HTML &lt;code&gt;loading&lt;/code&gt; attribute and set it to &lt;code&gt;lazy&lt;/code&gt; on the &lt;code&gt;img&lt;/code&gt; element&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;img src="../assets/photo.jpg" loading="lazy" /&amp;gt;&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://caniuse.com/#search=loading"&gt;check the browser support&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  02. Load proper images sizes
&lt;/h2&gt;

&lt;p&gt;In the perfect world, you should never load a bigger image then you display, it's just a waste of transfer. You can define which image needs to be load depend on the user's screen resolution. There are a couple of ways to achieve that.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set &lt;code&gt;srcset&lt;/code&gt; on the &lt;code&gt;img&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;img src="images/photo.jpg" srcset="images/photo_medium.jpg 100w,images/photo_large.jpg 400w"/&amp;gt;&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;In that attribute, you can tell the browser that you have the same image in different sizes by providing a path to the asset and intrinsic width in pixels (&lt;code&gt;100w&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images"&gt;read more on MDN&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use media queries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In some cases you can't use &lt;code&gt;srcset&lt;/code&gt; property because you don't use the &lt;code&gt;img&lt;/code&gt; tag. For example when you set the background image. The solution is simple, you can define different background images using media queries.&lt;/p&gt;

&lt;p&gt;example:&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;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1280px&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
 &lt;span class="nt"&gt;hero-wrapper&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sx"&gt;url('assets/hero_medium.jpg')&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;720px&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
 &lt;span class="nt"&gt;hero-wrapper&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sx"&gt;url('assets/hero_small.jpg')&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;
  
  
  03. Use compressed images
&lt;/h2&gt;

&lt;p&gt;According to the Google Chrome Developers team most of your images should have less than 100kb.&lt;br&gt;
You should consider using jpeg or &lt;a href="https://caniuse.com/#search=webp"&gt;webp&lt;/a&gt; formats. They are way lighter then png files. You can use &lt;a href="https://squoosh.app"&gt;squoosh&lt;/a&gt; the tool maintained by Google that allows you to convert and compress your images.&lt;/p&gt;

&lt;h2&gt;
  
  
  03. Images optimization CDNs
&lt;/h2&gt;

&lt;p&gt;There are some tools that compress, resize, and make other transformations on your photo to reduce loading time. I personally use &lt;a href="https://imagekit.io/"&gt;imagekit&lt;/a&gt; and it does the job very well.&lt;/p&gt;

</description>
      <category>html</category>
      <category>webperf</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>JS visual notes: Data types</title>
      <dc:creator>Dominik Ilnicki</dc:creator>
      <pubDate>Thu, 14 May 2020 20:14:06 +0000</pubDate>
      <link>https://dev.to/dominikilnicki/js-visual-notes-data-types-298l</link>
      <guid>https://dev.to/dominikilnicki/js-visual-notes-data-types-298l</guid>
      <description>&lt;p&gt;Hi, today I want to share with you next 2 notes about data types in JS&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%2Fi%2F9lkkkmvb9b2gb46bsn6d.jpeg" 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%2Fi%2F9lkkkmvb9b2gb46bsn6d.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&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%2Fi%2F34cjoe9nwbibwxkcyxay.jpeg" 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%2Fi%2F34cjoe9nwbibwxkcyxay.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Solve REM problem with the 'happy rems' approach</title>
      <dc:creator>Dominik Ilnicki</dc:creator>
      <pubDate>Mon, 11 May 2020 19:55:51 +0000</pubDate>
      <link>https://dev.to/dominikilnicki/solve-rem-problem-with-the-happy-rems-approach-179</link>
      <guid>https://dev.to/dominikilnicki/solve-rem-problem-with-the-happy-rems-approach-179</guid>
      <description>&lt;p&gt;Some time ago I've heard about the approach called 'happy rems' helping to avoid problems with converting rems to pixels.&lt;/p&gt;

&lt;p&gt;As you probably know &lt;code&gt;rem&lt;/code&gt; is the CSS unit related to the browser. It's shortcut form root em. In Google Chrome and Firefox, the initial value of 1rem is set to the 16px. &lt;/p&gt;

&lt;p&gt;And here comes the problem, when you want to use rems in your project but need to set font-size to 21px you need to make some calculations. In that case, it would be around 1.3125rem. So I want to share with you the happy rems approach that helps to avoid all those weird values.&lt;/p&gt;

&lt;p&gt;Set root font size (rem) value to the 10px in your global style&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;html{
   font-size: 62.5% // from now 1rem === 10px
}
body{
   font-size: 1.6rem; // we set default font size value to the 16px as it was
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you see we didn't changed default browser font size it's still 16px, but now our 1rem is 10px so&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
.myCoolText{
   font-size: 1.4rem; // 14px
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>css</category>
      <category>beginners</category>
      <category>webdev</category>
      <category>html</category>
    </item>
  </channel>
</rss>
