<?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: Roman Veselý</title>
    <description>The latest articles on DEV Community by Roman Veselý (@rmnvsl).</description>
    <link>https://dev.to/rmnvsl</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%2F8158%2F3f8b4b68-8228-4817-82a8-5f5095dfb6fd.jpg</url>
      <title>DEV Community: Roman Veselý</title>
      <link>https://dev.to/rmnvsl</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rmnvsl"/>
    <language>en</language>
    <item>
      <title>Knowledge Sharing</title>
      <dc:creator>Roman Veselý</dc:creator>
      <pubDate>Tue, 12 Nov 2019 20:36:18 +0000</pubDate>
      <link>https://dev.to/rmnvsl/knowledge-sharing-m3b</link>
      <guid>https://dev.to/rmnvsl/knowledge-sharing-m3b</guid>
      <description>&lt;p&gt;Being in front of unknown people and speak about some topic could be daunting. And what's more, if you are kind of an introvert person you may feel it's a terrible idea at all! But if you really want to start somehow I propose to make it happen together with your colleagues. Either in the company you work for or within the community of a co-working space you visit in case you freelance.&lt;/p&gt;

&lt;p&gt;In my &lt;a href="https://www.statsperform.com/"&gt;previous team&lt;/a&gt;, we had a quite nice habit of such a way of knowledge sharing - we called it &lt;strong&gt;Mini Geeky Tuesday&lt;/strong&gt;. "Mini" because the whole thing meant to be short to fit into a regular day filled with coding and meetings, "Geeky" because that's what we think we are - wise and funny, and "Tuesday", because ... only sometimes it fell on a different day in the week.&lt;/p&gt;

&lt;p&gt;What was it all about? To share something valuable within the team. Something everyone could pick out of interest, like an introduction to a new tool or technology, but also speak about an interesting problem one was confronted with and its solution.&lt;/p&gt;

&lt;p&gt;Most of our talks took up to about 10 to 15 minutes and didn't require to have any slides prepared. Only a blackboard if that was necessary. It was voluntarily based, so it happened that once we had 4 talk streak in a month and one talk in a quarter thereafter. Either case is good!&lt;/p&gt;

&lt;p&gt;And what to talk about, you ask? Well, you choose! Topics may vary greatly. Or not :)&lt;/p&gt;

&lt;h2&gt;
  
  
  Topics I've spoken about
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HTTP methods&lt;/strong&gt;, responses, statuses and how do they play with &lt;strong&gt;RESTful APIs&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;peculiar errors with &lt;strong&gt;PHP &amp;amp; JavaScript magic methods&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;what is &lt;strong&gt;Game of Life&lt;/strong&gt; (not The Sims :), also with a puzzle to solve&lt;/li&gt;
&lt;li&gt;how to measure &lt;strong&gt;code quality&lt;/strong&gt;, how to spot code smells, what is code coverage, cyclomatic complexity and what the hell is C.R.A.P.&lt;/li&gt;
&lt;li&gt;relative vs. absolute &lt;strong&gt;CSS units&lt;/strong&gt; - &lt;code&gt;px&lt;/code&gt;, &lt;code&gt;rem&lt;/code&gt;, &lt;code&gt;em&lt;/code&gt;, &lt;code&gt;ch&lt;/code&gt; - where and when, how do they work with the cascade&lt;/li&gt;
&lt;li&gt;what is &lt;strong&gt;CSS Houdini&lt;/strong&gt; and where it stands in the current web technologies&lt;/li&gt;
&lt;li&gt;static web generators and &lt;strong&gt;JAMstack&lt;/strong&gt; - in theory, and from practice&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Beyond short talks
&lt;/h2&gt;

&lt;p&gt;There are also other options, though. You can prepare &lt;strong&gt;puzzles&lt;/strong&gt; or interesting &lt;strong&gt;math problems&lt;/strong&gt;. Share them in the morning and let time for your team to find a solution, which you can present in the afternoon. I find it relieving, especially in the long or hard days.&lt;/p&gt;

&lt;p&gt;To dive into the more advanced matter you can arrange a &lt;strong&gt;workshop&lt;/strong&gt;. We had a couple of them. Topics we dealt with, from the top of my mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;advanced Git techniques&lt;/li&gt;
&lt;li&gt;regular expressions step by step&lt;/li&gt;
&lt;li&gt;introduction to push notifications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can even have a &lt;strong&gt;competition&lt;/strong&gt; - &lt;a href="https://romanvesely.com/code-together-and-have-fun/"&gt;code together and have fun&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits
&lt;/h2&gt;

&lt;p&gt;You see, there are many methods you can use to share your knowledge without the fear of the unknown. You and people around you can learn a lot together, double up new ideas or discover new possibilities.&lt;/p&gt;

&lt;p&gt;For sure, you can think of many different forms to those aforementioned, but the result remains the same. To &lt;strong&gt;push forward&lt;/strong&gt;, you, others, us. And in the end, it can lead you to whole &lt;strong&gt;new experiences&lt;/strong&gt; if you &lt;a href="https://romanvesely.com/a-path-to-my-first-speaking-experience/"&gt;step out of your comfort zone&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>knowledge</category>
      <category>techtalks</category>
      <category>sharing</category>
    </item>
    <item>
      <title>Why so serious? Collection of remarkable tweets #4</title>
      <dc:creator>Roman Veselý</dc:creator>
      <pubDate>Fri, 09 Aug 2019 08:28:12 +0000</pubDate>
      <link>https://dev.to/rmnvsl/why-so-serious-collection-of-remarkable-tweets-4-28g0</link>
      <guid>https://dev.to/rmnvsl/why-so-serious-collection-of-remarkable-tweets-4-28g0</guid>
      <description>&lt;p&gt;Take a pause. Put work aside for a minute and look how much fun is on Twitter. Many knowledgable people share tons of great tips there. But today, I gathered tweets containing entertaining and sometimes even very realistic content.&lt;/p&gt;

