<?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: Ero Stefano</title>
    <description>The latest articles on DEV Community by Ero Stefano (@stefanoero).</description>
    <link>https://dev.to/stefanoero</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%2F456629%2F8349d6fd-745f-4ef0-a419-a4fe7c55c965.jpg</url>
      <title>DEV Community: Ero Stefano</title>
      <link>https://dev.to/stefanoero</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/stefanoero"/>
    <language>en</language>
    <item>
      <title>My Favorite Home Assistant Automation: Waking Up to the Smell of Coffee ☕️</title>
      <dc:creator>Ero Stefano</dc:creator>
      <pubDate>Tue, 13 May 2025 11:08:53 +0000</pubDate>
      <link>https://dev.to/stefanoero/my-favorite-home-assistant-automation-waking-up-to-the-smell-of-coffee-27kk</link>
      <guid>https://dev.to/stefanoero/my-favorite-home-assistant-automation-waking-up-to-the-smell-of-coffee-27kk</guid>
      <description>&lt;p&gt;I recently set up Home Assistant and started exploring the world of smart home automation. One of my first—and now favorite—automations is part of my morning routine.&lt;/p&gt;

&lt;p&gt;Let’s be honest: waking up early sucks. Alarm clocks are loud, annoying, and stressful. I wanted something more peaceful to get me out of bed. And I found it…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I wake up through the smell of coffee and the gentle bubbling sound of a moka pot.&lt;/strong&gt; 😌&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;I bought this moka machine from Bialetti: &lt;strong&gt;&lt;a href="https://www.bialetti.com/ee_en/moka-elettrika.html" rel="noopener noreferrer"&gt;https://www.bialetti.com/ee_en/moka-elettrika.html&lt;/a&gt;&lt;/strong&gt;
It’s called the &lt;em&gt;Moka Elettrika&lt;/em&gt;, and it runs on electricity.&lt;/li&gt;
&lt;li&gt;I connected it to a smart plug that’s controlled by Home Assistant.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Automation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;At &lt;strong&gt;7:55 AM&lt;/strong&gt;, the smart plug turns on, powering the moka pot.&lt;/li&gt;
&lt;li&gt;The moka starts brewing right away.&lt;/li&gt;
&lt;li&gt;At &lt;strong&gt;8:10 AM&lt;/strong&gt;, the plug turns off again.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the time I'm awake, the apartment smells like fresh coffee, and I hear that cozy, comforting moka pot bubbling away. It’s such a calm and natural way to wake up—no loud noises, no stress.&lt;/p&gt;

&lt;p&gt;This tiny automation has made a &lt;strong&gt;huge&lt;/strong&gt; difference in how I start my day. If you're into smart home stuff (or just love coffee), give it a try!&lt;/p&gt;

</description>
      <category>homeassistant</category>
    </item>
    <item>
      <title>Tracking email acquisition effectiveness with Google Analytics</title>
      <dc:creator>Ero Stefano</dc:creator>
      <pubDate>Wed, 09 Aug 2023 22:20:15 +0000</pubDate>
      <link>https://dev.to/stefanoero/tracking-email-acquisition-effectiveness-with-google-analytics-2in2</link>
      <guid>https://dev.to/stefanoero/tracking-email-acquisition-effectiveness-with-google-analytics-2in2</guid>
      <description>&lt;h1&gt;
  
  
  Intro
&lt;/h1&gt;

&lt;p&gt;For a client, we developed an app and began marketing it by sending an email to potential users.&lt;/p&gt;

&lt;p&gt;We wanted to measure the effectiveness of our emails to identify areas for improvement. How can we analyze user behavior in emails? Google Analytics provides a simple solution.  &lt;/p&gt;

&lt;p&gt;Before tracking, you need to integrate Google Analytics into your app. This depends on your tech stack, so we’ll focus on the email itself.&lt;/p&gt;

&lt;h1&gt;
  
  
  E-Mail
