<?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: Dusan Petkovic</title>
    <description>The latest articles on DEV Community by Dusan Petkovic (@dsaga).</description>
    <link>https://dev.to/dsaga</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%2F1178483%2F2698ca39-cdbe-445f-b181-f509b8772e60.jpeg</url>
      <title>DEV Community: Dusan Petkovic</title>
      <link>https://dev.to/dsaga</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dsaga"/>
    <language>en</language>
    <item>
      <title>🚀Real-Time Debugging with TagLog</title>
      <dc:creator>Dusan Petkovic</dc:creator>
      <pubDate>Mon, 23 Dec 2024 08:09:31 +0000</pubDate>
      <link>https://dev.to/dsaga/taglogs-idea-is-simplerethinking-log-management-real-time-debugging-with-taglog-378o</link>
      <guid>https://dev.to/dsaga/taglogs-idea-is-simplerethinking-log-management-real-time-debugging-with-taglog-378o</guid>
      <description>&lt;p&gt;As developers, we’ve all wrestled with logs—digging through endless lines of data to track down bugs or monitor system health. While tools like LogFns simplify logging for developers, I’ve been exploring a different approach to log management with a platform I’m building: TagLog.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TagLog’s idea is simple:&lt;/strong&gt; Treat logs like Slack channels. Instead of waiting for logs to batch process or digging through files, you can monitor logs live in real time. It’s like having a conversation with your application where updates stream in as they happen.&lt;/p&gt;

&lt;p&gt;I’d love to hear from the dev community:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Would a live logging platform be useful in your workflow, or do you prefer the traditional batch-processing approach?&lt;/li&gt;
&lt;li&gt;What’s the biggest challenge you’ve faced when working with logs?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s discuss! Feedback from experienced developers is invaluable as I continue shaping this platform. 🙌&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>logmanagement</category>
      <category>devbugsmash</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What’s the Best Way to Market Your SaaS as a Solo Developer?</title>
      <dc:creator>Dusan Petkovic</dc:creator>
      <pubDate>Tue, 29 Oct 2024 11:41:32 +0000</pubDate>
      <link>https://dev.to/dsaga/whats-the-best-way-to-market-your-saas-as-a-solo-developer-33fm</link>
      <guid>https://dev.to/dsaga/whats-the-best-way-to-market-your-saas-as-a-solo-developer-33fm</guid>
      <description>&lt;p&gt;&lt;strong&gt;As developers, we often enjoy building products much more than marketing them&lt;/strong&gt;—but marketing is crucial if you want users to discover and engage with your SaaS. With limited time and resources, how can solo developers make meaningful progress in growing their user base?&lt;/p&gt;

&lt;h3&gt;
  
  
  Challenges of Limited Time
&lt;/h3&gt;

&lt;p&gt;One of the biggest obstacles for solo developers is balancing development with promotion. I find myself enjoying the coding process far more than the promotional work, but without that extra effort to reach potential users, it’s hard for the product to gain traction. &lt;/p&gt;

&lt;p&gt;Does anyone else feel torn between these two tasks? How do you manage your time effectively?&lt;/p&gt;

&lt;h3&gt;
  
  
  Building Consistency Over Perfection
&lt;/h3&gt;

&lt;p&gt;My approach has been to take things day by day—setting small, manageable goals rather than aiming for a perfect launch. Regular, small interactions in communities where my potential users might hang out (forums, Dev.to, Reddit, etc.) seem more sustainable. By simply staying active and sharing updates, I’m hoping to gather some early users and feedback over time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Question for others:&lt;/strong&gt; How do you stay consistent with marketing activities without feeling overwhelmed?&lt;/p&gt;

&lt;h3&gt;
  
  
  Leveraging Developer Communities
&lt;/h3&gt;

&lt;p&gt;Developer communities are a great place to find users who understand the value of what I’m building. These communities aren’t just potential customers; they’re also incredibly knowledgeable and willing to share feedback, ideas, and support.&lt;/p&gt;

&lt;p&gt;For those who have found success in developer communities, do you have any tips? Which communities have you found most valuable?&lt;/p&gt;

&lt;h3&gt;
  
  
  The Goal: Users and Feedback
&lt;/h3&gt;

&lt;p&gt;For now, my main focus is on gathering feedback rather than immediate revenue. I want users who are willing to try out the product and let me know what works and what doesn’t. Feedback will shape the roadmap and help me prioritize what users need most.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fellow devs:&lt;/strong&gt; What are your experiences with user feedback? How has it influenced your product?&lt;/p&gt;