&lt;p&gt;They come from different areas: &lt;a href="https://dev.to/t/development"&gt;&lt;code&gt;#development&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://dev.to/t/design"&gt;&lt;code&gt;#design&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://dev.to/t/ui"&gt;&lt;code&gt;#UI&lt;/code&gt;&lt;/a&gt;/&lt;a href="https://dev.to/t/ux"&gt;&lt;code&gt;#UX&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://dev.to/t/philosophy"&gt;&lt;code&gt;#philosophy&lt;/code&gt;&lt;/a&gt;, office and ordinary &lt;a href="https://dev.to/t/life"&gt;&lt;code&gt;#life&lt;/code&gt;&lt;/a&gt;. Sorted in random order without any preference and split across four posts.&lt;/p&gt;

&lt;p&gt;I hope my selection will make your Friday even more joyful!&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1138237351078105088-96" src="https://platform.twitter.com/embed/Tweet.html?id=1138237351078105088"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1138237351078105088-96');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1138237351078105088&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1109384554962259970-30" src="https://platform.twitter.com/embed/Tweet.html?id=1109384554962259970"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1109384554962259970-30');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1109384554962259970&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1053006038478331908-890" src="https://platform.twitter.com/embed/Tweet.html?id=1053006038478331908"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1053006038478331908-890');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1053006038478331908&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1002938327945932805-24" src="https://platform.twitter.com/embed/Tweet.html?id=1002938327945932805"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1002938327945932805-24');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1002938327945932805&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1110985650193477632-285" src="https://platform.twitter.com/embed/Tweet.html?id=1110985650193477632"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1110985650193477632-285');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1110985650193477632&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1152027018982068226-654" src="https://platform.twitter.com/embed/Tweet.html?id=1152027018982068226"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1152027018982068226-654');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1152027018982068226&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1154169387470823425-924" src="https://platform.twitter.com/embed/Tweet.html?id=1154169387470823425"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1154169387470823425-924');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1154169387470823425&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1050768979201945601-346" src="https://platform.twitter.com/embed/Tweet.html?id=1050768979201945601"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1050768979201945601-346');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1050768979201945601&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1155289146505793536-539" src="https://platform.twitter.com/embed/Tweet.html?id=1155289146505793536"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1155289146505793536-539');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1155289146505793536&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1155293759929835520-123" src="https://platform.twitter.com/embed/Tweet.html?id=1155293759929835520"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1155293759929835520-123');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1155293759929835520&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;This is the last post of the "not so serious" series:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/rmnvsl/why-so-serious-1-276j"&gt;Why so serious? #1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/rmnvsl/why-so-serious-collection-of-remarkable-tweets-2-10hj"&gt;Why so serious? Collection of remarkable tweets #2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/rmnvsl/why-so-serious-collection-of-remarkable-tweets-3-mgo"&gt;Why so serious? Collection of remarkable tweets #3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Why so serious? Collection of remarkable tweets #4 👈&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's all folks! &lt;strong&gt;I'd love to see your favorite tweets&lt;/strong&gt;, so please, put some of them in the comments section. 🎉&lt;/p&gt;

</description>
      <category>fun</category>
      <category>twitter</category>
    </item>
    <item>
      <title>Why so serious? Collection of remarkable tweets #3</title>
      <dc:creator>Roman Veselý</dc:creator>
      <pubDate>Fri, 02 Aug 2019 10:41:50 +0000</pubDate>
      <link>https://dev.to/rmnvsl/why-so-serious-collection-of-remarkable-tweets-3-mgo</link>
      <guid>https://dev.to/rmnvsl/why-so-serious-collection-of-remarkable-tweets-3-mgo</guid>
      <description>&lt;p&gt;Take a pause. Put work aside for a minute and look how much fun is on Twitter. Many knowledgable people share tons of great tips there. But today, I gathered tweets containing entertaining and sometimes even very realistic content.&lt;/p&gt;

&lt;p&gt;They come from different areas: &lt;a href="https://dev.to/t/development"&gt;&lt;code&gt;#development&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://dev.to/t/design"&gt;&lt;code&gt;#design&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://dev.to/t/ui"&gt;&lt;code&gt;#UI&lt;/code&gt;&lt;/a&gt;/&lt;a href="https://dev.to/t/ux"&gt;&lt;code&gt;#UX&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://dev.to/t/philosophy"&gt;&lt;code&gt;#philosophy&lt;/code&gt;&lt;/a&gt;, office and ordinary &lt;a href="https://dev.to/t/life"&gt;&lt;code&gt;#life&lt;/code&gt;&lt;/a&gt;. Sorted in random order without any preference and split across four posts.&lt;/p&gt;