&lt;/h1&gt;

&lt;p&gt;Here’s the initial draft:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hi,

Have you heard of Nice App? Well, now you have. ;)

You can do a lot of nice stuff with it. Check it out on nice-app.com.

Best regards
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If a user clicks the URL, we’ll see visits—but we won’t know where they came from or which version of the email they received. Let’s improve it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Google Analytics UTM Parameters
&lt;/h2&gt;

&lt;p&gt;Google Analytics allows us to add URL parameters (UTM) to track traffic sources. We used the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;utm_campaign&lt;/strong&gt; = &lt;code&gt;launch&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;utm_medium&lt;/strong&gt; = &lt;code&gt;email&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;utm_source&lt;/strong&gt; = &lt;code&gt;acquisition&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;utm_content&lt;/strong&gt; = &lt;code&gt;version_1&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Improved Version
&lt;/h2&gt;

&lt;p&gt;By appending these UTM parameters to the URL, Google Analytics can track user interactions automatically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;?utm_source=acquisition&amp;amp;utm_medium=email&amp;amp;utm_campaign=launch&amp;amp;utm_content=version_1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hi,

Have you heard of Nice App? Well, now you have. ;)

You can do a lot of nice stuff with it. Check it out on 
[nice-app.com](https://nice-app.com?utm_source=acquisition&amp;amp;utm_medium=email&amp;amp;utm_campaign=launch&amp;amp;utm_content=version_1).

Best regards
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;With these UTM parameters, we can now answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How many times the URL was clicked
&lt;/li&gt;
&lt;li&gt;Which email was received by each user
&lt;/li&gt;
&lt;li&gt;Which version of the email was sent
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Google Analytics is a powerful tool that allows us to monitor email performance and refine our marketing strategy.&lt;/p&gt;

</description>
      <category>marketing</category>
      <category>development</category>
      <category>google</category>
      <category>analytics</category>
    </item>
    <item>
      <title>How do you create PDFs and why did you choose that tech?</title>
      <dc:creator>Ero Stefano</dc:creator>
      <pubDate>Sun, 10 Jan 2021 14:25:52 +0000</pubDate>
      <link>https://dev.to/stefanoero/how-do-you-create-pdfs-and-why-did-you-choose-that-tech-4ghh</link>
      <guid>https://dev.to/stefanoero/how-do-you-create-pdfs-and-why-did-you-choose-that-tech-4ghh</guid>
      <description></description>
      <category>discuss</category>
      <category>pdf</category>
    </item>
    <item>
      <title>Why is UX important for process management?</title>
      <dc:creator>Ero Stefano</dc:creator>
      <pubDate>Fri, 01 Jan 2021 22:07:47 +0000</pubDate>
      <link>https://dev.to/stefanoero/why-is-ux-important-for-process-management-6n8</link>
      <guid>https://dev.to/stefanoero/why-is-ux-important-for-process-management-6n8</guid>
      <description>&lt;p&gt;The higher management often thinks UX is only about user interface. To prove them wrong you have to speak their language.&lt;/p&gt;

&lt;h1&gt;
  
  
  When is a process correct?
&lt;/h1&gt;

&lt;p&gt;When we work we execute processes. Sometimes they are already defined and we just have to follow all tasks. But sometimes they are completely new and we do not have any experience yet. In order for a process to be correct it needs to be effective and efficient.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;effective: do the right thing&lt;br&gt;
efficient: do it right&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Best Case and Worst Case
&lt;/h1&gt;

&lt;p&gt;Let's say it is cold in your apartment and your family sends you to buy a device. &lt;/p&gt;

&lt;h2&gt;
  
  
  Best case
&lt;/h2&gt;

&lt;p&gt;The most effective device is a heater and to buy it efficiently you would go to the nearest store.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;effective: true&lt;/li&gt;
&lt;li&gt;efficient: true&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Worst case
&lt;/h2&gt;

&lt;p&gt;But how does the worst case looks like? Before checking the answer think about it for a minute... ;)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;effective: false&lt;/li&gt;
&lt;li&gt;efficient: true&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Oh well, how can a efficient process be the worst case? Instead of buying an heater you would buy a toaster but still get it from the nearest store. &lt;/p&gt;

