<?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: Rudolf Jurišić</title>
    <description>The latest articles on DEV Community by Rudolf Jurišić (@napravicukod).</description>
    <link>https://dev.to/napravicukod</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%2F98416%2F7bdf2b84-aeb6-4c39-afdb-31ba2a8b3b37.jpeg</url>
      <title>DEV Community: Rudolf Jurišić</title>
      <link>https://dev.to/napravicukod</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/napravicukod"/>
    <language>en</language>
    <item>
      <title>Compilation of great reads 11/2021</title>
      <dc:creator>Rudolf Jurišić</dc:creator>
      <pubDate>Mon, 29 Nov 2021 14:54:50 +0000</pubDate>
      <link>https://dev.to/bornfightcompany/compilation-of-great-reads-112021-1gin</link>
      <guid>https://dev.to/bornfightcompany/compilation-of-great-reads-112021-1gin</guid>
      <description>&lt;p&gt;This is an overview of posts and articles that recently made a buzz on our Slack channels. Together with our dev.to posts, they took shape of a newsletter we call &lt;a href="https://mailchi.mp/bornfight.com/devtodev-curated-cuts-of-development-know-how?e=e1cdf3e531"&gt;Dev-to-dev&lt;/a&gt;. &lt;/p&gt;

&lt;h1&gt;
  
  
  BITS FROM THE WWW
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://medium.com/@blakenorrish/testers-just-validate-acceptance-criteria-4c25566b591e"&gt;Testers just validate Acceptance Criteria&lt;/a&gt;&lt;br&gt;
Here’s a list of things you can say to push your QA colleague’s buttons. Use them wisely. Just kidding. Don’t use them. Ever.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://drop.com/buy/stack-overflow-the-key-macropad"&gt;The ultimate copy-pasting tool&lt;/a&gt;&lt;br&gt;
Remember the 2021 April’s fool joke Stack Overflow did? Well, it is no joke anymore. You can buy your copy-paste macro keyboard and show off your copy-pasting ninja skills.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.infoq.com/articles/reduce-technical-debt/"&gt;Technical Debt Isn't Technical&lt;/a&gt;&lt;br&gt;
How technical debt correlates with cooking, why you should praise fire-preventing instead of fire-fighting and what could you do today to deal with technical debt (besides adding more to it).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.danslimmon.com/2019/07/15/do-nothing-scripting-the-key-to-gradual-automation/"&gt;Do-nothing scripting: the key to gradual automation&lt;/a&gt;&lt;br&gt;
If your procedures are only partially suitable for automation, this concept brings you one step closer to automation and reduces the chance of your … I mean … human error. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://mvsp.dev/"&gt;Minimum Viable Secure Product&lt;/a&gt;&lt;br&gt;
If you don’t have any kind of security compliance for your product, this minimalistic security checklist is what you need in order to sleep tight. Or it can be something you implement during those sleepless nights. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://web.dev/ps-on-the-web/"&gt;Photoshop's journey to the web&lt;/a&gt;&lt;br&gt;
Photopea was the de-facto “photoshop online” tool since 2017. We loved the story behind it. Adobe finally made the official version (still in beta). Not sure how long would it take without the Photopea, though.&lt;/p&gt;

&lt;h1&gt;
  
  
  BORNFIGHT ENGINEERING MONDAY
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://dev.to/bornfightcompany/land-a-react-job-the-lazy-way-2d1o"&gt;Land a React Job: The lazy way&lt;/a&gt;&lt;br&gt;
So you've run out of Netflix TV shows to watch, YouTube algorithm is showing videos like “Man eats 87 SpongeBob stickers in an alley” and you learned a JavaScript library while in lockdown? It’s time to react!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/bornfightcompany/how-to-work-as-a-solo-frontend-developer-dhp"&gt;How to work as a solo (frontend) developer&lt;/a&gt;&lt;br&gt;
Working in a team is great. You can progress fast and learn a lot from your colleagues. But sometimes, life happens, and you have to work alone. There, there... don’t be sad. Read this and make the most of it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/bornfightcompany/implement-traditional-auth-system-in-symfony-with-less-code-than-ever-5h25"&gt;Implement traditional auth system in Symfony with less code than ever&lt;/a&gt;&lt;br&gt;
Optimise Symfony auth implementation with PHP8 attributes and the constructor properties promotion. Warning: If your manager is counting your lines of code as a success metric, you should skip reading this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/bornfightcompany/5-reasons-why-frontend-developers-love-graphql-16h8"&gt;5 reasons why Frontend Developers love GraphQL&lt;/a&gt;&lt;br&gt;
If you’ve never worked with GraphQL and haven’t been convinced in the benefits, this post about Luka falling in love with GraphQL might just change your mind. If not, you’ll read yet another great love story.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/bornfightcompany/create-and-publish-your-own-react-library-3cc8"&gt;Create and publish your own React library&lt;/a&gt;&lt;br&gt;
This guide will help you understand how to create and publish your library. Reading it is a requirement for becoming a rich and famous React library publisher, so don’t skip this chance to become one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/bornfightcompany/page-object-pattern-reusable-functions-in-cypress-35jj"&gt;Page Object Pattern + Reusable Functions in Cypress&lt;/a&gt;&lt;br&gt;
Make your work and life easier by isolating page specifics in your automated tests. In a perfect world, selectors would not be changed. But you and I know developers do it just because they can. -.-&lt;/p&gt;