&lt;p&gt;I hope my selection will make your Friday even more joyful!&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--vPA7btCM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/754886061872979968/BzaOWhs1_normal.jpg" alt="Mark Dalgleish profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Mark Dalgleish
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="comment-mentioned-user" href="https://dev.to/markdalgleish"&gt;@markdalgleish&lt;/a&gt;

      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      👨‍🎨 I've made a responsive design, of a car that turns into a plane.&lt;br&gt;&lt;br&gt;👩‍💻 Neat—how does it work?&lt;br&gt;&lt;br&gt;👨‍🎨 *Draws car*&lt;br&gt;&lt;br&gt;👩‍💻 Yeah, but how does it turn into a plane?&lt;br&gt;&lt;br&gt;👨‍🎨 *Draws plane*
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      02:21 AM - 02 Oct 2018
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1046948267865473024" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1046948267865473024" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      127
      &lt;a href="https://twitter.com/intent/like?tweet_id=1046948267865473024" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      535
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
&lt;br&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--EgyN57M_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/920287542544547840/0fM6wNJX_normal.jpg" alt="your httpster friend profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        your httpster friend
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="comment-mentioned-user" href="https://dev.to/dcousineau"&gt;@dcousineau&lt;/a&gt;

      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      Friend: Do dates make you nervous?&lt;br&gt;Me: omg yes especially when doing math across timezone boundaries
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      14:42 PM - 03 Aug 2016
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=760848423268519936" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=760848423268519936" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      3601
      &lt;a href="https://twitter.com/intent/like?tweet_id=760848423268519936" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      5359
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
&lt;br&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HOpudH2U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/DxSkmgkWwAAfOVO.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wy_UCTd2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/874276674187218944/r20HKn07_normal.jpg" alt="Tommi Forsström profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Tommi Forsström
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @forssto
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      Found this from the depths of my hard drive. Oh dear. 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      17:19 PM - 19 Jan 2019
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1086674433773895680" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1086674433773895680" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      363
      &lt;a href="https://twitter.com/intent/like?tweet_id=1086674433773895680" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      908
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
&lt;br&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--AXzyTEEu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/875394454449815552/FAzOLgVh_normal.jpg" alt="A Small Fiction profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        A Small Fiction
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @asmallfiction
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      "I keep hearing about Occam's razor. Do you know what it is?"&lt;br&gt;&lt;br&gt;"Probably a razor owned by someone named Occam."&lt;br&gt;&lt;br&gt;"Oh. Yeah, simple enough."
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      03:44 AM - 06 Nov 2016
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=795109544221257729" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=795109544221257729" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      3179
      &lt;a href="https://twitter.com/intent/like?tweet_id=795109544221257729" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      5131
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
&lt;br&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FbRxyf1o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/C3iAlP4XAAAiNUk.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--4QqRosXt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/766014088015118336/M9-ZI__X_normal.jpg" alt="Jedd Ahyoung profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Jedd Ahyoung
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="comment-mentioned-user" href="https://dev.to/jedd_ahyoung"&gt;@jedd_ahyoung&lt;/a&gt;

      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      "What is technical debt?" Technical debt is hard to explain, but a picture is worth a thousand words. &lt;a href="https://twitter.com/hashtag/programming"&gt;#programming&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/softwaredevelopment"&gt;#softwaredevelopment&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      22:05 PM - 31 Jan 2017
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=826551935822077952" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=826551935822077952" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      3044
      &lt;a href="https://twitter.com/intent/like?tweet_id=826551935822077952" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      2992
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
&lt;br&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--TErHDMKm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1131563273269104640/u8hf6-9e_normal.jpg" alt="Nick Takayama profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Nick Takayama
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @ntakayama
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      2yrs experience: “This button has 1pt too much padding on the right”&lt;br&gt;6 yrs experience: “Why are we doing this button anyway?”
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      16:41 PM - 03 May 2019
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1124353367348662272" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1124353367348662272" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      14
      &lt;a href="https://twitter.com/intent/like?tweet_id=1124353367348662272" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      74
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
&lt;br&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--92dVleWZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/D-3dlNxUYAIYggy.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--vPA7btCM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/754886061872979968/BzaOWhs1_normal.jpg" alt="Mark Dalgleish profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Mark Dalgleish
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="comment-mentioned-user" href="https://dev.to/markdalgleish"&gt;@markdalgleish&lt;/a&gt;

      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      Me: "I'm really looking forward to the conference."&lt;br&gt;&lt;br&gt;Me at the conference: 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      10:38 AM - 07 Jul 2019
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1147817115241463808" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1147817115241463808" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      1531
      &lt;a href="https://twitter.com/intent/like?tweet_id=1147817115241463808" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      10253
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
&lt;br&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;
    &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__two-pics"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PqTCH239--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/Dqa6oUNXgAE2XPm.jpg" alt="unknown tweet media content"&gt;
    &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--rhibel6a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/884248410659749888/AnZPz8om_normal.jpg" alt="Gleb Smirnov profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Gleb Smirnov
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @gvsmirnov
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      Here is a blank line:&lt;br&gt;&lt;br&gt;You can use it in your code to make it much more readable. Look: 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      08:22 AM - 26 Oct 2018
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1055736396902793216" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1055736396902793216" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      46
      &lt;a href="https://twitter.com/intent/like?tweet_id=1055736396902793216" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      120
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
&lt;br&gt;
&lt;center&gt;👆 &lt;em&gt;(click the tweet to see all images)&lt;/em&gt; 👆&lt;/center&gt;
&lt;br&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__video-wrapper"&gt;
        &lt;div class="ltag__twitter-tweet__media--video-preview"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Aw3JEyG3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/ext_tw_video_thumb/1138910538954674183/pu/img/Pp8dE-pO4KtllWTK.jpg" alt="unknown tweet media content"&gt;
          &lt;img src="/assets/play-butt.svg" class="ltag__twitter-tweet__play-butt" alt="Play butt"&gt;
        &lt;/div&gt;
        &lt;div class="ltag__twitter-tweet__video"&gt;
          
            
          
        &lt;/div&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--eUX-wMBW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1131312149538623489/H2j1QfyP_normal.jpg" alt="Tom Bellino profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Tom Bellino
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @tombellino
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      My coworkers in an open-concept office every four minutes 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      16:24 PM - 14 Jun 2019
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1139569345502142464" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1139569345502142464" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      14669
      &lt;a href="https://twitter.com/intent/like?tweet_id=1139569345502142464" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      56950
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
&lt;br&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--AYRC1bk6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/807277326539046912/EZR6qL-S_normal.jpg" alt="Bruce Lawson profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Bruce Lawson
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @brucel
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      &lt;a href="https://twitter.com/slicknet"&gt;@slicknet&lt;/a&gt; 1964, My grandad (a coalminer): So, you wear a shirt &amp;amp; tie to work, sit at a desk moving paper around, &amp;amp; at 21 you're paid more than I am  now?&lt;br&gt;My Dad: Yes.&lt;br&gt;&lt;br&gt;2010, Dad: So, your company makes a free product, competing with other free products, &amp;amp; you make more than I did?&lt;br&gt;Me: Yes.
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      09:52 AM - 18 Jan 2019
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1086199589223444480" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1086199589223444480" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      47
      &lt;a href="https://twitter.com/intent/like?tweet_id=1086199589223444480" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      374
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;p&gt;This is the third post of the "not so serious" series:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/rmnvsl/why-so-serious-1-276j"&gt;Why so serious? #1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/rmnvsl/why-so-serious-collection-of-remarkable-tweets-2-10hj"&gt;Why so serious? Collection of remarkable tweets #2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Why so serious? Collection of remarkable tweets #3 👈&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/rmnvsl/why-so-serious-collection-of-remarkable-tweets-4-28g0"&gt;Why so serious? Collection of remarkable tweets #4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See you next Friday. If you want, put your favorite tweets in the comments section. 🎉&lt;/p&gt;