&lt;p&gt;Would love to hear how other developers approach marketing their products! What has worked for you, and what are the biggest challenges you’ve faced in getting your product out there?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>sass</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>My Side Project Journey - Building a Developer-Friendly Logging Tool</title>
      <dc:creator>Dusan Petkovic</dc:creator>
      <pubDate>Tue, 29 Oct 2024 00:00:00 +0000</pubDate>
      <link>https://dev.to/dsaga/my-side-project-journey-building-a-developer-friendly-logging-tool-399a</link>
      <guid>https://dev.to/dsaga/my-side-project-journey-building-a-developer-friendly-logging-tool-399a</guid>
      <description>&lt;p&gt;As a full-time software engineer, &lt;strong&gt;I’ve always dreamed of creating something on my own&lt;/strong&gt; —an app that could grow and eventually sustain itself. For me, this meant developing a web application that developers could truly benefit from.&lt;/p&gt;

&lt;p&gt;The biggest challenge? Figuring out what to build. I constantly have ideas popping into my head, and while I’ve written down many of them, it wasn’t until recently that I found the momentum to dive into one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Journey Started Two Years Ago&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Actually, it wasn’t that recent. I began working on this project two years ago, only to set it aside after a few months. I’ve recently revived it, though—almost by accident. After nearly losing all the source code due to a phone mishap (and losing my 2-factor authenticator for my GitHub account), I realized it was a project worth picking back up and seeing through.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Project: TagLog
&lt;/h3&gt;

&lt;p&gt;My idea originally stemmed from an old tool I used back when I was developing in PHP. There was a service called phpconsole that allowed for smooth log integration, letting you send individual logs to a web app where they’d be formatted nicely for debugging. Although phpconsole is no longer around, the concept stuck with me. I thought, “Why not build something similar but make it simpler, accessible, and cross-platform?”&lt;/p&gt;

&lt;p&gt;Working at various companies, I’ve seen firsthand how essential a solid logging tool can be, whether for local debugging or resolving production issues. &lt;strong&gt;TagLog&lt;/strong&gt; was born from this need.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzw1s0b2yormofqeu3t1y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzw1s0b2yormofqeu3t1y.png" alt="Taglog.io" width="800" height="487"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  What TagLog Offers
&lt;/h3&gt;

&lt;p&gt;The vision for TagLog is to give developers a clean, organized interface for viewing logs from various sources. It’s designed with channels to organize logs by type, and filtering options that make narrowing down and analyzing logs a breeze.&lt;/p&gt;

&lt;p&gt;Some &lt;strong&gt;core features&lt;/strong&gt; include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Integration with JavaScript projects&lt;/strong&gt; (and more to come)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud-sync for logs&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Channels for log organization&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project-based log grouping&lt;/strong&gt; , so teams can easily share information&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time log updates&lt;/strong&gt; within channels&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Push notifications&lt;/strong&gt; for new log entries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom rule-based notifications&lt;/strong&gt; (via SMS, email, webhook)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There’s also an upcoming &lt;strong&gt;Chrome plugin&lt;/strong&gt; that will sync &lt;code&gt;console.log&lt;/code&gt; and &lt;code&gt;console.error&lt;/code&gt; directly to TagLog. This, along with planned support for additional languages and frameworks, should make logging and debugging much easier for developers working across different tech stacks.&lt;/p&gt;
&lt;h3&gt;
  
  
  Get Early Access
&lt;/h3&gt;

&lt;p&gt;I’m eager to release TagLog as soon as possible, and to make sure it’s the best it can be, I’m offering &lt;strong&gt;free PRO account access for developers willing to use it for their projects&lt;/strong&gt; over the next few months (possibly even a year). This means you can test it out, give feedback, and help shape the tool’s evolution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interested? Drop a comment, and I’ll get you set up as one of the first users!&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Example: Integrating TagLog with React
&lt;/h3&gt;

&lt;p&gt;Here’s a quick example of how you might use TagLog in a React project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { useTaglogInit } from "taglog-web-client";