&lt;p&gt;If you like the content, make sure to &lt;a href="https://bornfight.us19.list-manage.com/subscribe?u=67e7b1cbb978b5e176035a450&amp;amp;id=51a7668afb"&gt;subscribe&lt;/a&gt;. &lt;/p&gt;

</description>
      <category>engineeringmonday</category>
      <category>bornfight</category>
    </item>
    <item>
      <title>Home automation, smart home and ... more</title>
      <dc:creator>Rudolf Jurišić</dc:creator>
      <pubDate>Mon, 13 Sep 2021 16:51:55 +0000</pubDate>
      <link>https://dev.to/bornfightcompany/home-automation-smart-home-and-more-11al</link>
      <guid>https://dev.to/bornfightcompany/home-automation-smart-home-and-more-11al</guid>
      <description>&lt;h2&gt;
  
  
  Being a developer, you probably have an urge to automate things. And if you do, you probably want to do it outside of work as well. Especially at home.
&lt;/h2&gt;

&lt;p&gt;Here is an abstract definition of the word automation: "The technique of making an apparatus, a process, or a system operate automatically." So, making yourself operate automatically is an automation as well :) &lt;/p&gt;

&lt;h2&gt;
  
  
  Good ol' human automation
&lt;/h2&gt;

&lt;p&gt;When folding towels, I have specific rules for specific types of towels and after doing it many times, it's an autopilot now. For me this is a satisfying work, but if there was a machine for doing it, I’d definitely be interested.&lt;/p&gt;

&lt;p&gt;In general, we want to not only automate but also delegate repetitive work and give our attention to something more meaningful. Delegating it to our partner doesn't always work, so it’s a good idea to use machines, our future lords. 🤖&lt;/p&gt;

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

&lt;p&gt;Home automation can save time and money, make our life easier and more convenient or just bring coolness to our home so we can make that slick brag-demos to our friends and family. &lt;/p&gt;

&lt;p&gt;So we can make an automation to turn off your devices when nobody is home, or set the right room lighting once you turn your TV on, or brag about your toilet occupancy door light.&lt;/p&gt;

&lt;h2&gt;
  
  
  Home Assistant
&lt;/h2&gt;

&lt;p&gt;Home Assistant is a very powerful tool because it gives you out of box connection, visualisation and automation with your standard sensors, but even more powerful when it comes to customisation.&lt;/p&gt;

&lt;p&gt;It’s open source and has a really great community.&lt;/p&gt;

&lt;p&gt;Here are some steps to get you started:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose your machine (I have RPi 4)&lt;/li&gt;
&lt;li&gt;Choose your implementation (OS or App)&lt;/li&gt;
&lt;li&gt;Research about the protocols (wifi, zigbee, bluetooth, etc.)&lt;/li&gt;
&lt;li&gt;Research about sensors and gateways (T&amp;amp;H, door sensor, PIR, etc.)&lt;/li&gt;
&lt;li&gt;Try not to lose too much time on perfecting your UI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since you are a developer, I am sure you will do your own research from here.&lt;br&gt;
&lt;a href="https://www.home-assistant.io/"&gt;https://www.home-assistant.io/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.awesome-ha.com/"&gt;https://www.awesome-ha.com/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience
&lt;/h2&gt;

&lt;p&gt;I can’t say I did something very special, but there are few things I am satisfied with. Let me share it with you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Learning colours
&lt;/h3&gt;

&lt;p&gt;I have a 20-month-old girl and we are learning colours. So, I connected a physical Wifi button to change the lamp color on click so she can practice when she wants to.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--D-kT8hFU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pofr9srqfoeav995wwxw.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D-kT8hFU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pofr9srqfoeav995wwxw.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Is my fridge dying? Please let me know
&lt;/h3&gt;

&lt;p&gt;My refrigerator sounds kind of funny at moments and I was not sure if this is normal or not. So I put a temperature and humidity sensor in it and saw how it really works. Also, If it stops functioning properly, once it reaches a temperature threshold, I will be notified.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WUbYEPFE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j0wuvfvz0knc5uoob195.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WUbYEPFE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j0wuvfvz0knc5uoob195.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Ping service
&lt;/h3&gt;

&lt;p&gt;This one is not really about home automation, but it demonstrates the power of Home Assistant. With the node-red add-on, you can visually program the automations that can also include sensor data or just play with APIs and stored data.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yVOnLjy9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/62wgqaz65kmh7urtmzew.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yVOnLjy9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/62wgqaz65kmh7urtmzew.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Scrape service
&lt;/h3&gt;

&lt;p&gt;This is another example of node-red flow. It notifies me if there are changes in number of listings on a webpage for apartments in the local area.&lt;/p&gt;