</description>
      <category>fun</category>
      <category>twitter</category>
    </item>
    <item>
      <title>Why so serious? Collection of remarkable tweets #2</title>
      <dc:creator>Roman Veselý</dc:creator>
      <pubDate>Fri, 26 Jul 2019 11:27:16 +0000</pubDate>
      <link>https://dev.to/rmnvsl/why-so-serious-collection-of-remarkable-tweets-2-10hj</link>
      <guid>https://dev.to/rmnvsl/why-so-serious-collection-of-remarkable-tweets-2-10hj</guid>
      <description>&lt;p&gt;Take a pause. Put work aside for a minute and look how much fun is on Twitter. Many knowledgable people share tons of great tips there. But today, I gathered tweets containing entertaining and sometimes even very realistic content.&lt;/p&gt;

&lt;p&gt;They come from different areas: &lt;a href="https://dev.to/t/development"&gt;&lt;code&gt;#development&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://dev.to/t/design"&gt;&lt;code&gt;#design&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://dev.to/t/ui"&gt;&lt;code&gt;#UI&lt;/code&gt;&lt;/a&gt;/&lt;a href="https://dev.to/t/ux"&gt;&lt;code&gt;#UX&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://dev.to/t/philosophy"&gt;&lt;code&gt;#philosophy&lt;/code&gt;&lt;/a&gt;, office and ordinary &lt;a href="https://dev.to/t/life"&gt;&lt;code&gt;#life&lt;/code&gt;&lt;/a&gt;. Sorted in random order without any preference and split across four posts.&lt;/p&gt;

&lt;p&gt;I hope my selection will make your Friday even more joyful!&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1130048469853528064-366" src="https://platform.twitter.com/embed/Tweet.html?id=1130048469853528064"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1130048469853528064-366');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1130048469853528064&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-986576233579384833-119" src="https://platform.twitter.com/embed/Tweet.html?id=986576233579384833"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-986576233579384833-119');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=986576233579384833&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1120543926065205248-336" src="https://platform.twitter.com/embed/Tweet.html?id=1120543926065205248"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1120543926065205248-336');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1120543926065205248&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1015169178066661376-590" src="https://platform.twitter.com/embed/Tweet.html?id=1015169178066661376"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1015169178066661376-590');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1015169178066661376&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1072554718499663872-644" src="https://platform.twitter.com/embed/Tweet.html?id=1072554718499663872"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1072554718499663872-644');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1072554718499663872&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1085906454232657922-711" src="https://platform.twitter.com/embed/Tweet.html?id=1085906454232657922"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1085906454232657922-711');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1085906454232657922&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-958304675345960960-969" src="https://platform.twitter.com/embed/Tweet.html?id=958304675345960960"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-958304675345960960-969');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=958304675345960960&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1148421102009344000-541" src="https://platform.twitter.com/embed/Tweet.html?id=1148421102009344000"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1148421102009344000-541');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1148421102009344000&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-917371193786884096-155" src="https://platform.twitter.com/embed/Tweet.html?id=917371193786884096"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-917371193786884096-155');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=917371193786884096&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1086237923652046849-958" src="https://platform.twitter.com/embed/Tweet.html?id=1086237923652046849"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1086237923652046849-958');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1086237923652046849&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;This is the second post of the "not so serious" series:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/rmnvsl/why-so-serious-1-276j"&gt;Why so serious? #1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Why so serious? Collection of remarkable tweets #2 👈&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/rmnvsl/why-so-serious-collection-of-remarkable-tweets-3-mgo"&gt;Why so serious? Collection of remarkable tweets #3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/rmnvsl/why-so-serious-collection-of-remarkable-tweets-4-28g0"&gt;Why so serious? Collection of remarkable tweets #4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See you next Friday. If you want, put your favorite tweets in the comments section. 🎉&lt;/p&gt;

</description>
      <category>fun</category>
      <category>twitter</category>
    </item>
    <item>
      <title>Why so serious? #1</title>
      <dc:creator>Roman Veselý</dc:creator>
      <pubDate>Fri, 19 Jul 2019 13:05:16 +0000</pubDate>
      <link>https://dev.to/rmnvsl/why-so-serious-1-276j</link>
      <guid>https://dev.to/rmnvsl/why-so-serious-1-276j</guid>
      <description>&lt;p&gt;Take a pause. Put work aside for a minute and look how much fun is on Twitter. Many knowledgable people share tons of great tips there. But today, I gathered tweets containing entertaining and sometimes even very realistic content.&lt;/p&gt;

&lt;p&gt;They come from different areas: &lt;a href="https://dev.to/t/development"&gt;&lt;code&gt;#development&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://dev.to/t/design"&gt;&lt;code&gt;#design&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://dev.to/t/ui"&gt;&lt;code&gt;#UI&lt;/code&gt;&lt;/a&gt;/&lt;a href="https://dev.to/t/ux"&gt;&lt;code&gt;#UX&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://dev.to/t/philosophy"&gt;&lt;code&gt;#philosophy&lt;/code&gt;&lt;/a&gt;, office and ordinary &lt;a href="https://dev.to/t/life"&gt;&lt;code&gt;#life&lt;/code&gt;&lt;/a&gt;. Sorted in random order without any preference and split across four posts.&lt;/p&gt;