function TestComponent() {
  const { captureInfo } = useTaglogInit({
    accessKey: "{yourAccessKey}",
    defaultChannel: "{yourChannelKey}",
  });

  return (
    &amp;lt;div&amp;gt;
      &amp;lt;Button
        onClick={(e) =&amp;gt; {
          captureInfo("Button Click Event", e);
        }}
      &amp;gt;
        Test Action
      &amp;lt;/Button&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Road Ahead
&lt;/h3&gt;

&lt;p&gt;This journey is just beginning, and I’m excited to see where it leads. I’ll be sharing updates in the coming weeks once the app goes live at taglog.io. Stay tuned!&lt;/p&gt;

</description>
      <category>taglog</category>
      <category>sass</category>
      <category>en</category>
    </item>
    <item>
      <title>How do I build a SasS?</title>
      <dc:creator>Dusan Petkovic</dc:creator>
      <pubDate>Thu, 10 Oct 2024 18:29:57 +0000</pubDate>
      <link>https://dev.to/dsaga/my-new-sass-project-taglogio-39g8</link>
      <guid>https://dev.to/dsaga/my-new-sass-project-taglogio-39g8</guid>
      <description>&lt;p&gt;Aside from working full-time as a software engineer, I’ve always been eager to create something of my own with the potential to grow into something sustainable—specifically, a web application.&lt;/p&gt;

&lt;p&gt;One of the hardest parts was deciding what to build. I often have ideas pop into my head, many of which I’ve written down, but it wasn’t until recently that I gained real traction with one of them.&lt;/p&gt;

&lt;p&gt;Well, maybe not that recently—I actually started this project two years ago but abandoned it after a few months. I’ve since picked it up again after nearly losing all the source code when my phone died, which also led to the loss of my two-factor authenticator and made my original GitHub account inaccessible.&lt;/p&gt;

&lt;h2&gt;
  
  
  About the App
&lt;/h2&gt;

&lt;p&gt;Now, more about the project. The original inspiration came from an old web application I used back when I was developing with PHP. There was a service called phpconsole that integrated into projects and sent individual log entries to a web app, presenting them in a nicely formatted way for debugging. Although that service has since been retired, the concept stuck with me, and I thought about creating something similar that would be simple to use and compatible with various platforms.&lt;/p&gt;

&lt;p&gt;After spending time at different companies and using a wide range of logging tools, I began to appreciate how a well-designed logging tool can make debugging and issue resolution significantly easier, whether locally or in production.&lt;/p&gt;

&lt;p&gt;The core idea is to create a streamlined interface that aggregates logs from various sources into channels, with filtering options to help users narrow down and analyze the logs more effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  I need feedback
&lt;/h2&gt;

&lt;p&gt;I have plans to add more features and options, but I’m eager to release this as soon as possible to get feedback. As a result, I’ll be offering PRO account access for free to anyone willing to use it for development over the next few months, maybe even a year.&lt;/p&gt;

&lt;p&gt;If you’re interested in getting access and being one of the first users, feel free to comment here!&lt;/p&gt;

&lt;p&gt;I’ll share updates in the coming weeks once the app goes live. The domain for the app is taglog.io.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwa55euml8sm6b9mcbffg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwa55euml8sm6b9mcbffg.png" alt="Image description" width="800" height="487"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example: Integrating taglog.io with a React Project&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="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useTaglogInit&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;taglog-web-client&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;TestComponent&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;captureInfo&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useTaglogInit&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;accessKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;{accessKeyHere}&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;defaultChannel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;{testChannelKey}&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Button&lt;/span&gt;
        &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="nf"&gt;captureInfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Button Event Triggered&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;}}&lt;/span&gt;
      &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nx"&gt;Test&lt;/span&gt; &lt;span class="nx"&gt;Action&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/Button&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;React Integration: taglog-web-client on npm&lt;/p&gt;

&lt;h2&gt;
  
  
  Concept Features:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Integration with JavaScript projects&lt;/li&gt;
&lt;li&gt;Sync logs to the cloud&lt;/li&gt;
&lt;li&gt;Add logs to channels&lt;/li&gt;
&lt;li&gt;Group channels into projects and share with team members&lt;/li&gt;
&lt;li&gt;Live updates in channels (real-time log streaming)&lt;/li&gt;
&lt;li&gt;Push notifications for new logs in channels (when subscribed)&lt;/li&gt;
&lt;li&gt;Set up rules to trigger notifications (SMS, email, push, webhook)&lt;/li&gt;
&lt;li&gt;Upcoming: Chrome plugin to sync console logs and errors&lt;/li&gt;
&lt;li&gt;Upcoming: Sync requests from the web app&lt;/li&gt;
&lt;li&gt;Upcoming: Support for additional frameworks and languages&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>sass</category>
      <category>webdev</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Latest version of Yup and Typescript issues that annoy me!</title>
      <dc:creator>Dusan Petkovic</dc:creator>
      <pubDate>Sat, 04 Nov 2023 09:06:29 +0000</pubDate>
      <link>https://dev.to/dsaga/latest-version-of-yup-and-typescript-issues-that-annoy-me-38fb</link>
      <guid>https://dev.to/dsaga/latest-version-of-yup-and-typescript-issues-that-annoy-me-38fb</guid>
      <description>&lt;p&gt;Hey everyone, I've recently started a project where I am using Yup with Vite and the latest version of React, but I'm facing some issues.&lt;/p&gt;