&lt;p&gt;Being a developer, I am sure you'll be interested in these kinds of automation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WQjmwjFJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cffu5aap3qufeqjsq1k5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WQjmwjFJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cffu5aap3qufeqjsq1k5.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  It's a trap
&lt;/h3&gt;

&lt;p&gt;Once you get started with smart home and home automation you start wanting to automate stuff that doesn't need to be automated. &lt;/p&gt;

&lt;p&gt;I suggest reading the HA founders note here:&lt;br&gt;
&lt;a href="https://www.home-assistant.io/blog/2016/01/19/perfect-home-automation/"&gt;https://www.home-assistant.io/blog/2016/01/19/perfect-home-automation/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy smart-home/home-automation/much-more exploration!&lt;/p&gt;

</description>
      <category>engineeringmonday</category>
      <category>homeautomation</category>
      <category>homeassistant</category>
    </item>
    <item>
      <title>How to stay consistent with writing team blog posts</title>
      <dc:creator>Rudolf Jurišić</dc:creator>
      <pubDate>Mon, 28 Jun 2021 13:04:32 +0000</pubDate>
      <link>https://dev.to/bornfightcompany/how-to-stay-consistent-with-writing-team-blog-posts-162n</link>
      <guid>https://dev.to/bornfightcompany/how-to-stay-consistent-with-writing-team-blog-posts-162n</guid>
      <description>&lt;p&gt;For a little more than a year now, we’ve been writing blog posts on various topics related to development. We've created more than 60 blog posts up to now. This is a huge accomplishment for our team since we’ve already tried to write posts on a regular basis. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It is hard to be consistent in writing, just as much as it is in staying on a healthy diet.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And to be frank, we've had one or two of our cheat days. It’s inevitable. A simple rule of &lt;a href="https://dev.to/bornfightcompany/4-tips-for-creating-habits-1b7h"&gt;not skipping twice&lt;/a&gt; helped.&lt;/p&gt;

&lt;h1&gt;
  
  
  Team effort
&lt;/h1&gt;

&lt;p&gt;Imagine yourself writing a blog post each week, with all of the obligations your day-to-day job brings to the table. And your primary job is to write code, not blog posts. &lt;/p&gt;

&lt;p&gt;But being a part of a team - now that makes it all easier.&lt;/p&gt;

&lt;p&gt;So, how did we do it? &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;We’ve set up a goal: attract other developers to notice us (and hopefully be interested in joining us) by writing about our ideas, challenges, findings, etc. (purpose)&lt;/li&gt;
&lt;li&gt;We agreed everyone will participate (a subtle amount of peer pressure)&lt;/li&gt;
&lt;li&gt;With 15 members in our team, it turns out you only write 3 posts a year. And that's not much (perspective)&lt;/li&gt;
&lt;li&gt;If your post helps one person (and it probably will), you should feel good (accomplishment)&lt;/li&gt;
&lt;li&gt;No restrictions on topics or format (autonomy)&lt;/li&gt;
&lt;li&gt;We made a procedure:

&lt;ul&gt;
&lt;li&gt;a schedule so everyone knows in advance when their turn is&lt;/li&gt;
&lt;li&gt;weekly check on who was the last one and who’s up next&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now, this would be nothing if it weren’t for the great team players, so thanks everyone&lt;br&gt;
&lt;a class="mentioned-user" href="https://dev.to/aduda091"&gt;@aduda091&lt;/a&gt;, &lt;a class="mentioned-user" href="https://dev.to/ajdinmust"&gt;@ajdinmust&lt;/a&gt;, &lt;a class="mentioned-user" href="https://dev.to/aleksandarperc"&gt;@aleksandarperc&lt;/a&gt;, &lt;a class="mentioned-user" href="https://dev.to/ddrempe"&gt;@ddrempe&lt;/a&gt;, &lt;a class="mentioned-user" href="https://dev.to/gh0c"&gt;@gh0c&lt;/a&gt;, &lt;a class="mentioned-user" href="https://dev.to/ibrcko"&gt;@ibrcko&lt;/a&gt;, &lt;a class="mentioned-user" href="https://dev.to/ilesar"&gt;@ilesar&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%2Fuploads%2Farticles%2Fbzcg7ez0c2q38zlz7aux.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbzcg7ez0c2q38zlz7aux.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Turns out you can tag only 7 people in your post, so I'm gonna finish the list in the comments :)&lt;/p&gt;

&lt;p&gt;To be fair, some of these posts were created in our free time.&lt;br&gt;
And to be fair, some of the blog posts were written in the last hour before the deadline.&lt;br&gt;
But we’ve kept the consistency.&lt;/p&gt;

&lt;h1&gt;
  
  
  Statistics
&lt;/h1&gt;

&lt;p&gt;Let the stats say a few words.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fip58yef3d5542k8tw1te.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fip58yef3d5542k8tw1te.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some posts made a lot of reactions.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8xvl7e3dastphju8l3cv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8xvl7e3dastphju8l3cv.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some posts made a lot of comments.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvrq95u7bhgho370crmnt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvrq95u7bhgho370crmnt.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And some posts weren’t that successful.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe0w1atitbrftgid8g9qm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe0w1atitbrftgid8g9qm.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  The Newsletter
&lt;/h1&gt;