&lt;p&gt;I hope my selection will make your Friday even more joyful!&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1053163060871884801-200" src="https://platform.twitter.com/embed/Tweet.html?id=1053163060871884801"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1053163060871884801-200');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1053163060871884801&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-788288674228305921-220" src="https://platform.twitter.com/embed/Tweet.html?id=788288674228305921"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-788288674228305921-220');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=788288674228305921&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-787969734918668289-500" src="https://platform.twitter.com/embed/Tweet.html?id=787969734918668289"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-787969734918668289-500');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=787969734918668289&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1146488996052099072-711" src="https://platform.twitter.com/embed/Tweet.html?id=1146488996052099072"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1146488996052099072-711');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1146488996052099072&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1120126789316009985-330" src="https://platform.twitter.com/embed/Tweet.html?id=1120126789316009985"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1120126789316009985-330');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1120126789316009985&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1145216305240387584-477" src="https://platform.twitter.com/embed/Tweet.html?id=1145216305240387584"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1145216305240387584-477');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1145216305240387584&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;center&gt;👆 _(click the tweet to see all images)_ 👆&lt;/center&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-896010517617180672-140" src="https://platform.twitter.com/embed/Tweet.html?id=896010517617180672"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-896010517617180672-140');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=896010517617180672&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1113831379152908288-354" src="https://platform.twitter.com/embed/Tweet.html?id=1113831379152908288"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1113831379152908288-354');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1113831379152908288&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-904697259345969152-112" src="https://platform.twitter.com/embed/Tweet.html?id=904697259345969152"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-904697259345969152-112');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=904697259345969152&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1093035828538818560-821" src="https://platform.twitter.com/embed/Tweet.html?id=1093035828538818560"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1093035828538818560-821');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1093035828538818560&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;center&gt;👆 _(click the tweet to see the original post)_ 👆&lt;/center&gt;

&lt;p&gt;This is the first post of the "not so serious" series:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why so serious? #1 👈&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/rmnvsl/why-so-serious-collection-of-remarkable-tweets-2-10hj"&gt;Why so serious? Collection of remarkable tweets #2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/rmnvsl/why-so-serious-collection-of-remarkable-tweets-3-mgo"&gt;Why so serious? Collection of remarkable tweets #3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/rmnvsl/why-so-serious-collection-of-remarkable-tweets-4-28g0"&gt;Why so serious? Collection of remarkable tweets #4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See you next Friday. If you want, put your favorite tweets in the comments section. 🎉&lt;/p&gt;

</description>
      <category>fun</category>
      <category>twitter</category>
    </item>
    <item>
      <title>Useful search engine shortcuts for browsers</title>
      <dc:creator>Roman Veselý</dc:creator>
      <pubDate>Mon, 06 May 2019 05:27:01 +0000</pubDate>
      <link>https://dev.to/rmnvsl/useful-search-engine-shortcuts-for-browsers-55m</link>
      <guid>https://dev.to/rmnvsl/useful-search-engine-shortcuts-for-browsers-55m</guid>
      <description>&lt;p&gt;Most of the modern web browsers today contain functionality to set multiple search engines that can reduce your day-to-day time spent on finding the best results. Some time ago I &lt;a href="https://twitter.com/rmnvsl/status/1027533760387002368"&gt;tweeted&lt;/a&gt; about adding GitHub to the browser's search engines list. My list has grown in size since then and I think you may find it useful.&lt;/p&gt;

&lt;p&gt;My default browser is &lt;a href="https://vivaldi.com/"&gt;Vivaldi&lt;/a&gt;, but you can find the same setting in all of the following: Firefox, Chrome, Opera or Brave. I currently don't have access to IE/Edge and haven't found it in Safari; sometimes it's really old-fashioned in comparison with others...&lt;/p&gt;

&lt;p&gt;This is how the usage of a custom search engine looks like in the wild:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--stnAVoTU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/d9remkzfp4rhfmon7kt5.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--stnAVoTU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/d9remkzfp4rhfmon7kt5.gif" alt="Search with custom search engine"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Where to look for? Use the following addresses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.tovivaldi://settings/search/"&gt;vivaldi://settings/search/&lt;/a&gt; in Vivaldi, under Search Engines&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.toabout:preferences#search"&gt;about:preferences#search&lt;/a&gt; in Firefox, under One-Click Search Engines&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.tochrome://settings/searchEngines"&gt;chrome://settings/searchEngines&lt;/a&gt; in Chrome, Opera and Brave, as all of them will redirect you to correct address&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You have to add engine name, keyword or nickname which is the shortcut you use in the address bar and search URL containing &lt;code&gt;%s&lt;/code&gt; which is a placeholder for the phrase you are looking for. So in the case of Stack Overflow, the settings are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;name: Stack Overflow&lt;/li&gt;
&lt;li&gt;nickname/keyword: &lt;code&gt;so&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;URL: &lt;code&gt;https://stackoverflow.com/search?q=%s&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's a bit different in Firefox where you add custom engines as add-ons, so you have to search them up in their &lt;a href="https://addons.mozilla.org/en-US/firefox/search/?sort=rating&amp;amp;type=search"&gt;add-ons portal&lt;/a&gt;. You can set a custom keyword afterward.&lt;/p&gt;