&lt;p&gt;Namely, I've used Yup to generate validation schemas for data received from an endpoint, such as a POST request body. Then, I realized I could infer my entire Entities from the Yup schemas.&lt;/p&gt;

&lt;p&gt;So, I wrote code like the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;questionEntitySchema&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Yup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;object&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;questionText&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Yup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;required&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Yup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;required&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nx"&gt;required&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getQuestionsSchema&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Yup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;object&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;questions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Yup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="k"&gt;of&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;questionEntitySchema&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;required&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;And I expected the type of getQuestionsSchema to be like the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// to infer the type with Yup utility&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;TGetQuestions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Yup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;InferType&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;getQuestionsSchema&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// what I expect as the inferred type for TGetQuestions&lt;/span&gt;
&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;TGetQuestions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;questions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;questionText&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}[];&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;However, the problem is that I don't get what I expected; everything I get becomes OPTIONAL, which contradicts the required statements in the schema definition.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// example of what is actually inferred &lt;/span&gt;

&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;TGetQuestions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;questions&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;questionText&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;id&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}[];&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If it worked as described in the official docs, it would be very convenient to declaratively describe the Entities and DTOs with Yup schemas and then accurately infer them. But from my testing, it doesn't seem to work. I'm not sure if it's a TypeScript-specific issue. &lt;/p&gt;

&lt;p&gt;it would be nice to have some additional eyes on this. Maybe I'm doing something wrong here.&lt;/p&gt;

&lt;p&gt;Thanks!&lt;/p&gt;

</description>
      <category>yup</category>
      <category>react</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Being a Developer Coach - What I Learned.</title>
      <dc:creator>Dusan Petkovic</dc:creator>
      <pubDate>Mon, 23 Oct 2023 00:00:00 +0000</pubDate>
      <link>https://dev.to/dsaga/being-a-developer-coach-what-i-learned-21a2</link>
      <guid>https://dev.to/dsaga/being-a-developer-coach-what-i-learned-21a2</guid>
      <description>&lt;p&gt;When this role was entrusted to me, I wasn’t expecting it at all. Previously, I mostly did development work and some mentoring for junior and new employees who were starting at our company.&lt;/p&gt;

&lt;p&gt;In essence, it was new territory for me, and I had to find my own way into it and improve my people skills so that I could help the people in my own coaching team.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Happened
&lt;/h2&gt;

&lt;p&gt;Initially, we had a restructuring in the company, and new roles were introduced where we had two paths on which we could develop: as engineers and as managers.&lt;/p&gt;

&lt;p&gt;In between, we had a new special role that was called a “Coach”. We didn’t get much context at first about what this new role meant, but anyway, I was awarded the Coach role at our all-hands meeting (to my surprise).&lt;/p&gt;

&lt;p&gt;It was overwhelming at first to somehow fit in the new obligations to my new coachees, as &lt;strong&gt;I was now responsible for their professional and personal development&lt;/strong&gt;, and also responsible for their performance. Some questions popped up in my mind, imposter syndrome shining through most of them. How do I qualify to help another person with their career when I often don’t know where I am going?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SDZYCuAG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i1.kym-cdn.com/photos/images/facebook/000/308/125/1ee.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SDZYCuAG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i1.kym-cdn.com/photos/images/facebook/000/308/125/1ee.jpg" alt="I have no idea" width="720" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But as with any new skill, I had to dive deep and figure it out, find resources to learn from, and talk to other Coaches to get some insight into how they approached their coaching teams.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Why
&lt;/h2&gt;

&lt;p&gt;The reason for introducing this kind of managerial role for a company, from my understanding, is to have better visibility into a growing organization, where each employee in the company has a dedicated “Coach” they basically report to, while the Coaches report to the company top management. It’s essentially an Engineering Manager type role, with more focus on helping developers be and achieve their best.&lt;/p&gt;

&lt;h2&gt;
  
  
  Here Are Some Processes and Methods I Used
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ✧ 1-on-1 meetings with each team member
&lt;/h3&gt;

&lt;p&gt;One of the first decisions I made to start in this new role was to organize 1-on-1 meetings and get acquainted with each of my team members. Even though some coaches did the first meeting with all their coachees present, that style didn’t really work for my personality. I like to be able to focus on the person to get to know them. I also didn’t yet have a proven way to get things going, so 1-on-1 style better suited my situation as I could be flexible and change my approach based on a team member’s specific needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✧ Schedule regular checkups/syncs
&lt;/h3&gt;