&lt;p&gt;As a result of our consistency in writing, we started our own newsletter.&lt;br&gt;
It consists of &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;our own blog posts&lt;/li&gt;
&lt;li&gt;links we &lt;a href="https://dev.to/bornfightcompany/custom-slack-command-use-case-sharing-urls-2bf0"&gt;share to our Slack channels&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;other materials we produce - podcasts, educational videos, info-packs etc. 
Basically it is a collection of our development employer branding activities.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://mailchi.mp/bornfight.com/devtodev" rel="noopener noreferrer"&gt;Check it out&lt;/a&gt; and feel free to leave a comment!&lt;br&gt;
And, of course, &lt;a href="https://bornfight.us19.list-manage.com/subscribe?u=67e7b1cbb978b5e176035a450&amp;amp;id=51a7668afb" rel="noopener noreferrer"&gt;subscribe&lt;/a&gt; if you find it relevant!&lt;/p&gt;

</description>
      <category>engineeringmonday</category>
      <category>writing</category>
      <category>consistency</category>
    </item>
    <item>
      <title>Turn any website into an API, with no code</title>
      <dc:creator>Rudolf Jurišić</dc:creator>
      <pubDate>Mon, 03 May 2021 20:37:38 +0000</pubDate>
      <link>https://dev.to/bornfightcompany/turn-any-website-into-an-api-with-no-code-5e6l</link>
      <guid>https://dev.to/bornfightcompany/turn-any-website-into-an-api-with-no-code-5e6l</guid>
      <description>&lt;h3&gt;
  
  
  Why scrape in the first place
&lt;/h3&gt;

&lt;p&gt;There are many reasons why you might want to extract data from a specific public website. Usually, the most common reason is because the data you want is not accessible by an API.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use cases
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Scrape products from your favorite webshop, add a notification mechanism, and make sure to never miss that discount again.&lt;/li&gt;
&lt;li&gt;Your sales team needs a list of potential clients listed on some huge directory.&lt;/li&gt;
&lt;li&gt;Scrape a real estate directory, make sure to be the first one to give the offer for that cozy condo you are looking for&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whatever the reason and the use case, scraping is an automated way of data extraction from websites.&lt;/p&gt;

&lt;h3&gt;
  
  
  Let's code
&lt;/h3&gt;

&lt;p&gt;As a developer, your first instinct is to solve problems by coding. But as a &lt;strong&gt;problem solver&lt;/strong&gt;, you should not presume your problem is unique and you should look for an existing solution to your problem.&lt;br&gt;
Also, the title suggests no coding :)&lt;/p&gt;
&lt;h3&gt;
  
  
  Parsehub
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://parsehub.com/" rel="noopener noreferrer"&gt;Parsehub&lt;/a&gt; is a powerful web scraping GUI tool for efficient fetching and manipulating data from any webpage. It helps you create an API output for a given website. You can even sanitize your content by using regex or replace function. &lt;br&gt;
So the input is a URL and the output is a structured json file.&lt;/p&gt;
&lt;h3&gt;
  
  
  An example
&lt;/h3&gt;

&lt;p&gt;For example, your input is &lt;a href="https://www.bornfight.com/careers/" rel="noopener noreferrer"&gt;Bornfight careers page URL&lt;/a&gt;. And your output is formatted json with all data that you want to use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47c1kec3vwtr108e9bi8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47c1kec3vwtr108e9bi8.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

{
  "jobs": [
    {
      "name": "Sales and Account Manager - m/f",
      "url": "https://www.bornfight.com/careers/strategic-partnerships-executive/",
      "location": "Zagreb",
      "due_date": "Open until filled",
      "type": "Full time job",
    },
    {
      "name": "iOS Developer - m/f",
      "url": "https://www.bornfight.com/careers/ios-developer/",
      "location": "Zagreb / remote",
      "due_date": "Open until filled",
      "type": "Full time job",
    },
    {
      "name": "Office Assistant (student job) - m/f",
      "url": "https://www.bornfight.com/careers/office-assistant-student-job/",
      "location": "Zagreb",
      "due_date": "Open until filled",
      "type": "Student job (part-time)",
    }
  ]
}


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

&lt;/div&gt;
&lt;h3&gt;
  
  
  How to
&lt;/h3&gt;

&lt;p&gt;This is a short video for the given example. It demonstrates the basic features of the tool.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/cA9iy4dr5Jg"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Scrape multiple pages
&lt;/h3&gt;

&lt;p&gt;To add more relevant data to your API, you can instruct the tool to click on each of the job posting, "visit" that single page and add more data to your json output.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/4fXa4JYhFz8"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  What else?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;click through the page navigation and ajax links&lt;/li&gt;
&lt;li&gt;use conditional statements&lt;/li&gt;
&lt;li&gt;create flows with multiple templates&lt;/li&gt;
&lt;li&gt;scroll&lt;/li&gt;
&lt;li&gt;hover&lt;/li&gt;
&lt;li&gt;sanitize data by string replacement and &lt;em&gt;regex&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How to get the data
&lt;/h3&gt;