&lt;p&gt;Later you show the toaster to your family and you get yelled at for wasting money. What happens next? You put on your shoes and go for a refund.&lt;/p&gt;

&lt;p&gt;If you would gone to a store far away there was a chance that you would have changed your decision and bought a heater or that someone reminded you. You had more time to make that process effective.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;effective &amp;gt; efficient&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Why is UX important for process management?
&lt;/h1&gt;

&lt;p&gt;Let's say I have a friend which has another friend and his cousin lately bought a closet from Ikea. Probably you have already seen Ikea's amazing &lt;a href="https://www.ikea.com/addon-app/storageone/pax/web/latest/?range=pax&amp;amp;uiPlatform=web&amp;amp;locale=en-US#/planner"&gt;web app&lt;/a&gt; where you can design your own closet. &lt;/p&gt;

&lt;p&gt;Sadly that process was not foolproof and the worst case occurred. He managed quickly to design a beautiful closed and ordered it. A few weeks later Ikea delivered and built it in his apartment. Now it comes... that closet was too high! Sincerely, who knows how high his room is? Well, you can say someone would measure up his room before buying a closet. Looks like not everybody does that. ;)&lt;/p&gt;

&lt;h2&gt;
  
  
  Consequences
&lt;/h2&gt;

&lt;p&gt;Ikea has a policy where they exchange your stuff. Good for the user but bad for Ikea. The user and some employees lost time, energy and money for that mistake.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solution
&lt;/h2&gt;

&lt;p&gt;I am pretty sure this was not the first time this happened. But how can we prevent such user mistakes? I do not know but someone who has experience would find a solution.&lt;/p&gt;

&lt;p&gt;Some ideas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remove the default height.&lt;/li&gt;
&lt;li&gt;Set a lower default height.&lt;/li&gt;
&lt;li&gt;Remind the user to check the height.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The buying process of the closet was not effective but efficient. Fastly the user managed to order a wrong closet. Because of this the user and Ikea had unnecessary more work and costs. This could have been avoided if someone had focused on UX.&lt;/p&gt;

</description>
      <category>agile</category>
      <category>ux</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to prioritize your tasks </title>
      <dc:creator>Ero Stefano</dc:creator>
      <pubDate>Tue, 25 Aug 2020 22:05:10 +0000</pubDate>
      <link>https://dev.to/stefanoero/how-to-prioritize-your-tasks-ejl</link>
      <guid>https://dev.to/stefanoero/how-to-prioritize-your-tasks-ejl</guid>
      <description>&lt;p&gt;Imagine you are hero with some amazing superpowers. Because of bad luck you get yourself surrounded by some bad guys who also have superpowers. Although you are hero you cannot take endless damage. At some point you are going to fall like anyone else. This means you need a strategy to finish them. What do you do to minimize the damage you could get? You need to finish one after another! &lt;/p&gt;

&lt;p&gt;This sounds easy but the big question is: In which order should you finish them? Yes, this is very important.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;BTW: running away is the best solution&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Enough heroes, back to business
&lt;/h1&gt;

&lt;p&gt;You have the following two tasks in your backlog.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add new products in web shop&lt;/strong&gt;&lt;br&gt;
Your customers know you have some brand new products and want to buy them. While the products are missing in your web shop your customers cannot buy them.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;You miss profit!&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cost of delay: 200 dollars per day
Size         : 2 days effort
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Automate refunds&lt;/strong&gt;&lt;br&gt;
Although your products are amazing some customers want a refund. The refunds are so annoying and take pretty much time. Time is money. You lose time, you lose money.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This takes you extra effort!&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cost of delay: 150 dollars per day
Size         : 3 days effort
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h1&gt;
  
  
  Calculate the priority