&lt;h2&gt;
  
  
  My current settings
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;name&lt;/th&gt;
&lt;th&gt;keyword&lt;/th&gt;
&lt;th&gt;url&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DuckDuckGo&lt;/td&gt;
&lt;td&gt;&lt;code&gt;d&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://duckduckgo.com/?q=%s&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wikipedia&lt;/td&gt;
&lt;td&gt;&lt;code&gt;w&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://en.wikipedia.org/wiki/Special:Search?search=%s&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Google&lt;/td&gt;
&lt;td&gt;&lt;code&gt;g&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://www.google.com/search?q=%s&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gh&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://github.com/search?q=%s&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can I use...&lt;/td&gt;
&lt;td&gt;&lt;code&gt;c&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://caniuse.com/#search=%s&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;npm&lt;/td&gt;
&lt;td&gt;&lt;code&gt;npm&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://www.npmjs.com/search?q=%s&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stack Overflow&lt;/td&gt;
&lt;td&gt;&lt;code&gt;so&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://stackoverflow.com/search?q=%s&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;YouTube&lt;/td&gt;
&lt;td&gt;&lt;code&gt;yt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://www.youtube.com/results?search_query=%s&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MDN&lt;/td&gt;
&lt;td&gt;&lt;code&gt;mdn&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://developer.mozilla.org/en-US/search?q=%s&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PHP&lt;/td&gt;
&lt;td&gt;&lt;code&gt;php&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://www.php.net/manual-lookup.php?pattern=%s&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vXnf1gYk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/zazp724hizil4qtbnhx0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vXnf1gYk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/zazp724hizil4qtbnhx0.png" alt="List of search engines"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall
&lt;/h2&gt;

&lt;p&gt;Let's say I want to know more about npm console options.&lt;/p&gt;

&lt;p&gt;In a hurry, I type &lt;code&gt;npm cli options&lt;/code&gt; in the address bar and get &lt;a href="https://www.npmjs.com/search?q=cli%20options"&gt;"0 packages found"&lt;/a&gt; as a result. Huh? That's because I set &lt;code&gt;npm&lt;/code&gt; keyword to search in the npm package database. To overcome this behavior I need to use &lt;code&gt;g npm cli options&lt;/code&gt; to tell the browser to use Google as a search engine.&lt;/p&gt;

&lt;p&gt;That's definitely not the end of the world, but it can be confusing sometimes. It may be solved by choosing different keywords, it's up to your preferences!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do you have any other interesting use cases?&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>browser</category>
      <category>search</category>
      <category>shortcut</category>
      <category>vivaldi</category>
    </item>
    <item>
      <title>Easy frontend development</title>
      <dc:creator>Roman Veselý</dc:creator>
      <pubDate>Thu, 03 Jan 2019 12:24:56 +0000</pubDate>
      <link>https://dev.to/rmnvsl/easy-frontend-development-8gh</link>
      <guid>https://dev.to/rmnvsl/easy-frontend-development-8gh</guid>
      <description>&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;At the beginning of my developer's career and throughout the years, I was tinkering mainly with the frontend, specifically, I was converting website designs created in Photoshop to templates using HTML and CSS, with a little help of JavaScript (jQuery to the rescue!). Those templates were later implemented together with some CMS by client's backend programmer. Although technologies, processes, and use cases from that time have changed, sometimes radically, we always get back to the roots - plain &lt;code&gt;*.html&lt;/code&gt; files.&lt;/p&gt;