&lt;p&gt;You can download the extracted data in json/csv format, but better yet, you can access it via &lt;a href="https://www.parsehub.com/docs/ref/api/v2/" rel="noopener noreferrer"&gt;Parsehub API&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%2Fuploads%2Farticles%2Fbhr40nv3522a3sbysqqw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbhr40nv3522a3sbysqqw.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Parsehub API
&lt;/h3&gt;

&lt;p&gt;You can automate the extraction execution via the API, fetch the extracted data and control multiple projects you might have in the tool. &lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Parsehub is a powerful scraping tool. It can handle complex scraping scenarios and it's great for most use cases. You should follow the guiding tutorial once you create your first project. The documentation is good and you should check it to find out more.&lt;/p&gt;

&lt;p&gt;Parsing the Bornfight careers page is a good first exercise. However, if you're interested in joining our team, and there is no open position, you should apply to the &lt;a href="https://www.bornfight.com/careers/open-application/" rel="noopener noreferrer"&gt;open application&lt;/a&gt; :)&lt;/p&gt;

&lt;p&gt;If you have any questions, feel free to ask in the comments. &lt;/p&gt;

</description>
      <category>engineeringmonday</category>
      <category>scraping</category>
    </item>
    <item>
      <title>Eventstorming - should I use it? Yes!</title>
      <dc:creator>Rudolf Jurišić</dc:creator>
      <pubDate>Mon, 15 Feb 2021 19:59:26 +0000</pubDate>
      <link>https://dev.to/bornfightcompany/eventstorming-should-i-use-it-yes-28fo</link>
      <guid>https://dev.to/bornfightcompany/eventstorming-should-i-use-it-yes-28fo</guid>
      <description>&lt;p&gt;Use this tool whenever you want to: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand or document the domain of your project&lt;/li&gt;
&lt;li&gt;Translate domain knowledge to software&lt;/li&gt;
&lt;li&gt;Map any kind of process &lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  New project, new me
&lt;/h1&gt;

&lt;p&gt;You are starting a new project. Feels good, right? Yes! This time no mistakes, right? Yes! You are going to use all of your development experience from previous projects to make this project an exemplary one, right? Yes!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wrong&lt;/strong&gt;! Here’s the news, Jack: Your developer skills are not the thing that actually breaks the project. But you know what is? Requirements. More specifically, unknown requirements.&lt;/p&gt;

&lt;p&gt;If you don’t know the project requirements, things will go south once again, believe it or not. &lt;/p&gt;

&lt;h1&gt;
  
  
  The Domain
&lt;/h1&gt;

&lt;p&gt;Understanding the domain is what makes or brakes the project. It affects your estimations, it affects your risk management, it affects your relationship with project stakeholders. It affects so many things.&lt;/p&gt;

&lt;p&gt;Now, there are a lot of ways you can document your project requirements, but not a lot of tools to explore the domain and map out the business processes.&lt;/p&gt;

&lt;h1&gt;
  
  
  Eventstorming
&lt;/h1&gt;

&lt;p&gt;Eventstorming is a tool for mapping processes. It was created with software development in mind, but really, you can use it for any process that can be described by a series of events.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example #1&lt;/strong&gt;&lt;br&gt;
For instance, reading this article can be described by events:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;article is opened&lt;/li&gt;
&lt;li&gt;visible text is read&lt;/li&gt;
&lt;li&gt;next chunk of text is scrolled to&lt;/li&gt;
&lt;li&gt;next chunk of text is read&lt;/li&gt;
&lt;li&gt;like button is pressed (this one is not really necessary) :)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example #2&lt;/strong&gt;&lt;br&gt;
Let's try another one. Login:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;username is entered&lt;/li&gt;
&lt;li&gt;password is entered&lt;/li&gt;
&lt;li&gt;submit button is clicked&lt;/li&gt;
&lt;li&gt;Text "Hello, Rudolf" is visible&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Events FTW
&lt;/h1&gt;

&lt;p&gt;So, events are the focus of this tool. At least at the beginning.&lt;/p&gt;

&lt;p&gt;Now, these examples are simple and we can probably fit more events and ask a lot of questions, right? Yes, but this is exactly why this tool is great and where the fun starts. And also magic :)&lt;/p&gt;

&lt;p&gt;You can create an overview of the process you are exploring or go into details. You can focus on a specific part that is complex or unknown or most important. Or map everything, that is, if you have time.&lt;/p&gt;

&lt;h1&gt;
  
  
  You said time, I don’t have it.
&lt;/h1&gt;

&lt;p&gt;Great, because the main point is that learning about system by writing code is a very expensive way of understanding business processes.&lt;/p&gt;

&lt;h1&gt;
  
  
  You got my attention, how do I proceed?
&lt;/h1&gt;