&lt;/h1&gt;

&lt;p&gt;We know the cost of delay and size of each task. How can we compare them? Simple, by this superhero formula.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Cost of delay : Size = Weight&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add new products in web shop&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;200 : 2 = 100&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automate refunds&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;150 : 3 = 50&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Compared to weight we know now that the missing products in the web shop are heavier than the missing automation of refunds.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;100 &amp;gt; 50&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In short them you should first add the new products and then automate the refunds. &lt;/p&gt;

&lt;h1&gt;
  
  
  Recalculate
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Best case&lt;/strong&gt;&lt;br&gt;
We trust our calculated priority and use it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Day 1: 200 + 150 = 350
Day 2: 200 + 150 = 350
Day 3: 150
Day 4: 150
Day 5: 150
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Total costs over these five days: 1150 dollars&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Worst case&lt;/strong&gt;&lt;br&gt;
Assuming we would not care about the calculated priority and we completely invert it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Day 1: 200 + 150 = 350
Day 2: 200 + 150 = 350
Day 3: 200 + 150 = 350
Day 4: 200
Day 5: 200
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Total costs over these five days: 1450 dollars&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Only by prioritizing those tasks we would save up to 300 dollars. This is about 26%.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;BTW: This is the reason all those product owner get some bonus...&lt;/em&gt;&lt;/p&gt;

</description>
      <category>agile</category>
      <category>career</category>
      <category>beginners</category>
    </item>
    <item>
      <title>3 advices for devs in startup projects</title>
      <dc:creator>Ero Stefano</dc:creator>
      <pubDate>Sat, 22 Aug 2020 10:50:52 +0000</pubDate>
      <link>https://dev.to/stefanoero/3-advices-for-devs-in-startup-projects-38h0</link>
      <guid>https://dev.to/stefanoero/3-advices-for-devs-in-startup-projects-38h0</guid>
      <description>&lt;h1&gt;
  
  
  Write tasks
&lt;/h1&gt;

&lt;p&gt;Many non-devs think developing an app is only about coding. No, it's not!  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who stays in touch with stakeholders?&lt;/li&gt;
&lt;li&gt;Who makes sure everything is legal?&lt;/li&gt;
&lt;li&gt;Who is responsible for testing and will find testers?&lt;/li&gt;
&lt;li&gt;Who cares about marketing and those social media accounts?&lt;/li&gt;
&lt;li&gt;Who looks for new colleagues once we need new skills? &lt;/li&gt;
&lt;li&gt;Who controls the budget?&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Of course, a dev could do all this too. But a dev shouldn't waste his time for those tasks. There are plenty of features to build which only devs can do!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;BTW: I recommend &lt;a href="https://trello.com"&gt;trello.com&lt;/a&gt; for writing up and displaying tasks to your colleagues.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Select tasks for the next Sprint
&lt;/h1&gt;

&lt;p&gt;The most annoying thing is when someone starts talking about  tasks which are absolutely unimportant at the moment and you cannot even stop him. &lt;/p&gt;

&lt;p&gt;By selecting the tasks you avoid those unnecessary conversations and only discuss what's selected.&lt;/p&gt;

&lt;h1&gt;
  
  
  Assign tasks
&lt;/h1&gt;

&lt;p&gt;Devs are energetic people and love coding. Isn't it annoying when you expect other colleagues to work as hard you but they don't?&lt;/p&gt;

&lt;p&gt;By assigning tasks everyone commits himself to do it and knows other colleagues expect this. &lt;/p&gt;

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

&lt;p&gt;Personally I think the team is the most important thing in a startup. By keeping an eye on those three advices you know from the start how well the team will perform. Finally, you know if the startup project is worth your time or not. &lt;/p&gt;

</description>
      <category>agile</category>
      <category>beginners</category>
      <category>career</category>
    </item>
  </channel>
</rss>