&lt;p&gt;Back then, &lt;em&gt;a lot&lt;/em&gt; of work was repetitive (or maybe I just didn't know the better way of doing things): copy-pasting common parts of the design to every template, like a header or a footer. Imagine a dozen different subpages - templates for the main page, article, product, cart, etc., and a moment you realize you forgot to add a site's logo to some part of the footer. You'd had to open every template and add it to the place. Of course, PHP later helped me to generate resulting templates, but I found it a bit cumbersome.&lt;/p&gt;

&lt;p&gt;Now, when I was done I had to share my work, let it be checked if everything's OK. It meant to create a ZIP with all the files, send it via email and wait for the response. An error found? Designer realized he wants to change something, even a small piece? The whole process began again.&lt;/p&gt;

&lt;p&gt;With free hostings available, in the FTP era, it was a bit easier, but with continual changes in design still very error-prone and laborious.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I was looking/look for now?
&lt;/h2&gt;

&lt;p&gt;Not that much:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;share common parts&lt;/strong&gt; of the templates - no more copy-pasting same thing to several places&lt;/li&gt;
&lt;li&gt;  have some &lt;strong&gt;updated preview&lt;/strong&gt; for a designer or a client - so they can react immediately upon changes (or when they have time for that)&lt;/li&gt;
&lt;li&gt;  a simple &lt;strong&gt;possibility of updates&lt;/strong&gt; - to get rid of another copy-pasting over FTP&lt;/li&gt;
&lt;li&gt;  a better way of &lt;strong&gt;distribution of the final solution&lt;/strong&gt; - ZIP files, really?&lt;/li&gt;
&lt;li&gt;  faster &lt;strong&gt;feedback handling&lt;/strong&gt; - email or chat communication can get messy really fast, and one can overlook important things easily&lt;/li&gt;
&lt;li&gt;  have some &lt;strong&gt;space for documentation&lt;/strong&gt; - not only for final backend implementer but also for my future self&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Today's possibilities
&lt;/h2&gt;

&lt;p&gt;Like I described at the beginning of the article, everything's always changing, but after several tries and failures my current tech-stack consists of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://mozilla.github.io/nunjucks/"&gt;Nunjucks&lt;/a&gt; - JavaScript templating language&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://gulpjs.com/"&gt;Gulp&lt;/a&gt; - handles repetitive tasks&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://www.browsersync.io/"&gt;Browsersync&lt;/a&gt; - offers live reloading, really beneficial through the development phase&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://bitbucket.org/"&gt;Bitbucket&lt;/a&gt; - provides (private) storage for your files&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://www.netlify.com/"&gt;Netlify&lt;/a&gt; - hosts your preview&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Nunjucks
&lt;/h3&gt;

&lt;p&gt;Nunjucks as a templating language provides everything I was looking for, it comes with support for variables, template inheritance, which is great for defining global layouts, macros, which means custom functions, filters, that modify output and much more. It allows you to split parts of the templates to multiple files to preserve DRY (Don't Repeat Yourself) principle.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;base.html&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&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;%&lt;/span&gt; &lt;span class="nx"&gt;block&lt;/span&gt; &lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/h1&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nx"&gt;endblock&lt;/span&gt; &lt;span class="o"&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;%&lt;/span&gt; &lt;span class="nx"&gt;block&lt;/span&gt; &lt;span class="nx"&gt;content&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ul&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;li&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="p"&gt;}}:&lt;/span&gt; &lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/li&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nx"&gt;endfor&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/ul&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nx"&gt;endblock&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Here comes the question - why not just use any of these &lt;a href="https://www.staticgen.com/"&gt;static site generators&lt;/a&gt;? Or maybe React, which is component based by default? I think it would be unnecessary overkill to create dummy templates with those. I have to keep in mind I don't know who is going to use my work, either its output or the source code, so I try to make things as simple as possible for the end user, let it be anyone. Recently I also came upon the &lt;a href="https://ejs.co/"&gt;Embedded JavaScript templating&lt;/a&gt; that seems like a good alternative.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gulp &amp;amp; Browsersync
&lt;/h3&gt;

&lt;p&gt;Widely known task automation manager gulp still has its place in today's web development even though we have powerful Webpack now. Tasks configured via plain JavaScript functions are understandable for a broad audience. Browsersync speeds up your development process with automatic synchronizing of your changes that are reflected in the browser, or multiple browsers, or even mobile devices, at the same moment. It saves a lot of time.&lt;/p&gt;

&lt;p&gt;Here is an &lt;a href="https://gist.github.com/crazko/d59053a5f3c236a20d27eacbb8a5e920"&gt;example&lt;/a&gt; how a &lt;code&gt;gulpfile.js&lt;/code&gt; could look like. It's a bit simplified because no project has the same settings.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bitbucket
&lt;/h3&gt;

&lt;p&gt;Bitbucket is Git code management, it stores your code, which you can share with the others when you add them as contributors. It offers unlimited private repositories, which is simply great. With a repository for every project you can keep simple documentation in &lt;code&gt;README.md&lt;/code&gt; file or use embedded wiki pages for more sophisticated help.&lt;/p&gt;

&lt;p&gt;But what is actually valuable is the issue tracker. You can lead a discussion for every bug or a new feature separately in specific tickets and mark them as done when you are done. You are no more lost in countless email chains. This is very powerful.&lt;/p&gt;

&lt;h3&gt;
  
  
  Netlify
&lt;/h3&gt;

&lt;p&gt;Finally, Netlify is a static hosting. You cannot run PHP or other languages on the backend, which is fine since all we want is to present dummy HTML pages. It connects to your Bitbucket's repository and can run the specific task(s) on every change (every commit).&lt;/p&gt;

&lt;p&gt;Do you remember gulp?&lt;/p&gt;

&lt;p&gt;When you connect everything together, Netlify can run gulp task that builds your templates written in Nunjucks (or any other templating language) and host them for free on a custom subdomain, such as &lt;a href="https://metropole-33b4eb.netlify.com/"&gt;https://metropole-33b4eb.netlify.com/&lt;/a&gt;. And it will do that on every change in your source files that you push to the repository.&lt;/p&gt;

&lt;p&gt;Now you just have to share a domain name with your client and at any time he or she will see the most updated version of your work. Automation is strong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Every project is different, so I didn't specify any CSS preprocessors or JavaScript libraries that may be used in the process. Possibilities are probably countless. My current setting consisting of aforementioned Nunjucks+Gulp+Browsersync+Bitbucket+Netlify works for me now but might change in the future.&lt;/p&gt;

&lt;p&gt;Just keep in mind, not everyone is used to work with things like issue tracker or gulp tasks/npm scripts. But it really pays off to teach your clients or coworkers to use them properly. For both sides.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Find it useful? Great! But I can imagine you have a different approach. What does it look like?&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>beginners</category>
      <category>devtips</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Connect Bitbucket commit messages with different issue tracker</title>
      <dc:creator>Roman Veselý</dc:creator>
      <pubDate>Sun, 16 Jul 2017 00:00:00 +0000</pubDate>
      <link>https://dev.to/rmnvsl/connect-bitbucket-commit-messages-with-different-issue-tracker-416</link>
      <guid>https://dev.to/rmnvsl/connect-bitbucket-commit-messages-with-different-issue-tracker-416</guid>
      <description>&lt;p&gt;Bitbucket can link issues and commit messages not only in itself alone but also with outside world. Let's have a look how to create connections with a different tool for issue tracking.&lt;/p&gt;




&lt;p&gt;Oftentimes I like to wander around a program's or an app's settings and try every possible feature to see what can be adjusted. In the &lt;a href="http://www.nesskdc.sk/" rel="noopener noreferrer"&gt;company&lt;/a&gt; I work for, we use Bitbucket intensively for projects developed for &lt;a href="http://www.nesskdc.sk/en/community-support/ness-kdc-to-kosice/" rel="noopener noreferrer"&gt;non-profit organizations in our region&lt;/a&gt; as well as a place we store our own company-life-supporting applications.&lt;/p&gt;

&lt;p&gt;Given that, Bitbucket was not an exception in my seeking for enhancements. After a while, I came around &lt;strong&gt;Link setting&lt;/strong&gt; and started digging deeper to see how can it be leveraged in our development process.&lt;/p&gt;

&lt;h2&gt;
  
  
  An issue tracker
&lt;/h2&gt;

&lt;p&gt;First I need to say - we do not use Bitbucket to track issues. Developers frequently need to talk about new features or enhancements with our non-technical colleagues from PR or HR section for whom such a tool could be quite too much.&lt;/p&gt;

&lt;p&gt;Because of that, we settled with Trello, which is more user-friendly to keep the discussion about all projects' topics among all involved participants. Simply, a card represents an issue for us - the developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Custom links
&lt;/h2&gt;

&lt;p&gt;Bitbucket can link a commit message with an issue in the way a Github can do:&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F87dlc7j21yea1xbdvyu5.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F87dlc7j21yea1xbdvyu5.png" title="Bitbucket issue tracker" alt="Bitbucket issues"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's great, however not usable in our workflow with Trello. Though, we can use &lt;a href="https://confluence.atlassian.com/bitbucket/link-to-a-web-service-283641959.html" rel="noopener noreferrer"&gt;Link to a web service&lt;/a&gt; setting,  probably not so widely known feature of Bitbucket, and get following results that point directly to Trello's card:&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fy7fu86qd69mvrd7t8kmz.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fy7fu86qd69mvrd7t8kmz.png" title="link is at the beginning of the message" alt="Bitbucket issues"&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fxu3w5qxloeo485zxs9fx.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fxu3w5qxloeo485zxs9fx.png" title="link can be also somewhere in the middle" alt="Bitbucket issues"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nice, how to achieve it?&lt;/p&gt;

&lt;p&gt;You need to go to the &lt;strong&gt;repository Settings&lt;/strong&gt; and find &lt;strong&gt;Links&lt;/strong&gt; under &lt;strong&gt;Workflow&lt;/strong&gt; section. You can see that there is already one present - Bitbucket issue tracker - which is exactly what it says it is.&lt;/p&gt;

&lt;p&gt;To add a new one just click on the &lt;strong&gt;Add new link&lt;/strong&gt; in the upper right corner and fill the dialog with the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Link type: Custom&lt;/li&gt;
&lt;li&gt;Link url: &lt;code&gt;https://trello.com/c/\1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Link key: &lt;code&gt;^(\w+)&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The link key is a regex rule which selects the first word of a message and makes a group of it. Then it is exchanged with the &lt;code&gt;\1&lt;/code&gt; placeholder in the link url which will make a correct link in a message.&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F7opqd6n75j8fe3f20m0q.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F7opqd6n75j8fe3f20m0q.png" alt="Bitbucket issues"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://www.regular-expressions.info/brackets.html" rel="noopener noreferrer"&gt;Learn more about regex&lt;/a&gt; and how to use parentheses for grouping. You can also &lt;a href="https://regex101.com/" rel="noopener noreferrer"&gt;try your regex rules online&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you want to have card ID somewhere in the message body, you can change Link key to &lt;code&gt;#(\w+)&lt;/code&gt;. Now every word prefixed with &lt;em&gt;# symbol&lt;/em&gt; will contain a link.&lt;/p&gt;

&lt;p&gt;Of course, you can use a different symbol. Just be sure you have one, so the ID could be recognizable amongst the other regular words in a message.&lt;/p&gt;

&lt;p&gt;You are also allowed to add more concurrent rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  In conclusion
&lt;/h2&gt;

&lt;p&gt;Everything's good but it's not elegant enough. I'm a bit disappointed that Trello &lt;a href="https://trello.com/c/sSldoiVf/46-deprecated-mentioning-cards-by-number-e-g-46-creates-hyperlinks" rel="noopener noreferrer"&gt;deprecated option&lt;/a&gt; that allowed mentioning (thus linking) cards by their number, which would be surely easier to remember and to write into commit message than to copy-paste entire UUID of a card.&lt;/p&gt;

&lt;p&gt;Eventually, we opted for another solution. Every pull request carries whole card's URL in the description, which makes it easy for us to get information about an issue, though, just not in every commit.&lt;/p&gt;

&lt;p&gt;Are you in a similar situation? Do you use a different approach? If so, I'd like to hear what's your solution or how do you utilize the custom link option.&lt;/p&gt;

&lt;h2&gt;
  
  
  Update
&lt;/h2&gt;

&lt;p&gt;Recently I noticed interesting addon inside Bitbucket integrations - a power up for Trello that allows you join repositories to boards.&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fwndoiq9oamz4cddeimz8.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fwndoiq9oamz4cddeimz8.png" alt="Trello &amp;amp; Bitbucket"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you add one (or more) repo, you are able to create links from Trello's cards to commits, branches or pull requests. Even status of PR is visible; you can see directly who gave an approval, for example. We have adopted this feature very quickly. Read more about new possibilities &lt;a href="https://blog.trello.com/trello-power-ups-for-jira-bitbucket-confluence-hipchat" rel="noopener noreferrer"&gt;in their blog&lt;/a&gt;.&lt;/p&gt;




&lt;center&gt;_originally published at [romanvesely.com](https://romanvesely.com)_&lt;/center&gt;

</description>
      <category>bitbucket</category>
      <category>issues</category>
      <category>trello</category>
      <category>tickets</category>
    </item>
    <item>
      <title>Hi, I'm Roman Vesely</title>
      <dc:creator>Roman Veselý</dc:creator>
      <pubDate>Sun, 02 Jul 2017 18:49:58 +0000</pubDate>
      <link>https://dev.to/rmnvsl/hi-im-roman-vesel</link>
      <guid>https://dev.to/rmnvsl/hi-im-roman-vesel</guid>
      <description>&lt;p&gt;I have been coding for 10+ years.&lt;/p&gt;

&lt;p&gt;You can find me on Twitter as &lt;a href="https://twitter.com/rmnvsl" rel="noopener noreferrer"&gt;@rmnvsl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I live in &lt;a href="https://en.wikipedia.org/wiki/Ko%C3%85%C2%A1ice" rel="noopener noreferrer"&gt;Kosice&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I mostly program in these languages: php.&lt;/p&gt;

&lt;p&gt;I am currently learning more about react.&lt;/p&gt;

&lt;p&gt;Nice to meet you.&lt;/p&gt;

</description>
      <category>introduction</category>
    </item>
  </channel>
</rss>