&lt;p&gt;To start, you need to gather domain experts and have them onboard. They are the ones who know the domain, but they usually have it inside their mind.&lt;/p&gt;

&lt;p&gt;You should have a facilitator, someone who asks great questions and is curious. Yes, you can play that role. &lt;/p&gt;

&lt;p&gt;You also need post-it notes in different colours and a big surface (wall or paper) to place those post-it notes.&lt;/p&gt;

&lt;h1&gt;
  
  
  Let's begin, finally
&lt;/h1&gt;

&lt;p&gt;It starts by writing down the first and the last event of the process. For example, let's say you are mapping the online shopping process. You start with something like &lt;em&gt;Item is added to cart&lt;/em&gt; and end with something like &lt;em&gt;User received the product&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;There is a simple rule for events: Events should be written in past tense, as if they already happened.&lt;/p&gt;

&lt;p&gt;Now, Eventstorming can be done offline (the original idea) as an event where people of the domain gather physically and work together to map the process. Or you can use an online tool like &lt;a href="https://miro.com"&gt;Miro&lt;/a&gt; or something similar.&lt;/p&gt;

&lt;p&gt;Once you have the first and the last event, you encourage people to write events to orange stickies and put them on the surface.&lt;/p&gt;

&lt;h1&gt;
  
  
  So far so good
&lt;/h1&gt;

&lt;p&gt;Now you watch the magic happening. Questions about the ordering pop up. What comes before and what comes after. How do pieces connect? People learn about other parts of the domain. Some questions cannot be answered at this moment. No problem, put the red sticky and mark this part as the (known) unknown.&lt;/p&gt;

&lt;h1&gt;
  
  
  And how can I pitch this idea to my manager?
&lt;/h1&gt;

&lt;p&gt;You should learn more, test it for yourself first. But if you need to communicate benefits, here are some:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visualisation of business processes&lt;/li&gt;
&lt;li&gt;Clarity and structure emerging&lt;/li&gt;
&lt;li&gt;Cross-department learning&lt;/li&gt;
&lt;li&gt;Mapping the unknowns&lt;/li&gt;
&lt;li&gt;Key questions pop up&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How can I learn more?
&lt;/h1&gt;

&lt;p&gt;As I said, eventstorming is invented with software development in mind. More specifically, with an approach known as Domain Driven Design.&lt;/p&gt;

&lt;p&gt;The beauty of this process is that it can help you with understanding the systems even if you don't use DDD.&lt;/p&gt;

&lt;p&gt;As you dive deeper into the process, new stickies and new terms popup. Like Policy, Command, Input, Aggregate and others. You can begin with Event and Policy and build on top of that.&lt;/p&gt;

&lt;p&gt;Policy is a business rule. It usually looks like &lt;em&gt;Whenever  then &lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Command is a decision that usually triggers some event. For example, &lt;em&gt;Add item to cart&lt;/em&gt;. It triggers the event &lt;em&gt;Item added to cart&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You can use this legend to help you with the process&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ahQUKV7f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i31aavecbnwxchn6aos8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ahQUKV7f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i31aavecbnwxchn6aos8.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eventstorming is a very powerful and very simple tool for exploring your project domain and translating it to software code. And you are going to love it!&lt;/p&gt;

&lt;h1&gt;
  
  
  Resources
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=xIB_VQVVWKk"&gt;https://www.youtube.com/watch?v=xIB_VQVVWKk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=NGXl1D-KwRI"&gt;https://www.youtube.com/watch?v=NGXl1D-KwRI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.eventstorming.com/"&gt;https://www.eventstorming.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.google.com/presentation/d/1h2S2oZGdjjrCx-sF1W-Z2mjuCiXqKN2j4X0dTLF8y0g"&gt;Presentation I used to bring the idea to my team&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>eventstorming</category>
      <category>engineeringmonday</category>
    </item>
    <item>
      <title>Custom slack command use case - Sharing urls</title>
      <dc:creator>Rudolf Jurišić</dc:creator>
      <pubDate>Mon, 23 Nov 2020 18:24:26 +0000</pubDate>
      <link>https://dev.to/bornfightcompany/custom-slack-command-use-case-sharing-urls-2bf0</link>
      <guid>https://dev.to/bornfightcompany/custom-slack-command-use-case-sharing-urls-2bf0</guid>
      <description>&lt;h1&gt;
  
  
  As part of our knowledge sharing experience, we've created a custom Slack command to help us with bookmarking the relevant urls for the whole team.
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Why?
&lt;/h1&gt;

&lt;p&gt;Someone shares an interesting url on Slack. If you are busy at that moment, you'll probably ignore it or say to yourself I’ll read it later and probably forget about it.&lt;/p&gt;

&lt;h1&gt;
  
  
  What?
&lt;/h1&gt;

&lt;p&gt;So we crated a slack custom integration. You type &lt;code&gt;shareurl &amp;lt;url&amp;gt;&lt;/code&gt; in slack and this url ends up in our internal blog. On our weekly meet we review the shared urls and authors give the tldr; version to the rest of the team.&lt;/p&gt;