&lt;p&gt;After getting to know each person in my team, my second decision was to schedule a monthly meeting/checkup with them. The goal of this was to be able to get a sense of how they are doing on a particular project they are working on and if they have any problems we can discuss.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✧ Have notes
&lt;/h3&gt;

&lt;p&gt;The next important point I realized is that it’s hard to keep track of the discussions and remember the things we talked about and decided on as action items. So ideally, it’s best to have a shared document with each coachee where you outline meeting goals and decisions or action items, so it’s much easier to stay accountable.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✧ Listen first
&lt;/h3&gt;

&lt;p&gt;The whole point of coaching developers is to be able to understand where they are right now so that you can push them forward, and you can only find that out by listening and asking the proper questions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What lifted you up in the past month, and what weighed you down?&lt;/li&gt;
&lt;li&gt;What do you feel is an area where you’re lacking at the moment and would like to improve?&lt;/li&gt;
&lt;li&gt;If we had a scale from 1 to 7, where would you put yourself in relation to a skill you would like to develop?&lt;/li&gt;
&lt;li&gt;How can I support you?&lt;/li&gt;
&lt;li&gt;Do you have any problems in your team? (more specific)&lt;/li&gt;
&lt;li&gt;Do you feel like you can raise any concerns to your team or manager? (more specific)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ✧ Set goals
&lt;/h3&gt;

&lt;p&gt;It’s hard to move forward and know that you’ve made progress unless you have set goals and ways to measure them. So after a year in my coaching team, I tried to help my coachees set their goals for the next period. Initially, we tried setting the goals for the whole year, but it proved to be hard to fulfill most of the goals because of time constraints. So we trimmed down the goals to be achievable from the coachee’s perspective for the next 6 months.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✧ Be available
&lt;/h3&gt;

&lt;p&gt;In order for coaches to trust me and share their concerns and problems, I think it’s key to just be available. My approach was always to get on a call, and often pair program and have the person describe the problem, where I act as an observer and ask questions. It’s an indispensable tool when doing any kind of mentoring in software development.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✧ Find motivation, switch things up
&lt;/h3&gt;

&lt;p&gt;One of the things that I struggled with, even though my coachees were doing fine on all fronts, is just to find motivation and the why, because you don’t really know how much you’re actually making a difference in the person’s career. We can often get stuck in the regular schedule/agenda, and finding new areas to explore in our sessions is not easy. So my approach there was to ask and get a feel for how we’re doing, and if they feel like they have gotten some real benefit from the discussions. Also, another idea is to just ask the coachee what they would like to talk about.&lt;/p&gt;

&lt;p&gt;In the above article, I tried to draw mostly from my own experiences as a manager for a number of developers. You can draw any conclusions from it, but I do hope it’s helpful to anyone starting a similar journey.&lt;/p&gt;

&lt;p&gt;👋 If you have any comments or suggestions, feel free to reach out to me!&lt;/p&gt;

</description>
      <category>management</category>
    </item>
    <item>
      <title>Hello dev.to World</title>
      <dc:creator>Dusan Petkovic</dc:creator>
      <pubDate>Fri, 13 Oct 2023 09:13:19 +0000</pubDate>
      <link>https://dev.to/dsaga/hello-devto-world-32o5</link>
      <guid>https://dev.to/dsaga/hello-devto-world-32o5</guid>
      <description>&lt;p&gt;Based on my experience with the platform so far, this seems like a great place to spark discussions and exchange ideas.&lt;/p&gt;

&lt;p&gt;I've been considering this as a good platform to seek feedback on some of my portfolio projects on GitHub. There are many talented developers here, and I've seen a willingness to comment and offer suggestions.&lt;/p&gt;

&lt;p&gt;So here it is—I've developed this React app with a Node.js backend for an interview assignment, which I later modified to use it for my GitHub page. Essentially, it's an employee directory using in-memory storage. I made an effort to apply a domain-driven approach for the front-end part (React), while for the server, it's essentially all in one file (containing all API endpoints).&lt;/p&gt;

&lt;p&gt;You can find the project here: &lt;a href="https://github.com/dsaga/employee-list-app"&gt;Employee List App&lt;br&gt;
&lt;/a&gt;&lt;br&gt;
I would appreciate anyone who is willing to take a look and suggest how to improve or provide insights on how to make it better.&lt;/p&gt;

</description>
      <category>react</category>
      <category>node</category>
      <category>discuss</category>
      <category>hello</category>
    </item>
  </channel>
</rss>