&lt;h1&gt;
  
  
  How?
&lt;/h1&gt;

&lt;p&gt;When you type the command with a url, payload is sent to our custom app. &lt;br&gt;
Url is then parsed and meta data obtained from a 3rd party service. &lt;br&gt;
App then checks if there is a blog post called &lt;em&gt;Shared Urls Week {year}-{week number}&lt;/em&gt;&lt;br&gt;
If it does not exist, it creates a blog post via WP api with the appropriate title and adds the content to it (url with its meta-data and slack username)&lt;br&gt;
If it exists, it appends the information to that blog post.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rbP5hs4Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/tdrr7zi71oyqf5vwzxmf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rbP5hs4Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/tdrr7zi71oyqf5vwzxmf.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Over-engineered or not, we like to play with automation and integrations :)&lt;/p&gt;

&lt;h1&gt;
  
  
  Used tools
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://api.slack.com/legacy/custom-integrations/outgoing-webhooks"&gt;https://api.slack.com/legacy/custom-integrations/outgoing-webhooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.wordpress.org/rest-api/reference/"&gt;https://developer.wordpress.org/rest-api/reference/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/maknz/slack"&gt;https://github.com/maknz/slack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>engineeringmonday</category>
      <category>slackintegration</category>
      <category>slack</category>
      <category>overengineeringmonday</category>
    </item>
    <item>
      <title>Put anything in macOS menubar</title>
      <dc:creator>Rudolf Jurišić</dc:creator>
      <pubDate>Mon, 08 Jun 2020 13:10:07 +0000</pubDate>
      <link>https://dev.to/bornfightcompany/put-anything-in-macos-menubar-1cak</link>
      <guid>https://dev.to/bornfightcompany/put-anything-in-macos-menubar-1cak</guid>
      <description>&lt;p&gt;Run scripts in your favourite scripting language (PHP, Python, JS, Ruby, shell, Swift, Go, Perl, Lisp ...) and display output in macOS menubar. In no time.&lt;/p&gt;

&lt;p&gt;BitBar is a macOS app that supports custom menubar apps by allowing you to load your scripts' output into macOS native menubar.&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%2Fscgap6esrrggp49oy4tx.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%2Fscgap6esrrggp49oy4tx.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Setup
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Install BitBar (&lt;a href="https://getbitbar.com/" rel="noopener noreferrer"&gt;https://getbitbar.com/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Set plugin folder&lt;/li&gt;
&lt;li&gt;Download an existing plugin
OR 
Create your own plugin (&lt;a href="https://github.com/matryer/bitbar" rel="noopener noreferrer"&gt;https://github.com/matryer/bitbar&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Existing scripts (Plugins)
&lt;/h1&gt;

&lt;p&gt;You can download existing plugins from the Bitbar plugins repo. They even created a custom browser protocol (url schema bitbar://) so you can easily install the plugins. Plugins are your regular .js, .php., .sh, ... files.&lt;/p&gt;

&lt;h1&gt;
  
  
  Your own scripts
&lt;/h1&gt;

&lt;p&gt;To create a plugin, just write an executable script that outputs to the standard output and put it in your BitBar plugin folder and make sure it's executable &lt;/p&gt;

&lt;p&gt;Here’s a JavaScript example demonstrating basic visalization syntax:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cp"&gt;#!/usr/bin/env /usr/local/bin/node
&lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`🎩 Title`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`---`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// separator&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`🇭🇷 Menu item name | color=red `&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`--🐰 Submenu item | color=green`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Bitbar api docs | color=blue href=https://github.com/matryer/bitbar#plugin-api`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fw0f8ht4ss2x9rxddq7h2.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%2Fw0f8ht4ss2x9rxddq7h2.png" alt="Bitbar basic example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Ideas
&lt;/h1&gt;

&lt;p&gt;As you will see, there are a lot of plugins and if you need an inspiration browse the plugins repo. &lt;br&gt;
There are a lot of integrations with known tools: Infrastructure (AWS, DigitalOcean, Heroku), productivity tools (Jira), Version Control tools (Github, Bitbucket, GitLab), CIs (Jenkins, CircleCI), Error reporting tools (Sentry) and so on.&lt;br&gt;
Other than that, there are plugins for Cryptocurrencies, finance, music, weather and many many more.&lt;/p&gt;

&lt;h1&gt;
  
  
  What we used it for
&lt;/h1&gt;

&lt;p&gt;We created a plugin for our internal time-tracking tool (Vremenco) and made it easy to track our work by enabling the interface in the menubar. Since we have an iOS department, we ended up using the native app. :)&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%2Fm711m1kqq44dp307yjlt.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%2Fm711m1kqq44dp307yjlt.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Tips
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;You can easily control the execution frequency (refresh rate) by naming your script file to match the time, e.g. test.1m.js which will run the script every 1 minute.&lt;/li&gt;
&lt;li&gt;use symlinks if you are actively working on your script&lt;/li&gt;
&lt;li&gt;there are some known issues, be aware&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;If you need some info always to be visible or a click away, this tool will give you that. It almost effortlessly provides you an environment to run your scripts. You &lt;em&gt;do&lt;/em&gt; need to learn about formatting the output, but it is very easy and intuitive.&lt;/p&gt;

&lt;p&gt;This is a quick and alternative way of building macOS menubar apps. You can also use Electron as another alternative method as opposed to writing native macOS apps which requires that specific stack knowledge.&lt;/p&gt;

&lt;p&gt;What are your opinions? &lt;br&gt;
What script would be a great candidate for putting in menubar?&lt;/p&gt;

</description>
      <category>engineeringmonday</category>
      <category>macos</category>
      <category>productivity</category>
      <category>tools</category>
    </item>
    <item>
      <title>4 tips for creating habits</title>
      <dc:creator>Rudolf Jurišić</dc:creator>
      <pubDate>Mon, 01 Jun 2020 10:05:34 +0000</pubDate>
      <link>https://dev.to/bornfightcompany/4-tips-for-creating-habits-1b7h</link>
      <guid>https://dev.to/bornfightcompany/4-tips-for-creating-habits-1b7h</guid>
      <description>&lt;p&gt;Here are some important things when it comes to creating habits. &lt;br&gt;
Implementing some of these ideas will increase your chances of success.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Never miss twice
&lt;/h2&gt;

&lt;p&gt;You’re allowed to skip once. This rule will prevent you from the &lt;em&gt;all or nothing&lt;/em&gt; mentality which people usually accept for some reason.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. It takes time (compound interest)
&lt;/h2&gt;

&lt;p&gt;Get 1% better each day and in 1 year you’ll be 38 times better (3800% increase). And here’s math to prove it: 1.01^365 ≈ 38 🙂&lt;br&gt;
But. On day 10 you'll be "just" 10% better and result won't be spectacular or you might not even notice them.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Keep the difficulty in just the right zone
&lt;/h2&gt;

&lt;p&gt;In order to be motivated, don’t ask too much of yourself in the beginning. If I want to achieve typing faster by typing 20 minutes daily, I would start typing everyday for 5 minutes (and then increase the duration over time).&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Start small
&lt;/h2&gt;

&lt;p&gt;If you are creating a habit to start running, for example, and you’re feeling hesitant at the moment, put your running shoes on. You’ll play a little trick on yourself. 🙂&lt;/p&gt;

&lt;p&gt;These concepts or rules can be used in many situations. &lt;br&gt;
What are your experiences? Do you have any tips?&lt;/p&gt;

</description>
      <category>engineeringmonday</category>
      <category>habits</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Do this 1 thing to have more productive meetings</title>
      <dc:creator>Rudolf Jurišić</dc:creator>
      <pubDate>Tue, 14 Apr 2020 10:29:49 +0000</pubDate>
      <link>https://dev.to/bornfightcompany/do-this-1-thing-to-have-more-productive-meetings-38bo</link>
      <guid>https://dev.to/bornfightcompany/do-this-1-thing-to-have-more-productive-meetings-38bo</guid>
      <description>&lt;p&gt;Once a week we have a development department meet where we discuss many topics from our day-to-day work and plans for the future.&lt;/p&gt;

&lt;p&gt;To be as productive as possible, we have a &lt;strong&gt;record template&lt;/strong&gt; for each meet. This record template consists of:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ATTENDEES&lt;/li&gt;
&lt;li&gt;FIXED TOPICS - topics we go through every week&lt;/li&gt;
&lt;li&gt;NEW TOPICS - everyone brings topics for the group discussion&lt;/li&gt;
&lt;li&gt;DISCUSSION - log of everything we discussed&lt;/li&gt;
&lt;li&gt;ACTION ITEMS - tasks on specific things for specific developer&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;❗Make sure your Fixed topics list contains "Last week record action items review" where you all review the previous Action items.&lt;/p&gt;

&lt;p&gt;You can add and remove stuff from fixed topics and experiment with new things you want to achieve or go through on weekly basis.&lt;/p&gt;

&lt;p&gt;We use &lt;em&gt;Paper&lt;/em&gt; for this template, you can check it out and create your own productivity booster like &lt;a href="https://paper.dropbox.com/published/Dev-Weekly-Meet-2020-mm-dd--AxEhw1TkbXFHmA6bNjOObozFBg-FOFS1zr1kkOgYwdqzEfRk6S"&gt;ours&lt;/a&gt; .&lt;/p&gt;

&lt;p&gt;Here's an example list of our Fixed Topics:&lt;br&gt;
    - Last week record action items review&lt;br&gt;
    - Code metrics – our internal system of gamification&lt;br&gt;
    - Education topic for this week&lt;br&gt;
    - Blog posts we create (internal and external)&lt;br&gt;
    - Shame my code – chance to show your current code and ask for advice&lt;br&gt;
    - Employer branding stuff – Things we can share with the outer world&lt;/p&gt;

&lt;p&gt;Hope it helps!&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>teamwork</category>
      <category>engineeringmonday</category>
    </item>
  </channel>
</rss>
