<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Alejandro AR (kinduff)</title>
  <id>https://kinduff.com/</id>
  <link href="https://kinduff.com/feed.xml" rel="self" type="application/atom+xml" />
  <link href="https://kinduff.com/" rel="alternate" type="text/html" />
  <updated>2025-11-30T20:30:00+00:00</updated>
  <author>
    <name>Alejandro AR (kinduff)</name>
    
    <uri>https://kinduff.com</uri>
  </author>
  <rights>© 2008-2025 Alejandro AR (kinduff.com)</rights>
  <subtitle>Alejandro AR (kinduff) website with blog posts, projects, videos, and more.</subtitle>

  
    <entry>
      <id>https://kinduff.com/2025/11/30/the-doorman/</id>
      <title type="html">The Doorman</title>
      <link href="https://kinduff.com/2025/11/30/the-doorman/" rel="alternate" type="text/html" />
      <published>2025-11-30T20:30:00+00:00</published>
      <updated>2025-11-30T20:30:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            Carding the CEO is the ultimate unit test.

          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<p>I don’t remember where I heard this story, but it stuck in my mind to this day. It goes something like this:</p>

<blockquote>
  <p>A doorman is guarding the entrance of a very important corporate building. He lets people in and out based on their badges.</p>

  <p>One day, the owner of the company arrives. As she approaches the door, the doorman asks for her ID.</p>

  <p>The owner’s secretary says, “Don’t you know who she is? Let her in!”</p>

  <p>The owner of the company hands him her ID, and he lets her in.</p>

  <p>The doorman’s boss was baffled and said he would reprimand the doorman.</p>

  <p>However, the owner of the building stopped the boss and asked him to promote the doorman instead.</p>

  <p>When the boss asked why, she said, “He did his job exactly as he should.”</p>
</blockquote>

<p>I like this little story because sometimes we forget what our actual job is. When you and your peers have clear expectations regarding your roles, no action taken to fulfill those roles should come as a surprise.</p>

<p>We get paid to execute tasks and transform the time we invest into “proof of work.”</p>

<p>It doesn’t matter what you do for a living; you will produce something. It could be a set of documents, code, or even maintaining specific metrics.</p>

<p>The secret, as mentioned before, is having clear expectations. Without these, your job becomes like a plastic bag in the wind, lacking true goals or proof of work.</p>
]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2025/08/30/the-piano-melody/</id>
      <title type="html">The Piano Melody</title>
      <link href="https://kinduff.com/2025/08/30/the-piano-melody/" rel="alternate" type="text/html" />
      <published>2025-08-30T05:37:00+00:00</published>
      <updated>2025-08-30T05:37:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            Spent hours trying to identify my neighbor's piano song through apps.

          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<p>I was staying at my mom’s house for the first time since she recently moved. I was surprised to learn that the neighbor played the piano. I could hear her play every other day in the afternoon.</p>

<p>One day, I was working from the kitchen, the part of the house closest to where she plays the piano, when I heard the song.</p>

<p>Oh, this song.</p>

<p>It had some kind of mysterious rhythm, some kind of march. Then a playful melody that jumped around, only to become very serious, trying to say a lot of things at the same time. Then it had a calm approach to reintroduce the melody, while increasingly becoming louder, with more strength. To march again.</p>

<p>This captivated me so much that I jumped from the table and tried to record it with my phone. I couldn’t hear a thing when playing it back. The clock was ticking because I knew the song was about to end. So I grabbed a glass and held it against the wall like they did in the cartoons, and it worked.</p>

<p>I had the recording. So I jumped to the laptop and opened it in Audacity. I increased the volume and tried to Shazam it.</p>

<p>Nothing.</p>

<p>I moved some levels, making it sound better.</p>

<p>Nothing.</p>

<p>I tried a bunch of services online. Trimmed the clip a bunch of times.</p>

<p>Nothing.</p>

<p>Sidenote: I didn’t try to convert it to MIDI and then search for the pattern. It could work, but I don’t know.</p>

<p>Anyway, I also sent it to a couple of friends (thanks y’all), but no dice.</p>

<p>Then it hit me. I was trying to solve this problem using technology. All my efforts were done on the laptop. So I got up from the chair and asked my mom to send her a message asking for the song name—and SoundCloud! Just kidding. Asking her what song she was playing.</p>

<p>She was grateful for the message and told us it made her day. She is a very sweet grandma and she was feeling down.</p>

<p>From that day, she would give us concerts. Only a couple of songs, but she would play at night around 10 PM—something that she didn’t do before. She would play a set and she would play it well.</p>

<p>A couple of weeks later I came back to visit. And today, she played at 10 PM again. Mom told me she hadn’t played at this time since I left.</p>

<p>And she played the song I loved first, followed by new pieces that I really liked. I have no idea how to play the piano, but I just love it. Gonna sign up for lessons soon.</p>

<p>PS: Here is the song.</p>

<div class="youtube-container"><iframe src="https://www.youtube.com/embed/p6WgblaynQg" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe></div>
]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2025/05/28/when-ai-sells-you-what-you-want/</id>
      <title type="html">When AI Sells You What You Want</title>
      <link href="https://kinduff.com/2025/05/28/when-ai-sells-you-what-you-want/" rel="alternate" type="text/html" />
      <published>2025-05-28T03:37:00+00:00</published>
      <updated>2025-05-28T03:37:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            Any product you can think of, Crafty can build.

          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<p>Posts that could be tweets, but you’re already here, so let’s begin.</p>

<p>Imagine you go to an Amazon-like shop where you can buy whatever you want, through prompts instead of search. Vendors, instead of selling their products, sell their craft. Let’s call it <strong>“Crafty”</strong> for now.</p>

<p>The user prompts for the product they’re looking for, and Crafty’s AI creates instructions for the vendors about how and what to build, then handles the delivery.</p>

<p>Any product you can think of, Crafty can build. For example, the user writes in the search bar:</p>

<blockquote>
  <p>Universal remote that controls my TV, sound bar, and Philips Hue lights, with a small OLED screen showing what device I’m controlling, matte black finish, and only the 8 buttons I actually use</p>
</blockquote>

<p><img src="/assets/images/posts/20250527212506.jpg" alt="Crafty AI Example" /></p>

<p>A vendor that specializes in electronics will receive this job (I can see a bidding system in place). The Crafty AI will include all the designs, 3D models, instructions, schematics, etc. needed to build this, and it will also handle the delivery.</p>

<p>You could even extend the idea to a network of crafters or shops with a supply chain system. Not ideal for shipping time, though.</p>

<p>Imagine sending this to multiple vendors where each produces their part. One prints the 3D shell in the color you chose. Another crafts a green board and adds the little squares, etc.</p>

<p>The user receives the item in parts with assembly instructions.</p>

<p>Or maybe Crafty wants to increase profits and starts teaching people how cool it is to print at home. It makes “Thing Printers” accessible to the public so people can create anything, even control remotes.</p>

<p>Crafty will optimize the network and allow Thing Printers to be interconnected to minimize delivery times on your favorite products.</p>

<p>But without going too far, and just sticking to the first part of the idea, we can see how simple buying things could be, especially for products that can be built in a straightforward way.</p>

<p>The recommendation systems will change too: instead of pushing the products they sell, companies will push the products they can build. Instead of recommending similar products, they’ll recommend variants and customizations.</p>

<p>Anyway, I’m pretty sure a company like this will pop up eventually, and it will be interesting to see the new economies this will bring. AI will rule, but humans will enjoy it.</p>

<p>Back to code. Thanks for reading.</p>
]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2025/05/22/question-driven-development/</id>
      <title type="html">Question Driven Development</title>
      <link href="https://kinduff.com/2025/05/22/question-driven-development/" rel="alternate" type="text/html" />
      <published>2025-05-22T01:31:00+00:00</published>
      <updated>2025-05-22T01:31:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            A reflection on the importance of asking the right questions in software development.

          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<p>I have this memory from when I was a kid of asking the following question during a biology presentation about the human body and its parts: <mark>"Why do we die when our blood stops moving?"</mark></p>

<p>Everybody laughed. I felt shame. But I also didn’t get an answer from my mocking peers because they couldn’t understand it either, but didn’t want to accept it. Today, years later, I understand why but don’t fully grasp it. I’m not a biologist or anything similar.</p>

<p>What my teacher said to me and the group after I asked that question is what I remembered a minute ago: <mark>"There are no stupid questions, only stupid people who don't ask."</mark> And she proceeded to explain why.</p>

<p>I like to ask questions before and after implementing a feature to make them complete and avoid having to implement those when something goes wrong. We usually do this when coding by using our brains and interpreting and predicting how the data will flow in a script, a method, or collection of classes:</p>

<p><mark>"When this string is compared and is exactly what I'm looking for, I will call this method that returns if its valid according to these other things [...]"</mark></p>

<p>So let’s talk about that. How asking questions and documenting them can make your feature complete.</p>

<p>And yes, I just tied a personal story to an engineering article on how the idea of asking questions can be transposed across multiple areas of a feature implementation. Sue me!</p>

<p>The first thing to pay attention to when asking a question is <mark>to know to whom or what we are asking the question</mark>. The idea of just throwing an idea out of the blue seems preposterous.</p>

<p>For example, let’s play pretend and take the following task from our backlog:</p>

<blockquote>
  <p><strong>Move webhook processing to a background job</strong></p>

  <p>In our application route, we are executing and waiting inline for our service to resolve to respond to the incoming webhook. We want is to move the processing to a background job and respond to the webhook immediately with a 204.</p>
</blockquote>

<p>And here is part of the code we care about for now. If you don’t know Ruby on Rails or Ruby, I’m really sorry. You should, its really nice.</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">class</span> <span class="nc">WebhooksController</span> <span class="o">&lt;</span> <span class="no">ApplicationController</span>
  <span class="k">def</span> <span class="nf">receive</span>
    <span class="n">event_params</span> <span class="o">=</span> <span class="n">params</span><span class="p">[</span><span class="ss">:event</span><span class="p">]</span> <span class="c1"># get params</span>
    <span class="no">SweetLittleService</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="n">event_params</span><span class="p">).</span><span class="nf">call</span> <span class="c1"># call service</span>
    <span class="n">head</span> <span class="mi">200</span> <span class="c1"># give response</span>
  <span class="k">end</span>
<span class="k">end</span>
</code></pre></div></div>

<p>I can think of a couple of questions already by reading this description and seeing the code.</p>

<p>For example, to the <strong>Product Owner/Manager</strong> we can ask:</p>
<ol>
  <li>What happens if the background job fails?</li>
  <li>Do we need to track the webhook processing status?</li>
  <li>What’s the expected volume of webhooks?</li>
</ol>

<p>To the <strong>System/Architecture</strong>:</p>
<ol>
  <li>What happens if we lose the job before processing?</li>
  <li>Should the job be idempotent?</li>
  <li>What’s our error handling strategy?</li>
</ol>

<p>To the <strong>Implementation</strong>:</p>
<ol>
  <li>Why do we want to process in the background?</li>
  <li>How much time does our service take to execute?</li>
  <li>Why return a 204 HTTP code and not 200?</li>
</ol>

<p>To <strong>Ourselves</strong>:</p>
<ol>
  <li>Why do I keep working on software engineering?</li>
  <li>How much wood could a woodchuck chuck if a woodchuck could chuck wood?</li>
  <li>Did I just lost <a href="https://en.wikipedia.org/wiki/The_Game_(mind_game)">The Game</a>?</li>
</ol>

<p>With these questions in mind, we could potentially modify our controller and create our background job like this. And please, this is just an example!</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">class</span> <span class="nc">WebhooksController</span> <span class="o">&lt;</span> <span class="no">ApplicationController</span>
  <span class="k">def</span> <span class="nf">receive</span>
    <span class="n">event_params</span> <span class="o">=</span> <span class="n">params</span><span class="p">[</span><span class="ss">:event</span><span class="p">]</span>

    <span class="c1"># Create a job with retries and error handling</span>
    <span class="no">WebhookProcessingJob</span><span class="p">.</span><span class="nf">perform_later</span><span class="p">(</span>
      <span class="n">event_params</span><span class="p">,</span>
      <span class="ss">webhook_id: </span><span class="no">SecureRandom</span><span class="p">.</span><span class="nf">uuid</span><span class="p">,</span> <span class="c1"># for idempotency</span>
      <span class="ss">received_at: </span><span class="no">Time</span><span class="p">.</span><span class="nf">current</span>
    <span class="p">)</span>

    <span class="n">head</span> <span class="mi">204</span> <span class="c1"># respond immediately</span>
  <span class="k">end</span>
<span class="k">end</span>

<span class="k">class</span> <span class="nc">WebhookProcessingJob</span> <span class="o">&lt;</span> <span class="no">ApplicationJob</span>
  <span class="n">queue_as</span> <span class="ss">:webhooks</span>
  <span class="n">retry_on</span> <span class="no">StandardError</span><span class="p">,</span> <span class="ss">wait: </span><span class="mi">5</span><span class="p">.</span><span class="nf">seconds</span><span class="p">,</span> <span class="ss">attempts: </span><span class="mi">3</span>

  <span class="k">def</span> <span class="nf">perform</span><span class="p">(</span><span class="n">event_params</span><span class="p">,</span> <span class="n">webhook_id</span><span class="p">:,</span> <span class="n">received_at</span><span class="p">:)</span>
    <span class="c1"># Check if we already processed this webhook</span>
    <span class="k">return</span> <span class="k">if</span> <span class="no">WebhookLog</span><span class="p">.</span><span class="nf">exists?</span><span class="p">(</span><span class="ss">webhook_id: </span><span class="n">webhook_id</span><span class="p">,</span> <span class="ss">status: </span><span class="s1">'completed'</span><span class="p">)</span>

    <span class="no">WebhookLog</span><span class="p">.</span><span class="nf">create!</span><span class="p">(</span>
      <span class="ss">webhook_id: </span><span class="n">webhook_id</span><span class="p">,</span>
      <span class="ss">status: </span><span class="s1">'processing'</span><span class="p">,</span>
      <span class="ss">received_at: </span><span class="n">received_at</span><span class="p">,</span>
      <span class="ss">event_params: </span><span class="n">event_params</span>
    <span class="p">)</span>

    <span class="k">begin</span>
      <span class="no">SweetLittleService</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="n">event_params</span><span class="p">).</span><span class="nf">call</span>
      <span class="no">WebhookLog</span><span class="p">.</span><span class="nf">find_by</span><span class="p">(</span><span class="ss">webhook_id: </span><span class="n">webhook_id</span><span class="p">).</span><span class="nf">update!</span><span class="p">(</span><span class="ss">status: </span><span class="s1">'completed'</span><span class="p">)</span>
    <span class="k">rescue</span> <span class="o">=&gt;</span> <span class="n">e</span>
      <span class="no">WebhookLog</span><span class="p">.</span><span class="nf">find_by</span><span class="p">(</span><span class="ss">webhook_id: </span><span class="n">webhook_id</span><span class="p">).</span><span class="nf">update!</span><span class="p">(</span>
        <span class="ss">status: </span><span class="s1">'failed'</span><span class="p">,</span>
        <span class="ss">error_message: </span><span class="n">e</span><span class="p">.</span><span class="nf">message</span>
      <span class="p">)</span>
      <span class="k">raise</span> <span class="c1"># re-raise for retry logic</span>
    <span class="k">end</span>
  <span class="k">end</span>
<span class="k">end</span>
</code></pre></div></div>

<p>And then we can ask more questions to the <strong>Implementation</strong>:</p>

<ol>
  <li>What if the database is down when the job runs?</li>
  <li>What if we receive malformed webhook data?</li>
  <li>What if the same webhook is sent multiple times?</li>
  <li>What if we need to replay failed webhooks?</li>
</ol>

<p><mark>Each question reveals a potential edge case that could break the feature or making the implementation break out of the scope</mark>, successfully achieving one of those eternal PRs with changes across 40 files.</p>

<p>But these questions are not only to know what we want to build, how, and their edge cases. They can also be used as an aid for our future selves or our peers in the form of code documentation. For example:</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># WebhookProcessingJob</span>
<span class="c1">#</span>
<span class="c1"># Handles webhook processing in the background to avoid blocking the HTTP response.</span>
<span class="c1">#</span>
<span class="c1"># Key decisions made:</span>
<span class="c1"># - Uses unique webhook_id for idempotency (handles duplicate webhooks)</span>
<span class="c1"># - Logs processing status for debugging and monitoring</span>
<span class="c1"># - Retries failed jobs up to 3 times with exponential backoff</span>
<span class="c1"># - Preserves original received_at timestamp for audit purposes</span>
<span class="k">class</span> <span class="nc">WebhookProcessingJob</span> <span class="o">&lt;</span> <span class="no">ApplicationJob</span>
  <span class="c1"># ...</span>
<span class="k">end</span>
</code></pre></div></div>

<p>The best engineers I know have developed a habit of asking questions at every stage and to the stage itself (remember, to whom we are asking):</p>

<ul>
  <li>To <strong>Planning</strong>: What are we actually trying to solve here?</li>
  <li>To <strong>Design</strong>: What could go wrong with this approach?</li>
  <li>To <strong>Implementation</strong>: What assumptions am I making?</li>
  <li>To <strong>Review</strong>: What scenarios haven’t we tested?</li>
  <li>To <strong>Deployment</strong>: What will we do if this breaks?</li>
</ul>

<p>Sometimes the questions reveal uncomfortable truths about our original plan. Maybe the “simple” background job migration actually requires database migrations, monitoring setup, and error handling workflows. Maybe it’s not as straightforward as we thought.</p>

<p>But that’s okay. <mark>It's better to discover complexity early than to be surprised by it in production</mark>.</p>

<p>But there should be a balance here. <mark>Not every question needs to be answered with code</mark>. Some questions are answered with “we’ll handle that when it becomes a problem” or “that’s out of scope for this iteration.”</p>

<p><mark>The key is to ask the questions</mark>, document the decisions, and make trade-offs rather than accidentally ignoring important scenarios.</p>

<h2 id="closing-thoughts">Closing thoughts</h2>

<p>That biology question I asked as a kid wasn’t stupid, it was fundamental. Understanding how blood circulation works is crucial to understanding human life.</p>

<p>Similarly, the questions we ask about our code aren’t stupid, they’re fundamental to building robust systems. The difference between a junior and senior engineer often isn’t technical knowledge, it’s the quality and depth of questions they ask.</p>

<p>So next time you’re implementing a feature, channel your inner curious kid. Ask the obvious questions. Ask the uncomfortable questions. Ask the “what if” questions.</p>

<p>Your future self (and your on-call rotation) will thank you.</p>
]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2025/04/15/the-shore/</id>
      <title type="html">The Shore</title>
      <link href="https://kinduff.com/2025/04/15/the-shore/" rel="alternate" type="text/html" />
      <published>2025-04-15T23:10:00+00:00</published>
      <updated>2025-04-15T23:10:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            A brief reflection on why I write and the intention behind my words.

          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<blockquote>
  <p>I want to feel alive, create waves on the internet’s shore,</p>

  <p>I want to poke the mesh with a needle, let ripples explore,</p>

  <p>I want eternity in this light, my code to emphasize,</p>

  <p>I want to be eternal, but I know I wouldn’t realize.</p>
</blockquote>

<p>I’ve been writing for my past self for most of my life. I’ve written phrases, poems, and essays about what I have felt, experienced, and known. I write to learn, like formatted personal notes, about a topic to make it easier for me to give it structure.</p>

<p>I’ve been writing for my future self too, trying to capture what I’m currently feeling and experiencing so I can reflect in the future and realize that time has passed, that I’ve grown up, and that I have come a long way.</p>

<p>I remember when I was in my twenties, and I found some of my blog posts that I used to have in a blog called Dislexias when I was 13 years old. This was the blog I used to write everything I thought, even my darkest thoughts. When I read it, I was pretty surprised, in my opinion, I felt like I was pretty depressed, but now I felt different when I read it back.</p>

<p>This same feeling has occurred multiple times during my adulthood, since I’ve never stopped writing. I jot down small fragments in my Google Keep, I write in infinite notebooks, and on empty pieces of paper whenever I think of something. I even have multiple Obsidian vaults.</p>

<p>I want to be old and remember that everything I’ve lived has been written. It’s out there for someone else to discover in case they find it and it resonates with their thoughts.</p>

<p>Its the ultimate time travel experience: being able to communicate from the past to the future through echoes of text. Where the person reading can identify and connect with me, even when I’m gone, and simply feel more alive than before.</p>

<p>At least just for a second.</p>
]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2025/03/04/enterprise-software-sales-lessons/</id>
      <title type="html">Enterprise Software Sales Lessons</title>
      <link href="https://kinduff.com/2025/03/04/enterprise-software-sales-lessons/" rel="alternate" type="text/html" />
      <published>2025-03-04T20:40:00+00:00</published>
      <updated>2025-03-04T20:40:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            Some insights from my experience in sales and software development that might help you turn interactions into successful collaborations

          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<p>Throughout my career, I worked alongside a team of highly skilled professionals to build enterprise software from scratch while also handling sales.</p>

<p>This experience refined my abilities in sales, opportunity identification, and software development, providing me with valuable perspectives and lessons learned through both successes and failures.</p>

<p>Here are some of them:</p>

<ul>
  <li>
    <p><strong><mark>A contract can be secured when you address the right points.</mark></strong> By anticipating ideas or projects from casual hallway conversations, or by identifying solvable problems, you can transform routine interactions into meaningful discussions that create genuine interest in collaboration.</p>
  </li>
  <li>
    <p><strong><mark>Secure that follow-up meeting</mark></strong>—exchange business cards, phone numbers, or whatever works. Don’t squander good ideas by discussing them prematurely. Instead, gather contact information and give it a day to settle.</p>
  </li>
  <li>
    <p><strong><mark>People respond better to tangible concepts they can visualize and modify.</mark></strong> Whether it’s a Google Docs document, a few slides with key points, or a conversation script covering essential topics, keep it straightforward and practical. During the conversations, guide it toward your idea and present it as an option, maintaining a human touch rather than a corporate approach.</p>
  </li>
  <li>
    <p><strong><mark>The goal isn't to convince clients about your unique idea,</mark></strong> make an immediate sale, or showcase your intelligence. Rather, through conversation, the idea should evolve into something they will look good with and reflect their values—a weird find. This process might lead to involvement in existing projects or the development of something entirely new.</p>
  </li>
  <li>
    <p><strong><mark>Iteration improves everything.</mark></strong> Review documents, slides, and ideas with the client, enhancing them in subsequent meetings. Two minds think better than one, and if other stakeholders need to be involved, bring them in and align them for productive discussions.</p>
  </li>
  <li>
    <p><strong><mark>The follow up and the delivery is just as important as the initial presentation.</mark></strong> Have a plan to follow up and make the delivery look as a success. They will want to experience the process again if they liked it.</p>
  </li>
</ul>

<p>That’s what I have for now. Hope they are useful to you.</p>

<p><strong>Good luck and have fun!</strong></p>
]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2025/03/04/dont-name-your-projects/</id>
      <title type="html">Don&apos;t name your projects</title>
      <link href="https://kinduff.com/2025/03/04/dont-name-your-projects/" rel="alternate" type="text/html" />
      <published>2025-03-04T04:40:00+00:00</published>
      <updated>2025-03-04T04:40:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            I've switched to using fun, temporary code names for projects instead of domain names

          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<p>Only the <a href="https://en.wikipedia.org/wiki/Flying_Spaghetti_Monster">FSM</a> knows how much money I’ve spent on domain names when I’m excited about an idea.</p>

<p>I must own around 10 domain names that I’ve parked, and every year I receive that pesky email from my registrar urging me to renew. That’s when I consider whether I should renew for another year or just let them go.</p>

<p>It’s always the same story. I come up with an idea that I want to develop. I think of an amazing name, and <strong>oh my goodness, the .com is available!</strong> Maybe I should buy it since I’m going to build it anyway. It’s only $10. Alright, let’s do it. Then it’s time to start the project. I quickly set up the scaffolding, but then I hit a wall. I get distracted. I stop working on it. A year goes by, and I get reminded of it.</p>

<p>I’ve also realized that when I name the project or idea ahead of time, <mark>the idea becomes entangled with the name.</mark> This doesn’t make sense at this stage because <strong>the name should adapt to the idea, not the other way around.</strong></p>

<p>Now, I’ve started using code names for my projects. Instead of jumping the gun, I use a generator until something feels right and fun. Examples include: <strong>European Toad</strong>, <strong>Quick Whale</strong>, <strong>Long Giraffe</strong>.</p>

<p>A couple of months ago, I named a project “Long Giraffe.” Once I was satisfied with the product, I then started to think about its name.</p>

<p>This approach gave me so many ideas for the name since I was finally able to adapt it to the product. I was able to research, play with options, and I even thought of creating a <a href="https://en.wikipedia.org/wiki/Recursive_acronym">Recursive Acronym</a>, which I love. I asked around to see how it sounded.</p>

<p>In the end, I found a name and I am very happy with it. I managed to name the product I created by detaching the name from the idea at the beginning.</p>

<p><strong>Ideas change. They evolve.</strong> Let them do their thing instead of chaining them to something that just sounds right.</p>
]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2024/12/13/my-deleted-review-of-this-restaurant/</id>
      <title type="html">My deleted review of this restaurant</title>
      <link href="https://kinduff.com/2024/12/13/my-deleted-review-of-this-restaurant/" rel="alternate" type="text/html" />
      <published>2024-12-13T21:41:00+00:00</published>
      <updated>2024-12-13T21:41:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            Guess my review didn't pass the community rules of Google Maps

          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<blockquote>
  <p>Translated from Spanish. Original version is below this translation.</p>
</blockquote>

<p>⭐ 1 star</p>

<p>If you’ve had the chance to visit Retiro Park, you’ll know how beautiful the plants are. If you sit on a bench and observe one of them, you would have to wait a long time to see them grow.</p>

<p>That is the experience I’ve had at “A Mano,” where the food takes longer to arrive than watching a plant grow. In fact, the waiter had to come water the decorative pot on our table because the flowers were drying out, despite being plastic.</p>

<p>“A Mano” the food is very good, but surely the person who makes it uses only one hand (one mano), because if they used both, it would surely take less time.</p>

<p>I think they named it “A Mano” because you eat with your hand, and now that we have COVID, they don’t bring you the next dish until you use hand sanitizer. Maybe the food was already made, ready in the kitchen, but it didn’t get to us because of social distancing.</p>

<p>What honestly surprised me was the speed of the bill; when I asked for it, it took less than 15 seconds. According to my calculations and what I ordered, it cost me approximately 1 euro per minute.</p>

<p>In the end, the waiter asks if the wait was worth it. It was worth stretching before sitting for an hour and a half to finish my meal in 5 minutes. Tasty? Yes. Worth the wait? Maybe.</p>

<p>P.S. I wrote this review while waiting.</p>

<hr />

<p>⭐ 1 estrella</p>

<p>Si han tenido oportunidad de visitar el Parque de Retiro, sabrán lo bellas que son las plantas. Si se sientan en una banca, y observan una de ellas, tendrían que esperar mucho para poderlas verlas crecer.</p>

<p>Esa es la experiencia que he tenido en “A Mano”, en donde la comida tarda más en llegar que ver a una planta crecer, es más, el mesero tuvo que venir a regar la maceta decorativa de nuestra mesa, pues se estaban secando las flores, a pesar de ser de plástico.</p>

<p>“A Mano”, muy buena la comida, pero seguro el que la hace utiliza solo una mano, pues si lo hiciera con las dos, seguramente tardarían menos.</p>

<p>Yo creo que le pusieron el nombre “A Mano” porque se come con la mano, y ahora que tenemos el COVID encima, no te traen el siguente plato hasta que utilices alcohol en gel. Quizás la comida ya estaba hecha, lista en la cocina, pero no llegó a nosotros por aquello de la sana distancia.</p>

<p>Lo que me sorprendió honestamente fue la velocidad de la cuenta, pues al pedirla, no tardó ni 15 segundos. Según nuestros cálculos y lo que hemos pedido, nos costó aproximadamente 1 euro el minuto.</p>

<p>En fin, el mesero al final pregunta si valió la pena la espera. Valió la pena estirarme antes de sentarme por hora y media para acabarme la comida en 5 minutos. Rica? Si. Valió la espera? Quizás.</p>

<p>P.D. Está reseña la escribí mientras esperaba.</p>
]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2024/11/19/power-to-the-power-users/</id>
      <title type="html">Power to the power users</title>
      <link href="https://kinduff.com/2024/11/19/power-to-the-power-users/" rel="alternate" type="text/html" />
      <published>2024-11-19T18:38:00+00:00</published>
      <updated>2024-11-19T18:38:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            How the creative uses of data structures by power users are transforming and inspiring new features in my product

          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<p>Things I love to see in my product include how certain users make use of the data structures, forms, tables, etc., to perform actions that aren’t originally possible within the product itself.</p>

<p>For example, imagine I have a data structure for categories, where there is a table of categories and a form to create a new category. These categories can be associated with products, where a product belongs to a category, and a category can have many products. This data structure can also be used for other purposes, such as saving the physical location of a store’s products.</p>

<p>I have multiple users who have used certain features of my product to do something else entirely, with its own layers of complexity.</p>

<p>When this type of innovative use occurs, I usually proceed as follows:</p>

<ol>
  <li><strong>Assess</strong> whether a feature is worth implementing, such as taking the workflow and turning it into a feature with its own menu entry.</li>
  <li><strong>Contact</strong> the user to thank them for their innovation and let them know that I am considering adjustments to accommodate it.</li>
  <li><strong>Acknowledge</strong> myself for <em>“catching the feature”</em> for a sweet dopamine boost.</li>
</ol>

<blockquote>
  <p>“ACA,” ergo “acá,” means “here” in Spanish, and I think that’s beautiful.</p>
</blockquote>

<p>I’ve noticed that when I consider these features:</p>

<ul>
  <li>The rest of my users will benefit from this change or feature. It enables me to provide direct value.</li>
  <li>The user who provided the feedback will feel like a part of the product because they indeed are.</li>
  <li>It reinforces my belief that staying in contact with users is beneficial.</li>
</ul>

<p>Although I don’t have many users right now, I feel like I’m building something alongside them. On the other hand, they understand that I’m building a product for them, but also include them in the process.</p>

<p>This is crucial, as we are often not considered in the products that we use. Even if there is community involvement — a trend I’ve seen many companies adopt — there’s often too much noise to reach clear decisions.</p>

<p>While I’m aware that maintaining direct contact and influence with all clients may become challenging as the product grows, I’m also optimistic that I will find a way to make the user always feel considered and heard.</p>

<h2 id="an-up-to-date-example">An Up-to-Date Example</h2>

<p>I published the link to this post on my <a href="https://bsky.app/profile/did:plc:jmy2qsr3sq3l6m3i4levwxuq/post/3lbdy5lntjc2x">Bluesky account</a> and subsequently discovered another interesting post in my feed.</p>

<p><img src="/assets/images/posts/blueskypoweruser.jpg" alt="A Bluesky post illustrating how to use the report feature to send messages through the application" />
<em><a href="https://bsky.app/profile/deadpoolian.bsky.social/post/3lb65cduwm224">Source at bsky.app</a></em></p>

<p>This Bluesky post walks through a method for implementing bookmarks in Bluesky - a feature that, at the time of writing, is not officially supported.</p>

<p>The account, which acts as a moderator, creates a list for a user based on the reports received. This list compiles the posts that the user has “bookmarked” in one location.</p>

<p>This innovation happened because the fastest way for a user to send a post to another user is, surprisingly, by reporting it to their account, rather than mentioning them in a reply (which can be considered spam) or copying the link and sending it via direct message.</p>

<p>This is a very good example of what to watch for from a power user.</p>
]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2024/01/27/a-unified-front-for-your-team/</id>
      <title type="html">A unified front for your team</title>
      <link href="https://kinduff.com/2024/01/27/a-unified-front-for-your-team/" rel="alternate" type="text/html" />
      <published>2024-01-27T18:38:00+00:00</published>
      <updated>2024-01-27T18:38:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            The impact of a unified team in customer interactions

          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<p>Imagine you’re on the hunt for a new sweater and decide to visit a local clothing store. Upon arrival, you engage with Tom, an enthusiastic new employee who began working there last week. You inquire about the sweater selection, and he’s eager to help, providing prompt responses.</p>

<p>As this unfolds, Clarice, the store owner, approaches. With genuine concern, she inquires if everything is okay. You affirm that it is, expressing interest in a sweater that Tom has recommended.</p>

<p>There’s a subtle change in her attitude as she questions Tom’s recommendation. A mild debate ensues between them, revealing that Tom might lack proper training, but also highlighting Clarice’s own deficiencies in organization and communication skills.</p>

<p>Now, let’s reimagine this scenario. When Clarice joins in and realizes that Tom has provided some incorrect information, she smoothly rectifies the situation with grace. “I apologize for the oversight,” she says. “Tom is one of our newest team members and he’s adapting well. Perhaps this alternative sweater might suit your tastes?”</p>

<p>This approach leaves you with a positive impression—instead of sensing tension, you observe Clarice’s empathetic leadership, keeping the focus squarely on your needs.</p>

<p>When such moments are handled skillfully, it doesn’t go unnoticed. We all recognize when there’s a breakdown in organization and communication.</p>

<p>The same principle applies to meetings with clients or other businesses. Your team should present a unified front. By steering clear of public disputes, condescending corrections, or any semblance of disarray, you ensure that stakeholders concentrate on what truly matters, rather than getting distracted by your team dynamics.</p>
]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2024/01/12/humble-leadership-for-team-success/</id>
      <title type="html">Humble Leadership for Team Success</title>
      <link href="https://kinduff.com/2024/01/12/humble-leadership-for-team-success/" rel="alternate" type="text/html" />
      <published>2024-01-12T11:42:00+00:00</published>
      <updated>2024-01-12T11:42:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            Consequences of ego-driven management and the benefits of adopting a more self-reflective approach
          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<p>Professionals often ascend or get promoted into new roles, from junior positions to intermediate roles, or even into leadership or management positions.</p>

<p>In the past, I’ve been promoted multiple times. Surprisingly, despite being considered a good coder, I always end up in leadership or management positions.</p>

<p>During my early experiences as a manager, I made mistakes and became more cautious. Human nature is fascinating; there is this feeling of repeating past errors or stress that pushed me against things I didn’t like or thought were a waste of time.</p>

<p>I would be dismissive, radical, and even irrational, despite contrary advice. I was convinced I would prove my point sooner rather than later.</p>

<p>I constantly questioned existing processes, meetings, and work methodologies. Over time, I developed my own approach by combining what I learned with industry standards.</p>

<p>Communication is the most important skill in both life and business for success. Clear communication is required to get your point across, regardless of how you view others.</p>

<p>At our job, we are expected to provide proof of our work, as it demonstrates that we are fulfilling the role for which we were hired.</p>

<p>When I tried to lead without previous training and with an inflated ego, I found myself mired in chaos of my own creation. My experience was lacking, my proof of work was not clear, and talking my way out was no longer an option.</p>

<p>Mentorship and feedback can guide you, but ultimately, it’s your own effort that matters. If you find yourself repeatedly resisting feedback, try reflecting on why you directly dismiss it rather than attempting to accept and develop from constructive criticism.</p>

<p>As a manager, your primary proof of work lies in ensuring your team performs effectively. You’re responsible for the team’s well-being, the quality of their work, and how your team is perceived by the rest of the company.</p>

<p>Being able to answer questions about both work scope and team progress is crucial. You cannot act as a boss all the time; you must also be a peer, as your team is your ally and you are part of it.</p>

<p>Both employees and managers have different proofs of work and value, but they both depend on each other to be successful. Clear expectations, timely delegation, involving the team in decision-making, and trusting them are all essential components to being successful.</p>

<p>Constant learning, seeking inspiration from other managers or peers, addressing team concerns, distinguishing between jokes and serious matters, and building trust can go a long way in fostering loyalty. After all, loyalty cannot be assumed simply because someone is being paid.</p>

<p>If this text resonates with you, I advise slowing down, taking a step back, and seeking help, feedback, or advice. Identify your proof of work, align expectations with your manager and team, organize yourself, so that your team too, and last but not least delegate tasks you can’t do and let them go.</p>

<p>Ego-driven management kills teams and even entire companies. Embrace your ignorance, question everything, understand the reasons and results, and ask yourself why things exist as they do. Without processes or meetings, something may be lost—even if it seems insignificant, it can come back to haunt you in the long run.</p>

<p>If you think there’s nothing to improve upon or that you’ve mastered management, my advice remains the same: take a step back and strive for improvement.</p>
]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2023/10/03/the-10-001-magic-number/</id>
      <title type="html">The 10_001 magic number</title>
      <link href="https://kinduff.com/2023/10/03/the-10-001-magic-number/" rel="alternate" type="text/html" />
      <published>2023-10-03T11:43:00+00:00</published>
      <updated>2023-10-03T11:43:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            Unraveling the story behind a magic number in code
          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<p>Read this line of code today:</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">redirect_to</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="ss">alert: </span><span class="s2">"CSV is too big, please use maximum 10_000 lines per import"</span><span class="p">)</span>
<span class="o">&amp;&amp;</span> <span class="k">return</span> <span class="k">if</span> <span class="no">File</span><span class="p">.</span><span class="nf">open</span><span class="p">(</span><span class="n">file</span><span class="p">).</span><span class="nf">readlines</span><span class="p">.</span><span class="nf">size</span> <span class="o">&gt;</span> <span class="mi">10_001</span>
</code></pre></div></div>

<p>I spotted the <code class="language-plaintext highlighter-rouge">10_001</code> magic number and it grabbed my attention. I wondered why this number and not the one stated in the error message. It sure seems like a mistake. If you really want that constraint, then you would use <code class="language-plaintext highlighter-rouge">&gt; 10_000</code>, otherwise the user will be allowed to upload <code class="language-plaintext highlighter-rouge">10_001</code> lines.</p>

<p>Wait a minute! That’s taking the header into consideration. So if the system only allows <code class="language-plaintext highlighter-rouge">10_000</code> rows of data, it should also allow the header.</p>

<p>This is good UX for the user because this magic number should not be taken into consideration. I’m pretty sure there was a conversation about this.</p>

<ul>
  <li><strong>(dev)</strong> Oops, the server crashed.</li>
  <li><strong>(usr)</strong> Hey Dev, the website isn’t working.</li>
  <li><strong>(dev)</strong> Yes, hold on a minute. Were you using the import feature?</li>
  <li><strong>(usr)</strong> Yeah.</li>
  <li><strong>(dev)</strong> Okay. For now, the server cannot tolerate processing more than <code class="language-plaintext highlighter-rouge">10_000</code> records; please split the files.</li>
  <li><strong>(usr)</strong> Hey, there’s an error when I try to upload the file.</li>
  <li><strong>(dev)</strong> (Dev pushes a fix, adding the <code class="language-plaintext highlighter-rouge">10_001</code> magic number). Okay, try now.</li>
  <li><strong>(usr)</strong> It works, thanks!</li>
</ul>

<p>Behind the code, there are conversations. Either direct conversations about modifications that needed to be made and pastafarize the code—since it’s on the edge of the conventions and abstractions—or hidden fixes to provide a better user experience. I think this is one of the latter.</p>

<p>This is why I love reading legacy code (not really, but bear with me) because behind every line of code, there’s an echo of a conversation that happened via chat, video, or in person, and tells a story. The depth behind the simple <code class="language-plaintext highlighter-rouge">10_001</code> magic number.</p>

<p>PS: Please use comments instead of triggering me to write a blog post and daydream about why numbers tell stories.</p>
]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2023/08/14/the-double-it-and-pass-it-on-license/</id>
      <title type="html">The Double It and Pass It On License</title>
      <link href="https://kinduff.com/2023/08/14/the-double-it-and-pass-it-on-license/" rel="alternate" type="text/html" />
      <published>2023-08-14T00:00:00+00:00</published>
      <updated>2023-08-14T00:00:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            The Double It and Pass It On License (DIPOL), Version 1.0
          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>The Double It and Pass It On License (DIPOL), Version 1.0

Copyright (c) [Year] [Full Name]

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

1. Upon distribution or sublicensing of the Software, the recipient must be given the option to either:
  a) Accept the Software as is, OR
  b) Double the number of features the Software has and pass the enhanced version on to another recipient.
2. If the user chooses to double the features and pass it on, they must also provide the new recipients with the same two options detailed above.
3. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
</code></pre></div></div>

<style>
  pre {
    white-space: pre-wrap;
  }
</style>

]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2023/08/02/lonely-nights-are-coding-nights/</id>
      <title type="html">Lonely nights are coding nights</title>
      <link href="https://kinduff.com/2023/08/02/lonely-nights-are-coding-nights/" rel="alternate" type="text/html" />
      <published>2023-08-02T00:00:00+00:00</published>
      <updated>2023-08-02T00:00:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            An ode to lonely nights and coding nights.
          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<p>In that balance where all feels just right, when the PC is kind, and posture’s in sight,</p>

<p>Where keyboard and hand unite with the brain, as eyes meet the screen, thoughts coded as gain.</p>

<p>The mood feels so calm, the chair has your back, weather is gentle, sound settles intact,</p>

<p>With music or stillness, wind’s soft embrace, the mind answers call, ready to race.</p>

<p>Yet soon comes the need - an itch, a request, for food or a break, a message no less,</p>

<p>You fall from the zone, longing to return, to find that sweet balance, once more to discern.</p>
]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2023/07/07/startup-friday/</id>
      <title type="html">Startup Friday</title>
      <link href="https://kinduff.com/2023/07/07/startup-friday/" rel="alternate" type="text/html" />
      <published>2023-07-07T00:00:00+00:00</published>
      <updated>2023-07-07T00:00:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            A couple of years ago, I came up with this concept and have tried to keep it in mind at all times.
          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<p>A couple of years ago, I came up with this concept and have tried to keep it in mind at all times; I’ve introduced it to a few companies I’ve been involved with, and it’s been well-received.</p>

<p>The idea for this practice was born when I developed <a href="/2016/08/14/googleflog-the-parody-that-turned-great">Googleflog</a> on a Friday afternoon. Most of the projects I have under <a href="/projects">projects and experiments</a> have started in a Friday afternoon.</p>

<p>The premise is simple:</p>

<blockquote>
  <p>Use Fridays, either entirely or at least for a good couple of hours, to develop an idea, experiment, or proof of concept on any topic.</p>
</blockquote>

<p>I have been amazed by the results that this practice can yield in various areas, as it fits well with the famous <em>“Don’t push to production on Fridays”</em> rule, and it’s an excellent opportunity to diversify the week’s work.</p>

<p>The idea of creating, innovating, experimenting, or just trying can promote a creative variable in your weekly work or the work your colleagues or employees do. We dedicate little time to creative freedom, and Startup Friday can give you that time you’re looking for.</p>

<p>And you, have you set aside free time to create on a Friday?</p>

<hr />

<p>Originally posted in Spanish: <a href="/2019/11/08/viernes-de-startup/">Viernes de Startup</a>.</p>
]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2023/06/27/the-optics/</id>
      <title type="html">The Optics</title>
      <link href="https://kinduff.com/2023/06/27/the-optics/" rel="alternate" type="text/html" />
      <published>2023-06-27T00:00:00+00:00</published>
      <updated>2023-06-27T00:00:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            The significance of questioning widely-held beliefs and how this can lead to new insights.
          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<p>I don’t remember when I was told this or perhaps stumbled upon it randomly on the internet: glasses are commonly made of plastic, specifically cellulose acetate.</p>

<p>My mind was blown when I first heard about this. I took my glasses off and confirmed that they were not, in fact, made of glass.</p>

<p>I recalled how most optical shops I’ve visited don’t usually mention this unless you ask directly, and they often use other names to refer to the material itself.</p>

<p>It felt like I was experiencing my own Mandela effect. But then I started asking friends and family about it, and their reactions were priceless. Their minds were blown just as mine had been when I first discovered this information. Some of them even began telling others about it.</p>

<p>Why are glasses so expensive if they’re made of plastic? Are optical stores scamming us and using different names just to be able to sell them at a higher price? Is plastic truly better than glass, but the price never dropped due to these tactics?</p>

<p>That’s the thing with information we assume we know – we don’t usually question whether it’s accurate. However, when we do question it, we can uncover new perspectives because, in the end, everything is about optics - pun intended.</p>
]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2023/05/19/reduce-your-stress-use-a-kanban-board/</id>
      <title type="html">Reduce your stress: Use a Kanban Board</title>
      <link href="https://kinduff.com/2023/05/19/reduce-your-stress-use-a-kanban-board/" rel="alternate" type="text/html" />
      <published>2023-05-19T00:00:00+00:00</published>
      <updated>2023-05-19T00:00:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            Here's a trick I've been using for several years to organize my work, and reduce my stress.
          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<p>Congratulations on your new job! However, you may soon realize that there is a lack of organization within the company, which is affecting your performance. Besides addressing the management skills of your team, supervisor, or relevant stakeholders, it’s important to minimize your stress. Here’s a trick I’ve been using for several years and the advice I usually give in such situations.</p>

<blockquote>
  <p><strong>TL;DR</strong>: To improve organization and minimize stress at work, set expectations and provide visibility for yourself and your coworkers by creating a four-column kanban board that reflects the current state of your work.
<a href="https://trello.com/b/GFg20Yai/my-work-board">Use this Trello template to get started</a>.</p>
</blockquote>

<h2 id="table-of-contents">Table of Contents</h2>

<ul id="markdown-toc">
  <li><a href="#table-of-contents" id="markdown-toc-table-of-contents">Table of Contents</a></li>
  <li><a href="#the-questions" id="markdown-toc-the-questions">The Questions</a></li>
  <li><a href="#the-trick" id="markdown-toc-the-trick">The Trick</a></li>
  <li><a href="#the-workflow" id="markdown-toc-the-workflow">The Workflow</a>    <ul>
      <li><a href="#inbox" id="markdown-toc-inbox">Inbox</a></li>
      <li><a href="#backlog" id="markdown-toc-backlog">Backlog</a></li>
      <li><a href="#doing" id="markdown-toc-doing">Doing</a></li>
      <li><a href="#completed" id="markdown-toc-completed">Completed</a></li>
    </ul>
  </li>
  <li><a href="#the-answers" id="markdown-toc-the-answers">The Answers</a></li>
  <li><a href="#conclusion" id="markdown-toc-conclusion">Conclusion</a></li>
</ul>

<h2 id="the-questions">The Questions</h2>

<p>You should be able to answer the following questions at any time:</p>

<ol>
  <li><strong>What are you currently working on?</strong></li>
  <li><strong>What are you going to work on next?</strong></li>
  <li><strong>What is the task, why is it important, who is involved, and when is the deadline?</strong></li>
  <li><strong>What have you delivered so far?</strong></li>
  <li><strong>How often do your tasks undergo change</strong></li>
</ol>

<p>Ideally, you should already know what you’re working on at any given time. However, if not, make sure you have a job! Just kidding. You may already have your own to-do list or a mental list of tasks.</p>

<p>One important lesson I’ve learned is that relying on our memory alone is not enough. Even if we write things down, there are still pitfalls to not organizing in real-time. This is where the workflow I’m about to explain comes in handy.</p>

<h2 id="the-trick">The Trick</h2>

<p>So, what’s the trick? The trick is to set expectations and ensure visibility for yourself and your coworkers. You can do this using a Kanban board.</p>

<blockquote>
  <p>&gt; Me: <strong>Explain like I’m 5: Kanban Board</strong></p>

  <p>&gt; GPT-4: A Kanban board is like a big, visual to-do list. It has different columns that represent different stages of a project or task, like “to-do,” “doing,” and “done.” You write tasks on little cards and move them along the board as you work on them. It helps you keep track of what you need to do, what you’re working on right now, and what you’ve already finished. It’s like a game board for getting stuff done!</p>
</blockquote>

<p>The basic rules of a Kanban board is to try and maintain everything up to date, on their respective columns, and aim for having all the tasks as far as they can get to the right. This movement is important, because that’s what gives us the sense of progress.</p>

<h2 id="the-workflow">The Workflow</h2>

<p>The workflow I recommend is a four-column kanban board that reflects the current state of your work: past, present, and future. Here’s an overview of the columns and their purpose:</p>

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 920.7509023045818 509.9071534677959" width="100%" height="100%" foo="bar">
  <defs>
    <style class="style-fonts">
      @font-face {
      font-family: "Virgil";
      src: url("https://excalidraw.com/Virgil.woff2");
      }
      @font-face {
      font-family: "Cascadia";
      src: url("https://excalidraw.com/Cascadia.woff2");
      }
    </style>
  </defs>
  <g stroke-opacity="0" fill-opacity="0" stroke-linecap="round" transform="translate(10 10) rotate(0 450.3754511522909 244.95357673389796)">
    <path d="M-0.68 0.41 C220.64 -0.9, 440.49 -1.47, 900.13 -0.05 M-0.28 -0.21 C254.02 2.41, 506.97 2.62, 901.06 -0.09 M900.08 -0.05 C901.91 186.1, 902.35 372.97, 899.92 490.67 M900.5 0.02 C900.55 146.04, 900.96 292.75, 901 489.74 M901.43 489.72 C640.13 492.37, 380.29 492.7, -0.46 490.46 M900.44 489.85 C690.72 491.38, 479.76 491.42, -0.11 489.56 M0.08 490.11 C0.75 386.52, 1.47 283.55, -0.56 0.76 M-0.38 490.09 C-0.15 328.03, 0.09 166, -0.32 0.18" stroke="transparent" stroke-width="1" fill="none" />
  </g>
  <g stroke-linecap="round" transform="translate(25.44010905081359 73.15049115947359) rotate(0 102.01582483670632 22.944735689916655)">
    <path d="M0.36 1.2 L202.14 0.44 L205.53 45.66 L0.61 46.9" stroke="none" stroke-width="0" fill="#ffc9c9" />
    <path d="M0.46 0.7 C42.98 -0.39, 84.96 -0.96, 205.65 -0.13 M-0.2 0.37 C74.43 -0.76, 149.99 -0.68, 203.95 0.86 M204.27 -0.83 C204.24 11.97, 202.86 27.1, 203.07 47.87 M204.15 -0.39 C204.18 17.37, 202.95 36.31, 204.74 46.14 M204.39 47.5 C146.07 46.34, 84.44 46.87, 1.78 46.97 M203.6 45.96 C128.83 44.73, 52.52 45.05, 0.35 45.61 M-1.18 46.53 C0 31.24, 1.32 14.87, 1.95 -1.5 M0.67 45.26 C0.56 30.3, -1.24 13.78, -0.15 -0.11" stroke="#1e1e1e" stroke-width="2" fill="none" />
  </g>
  <g transform="translate(101.09760029987365 83.59522684939024) rotate(0 26.358333587646484 12.5)">
    <text x="26.358333587646484" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Inbox</text>
  </g>
  <g stroke-linecap="round" transform="translate(246.44536773284744 73.15049115947359) rotate(0 102.01582483670632 22.944735689916655)">
    <path d="M1.61 0.98 L205.37 -0.96 L205.7 45.97 L1.49 47.29" stroke="none" stroke-width="0" fill="#a5d8ff" />
    <path d="M-0.99 -0.09 C49.32 2.16, 97.17 2.24, 202.75 -0.87 M0.49 0.86 C59.41 0.56, 118.95 0.96, 203.24 0.32 M204.22 0.16 C204.32 14.36, 203.92 33.76, 205.21 45.44 M203.96 0.14 C204.57 12.12, 203.74 22.86, 203.63 45.42 M205.39 45.92 C136.73 48.14, 70.54 48.82, 0.4 45.35 M203.45 45.03 C127.09 46.82, 51.11 47.65, 0.59 45.18 M1.67 44.57 C-1.34 34.95, 1.71 25.1, -0.09 1.51 M-0.01 45.5 C0.4 33.82, -1.11 23.4, 0.7 -0.64" stroke="#000000" stroke-width="2" fill="none" />
  </g>
  <g transform="translate(311.461192569554 83.59522684939024) rotate(0 37 12.5)">
    <text x="37" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Backlog</text>
  </g>
  <g stroke-linecap="round" transform="translate(467.2441691111262 73.15049115947359) rotate(0 102.01582483670632 22.944735689916655)">
    <path d="M0.62 -0.85 L205.73 -0.44 L202.8 47.01 L1.08 46.12" stroke="none" stroke-width="0" fill="#ffec99" />
    <path d="M-0.91 -1.76 C77.67 0.1, 153.87 1.42, 205.06 -1.42 M0.59 -0.07 C45.86 0.44, 91.53 0.88, 204.22 0.3 M203.29 1.43 C202.77 11.09, 203.65 25.84, 203.19 44.12 M204.86 -0.45 C203.57 16.77, 203.58 35.05, 204.58 45.57 M202.61 44.66 C134.66 44.21, 64.64 46.01, 1.59 47.35 M204.92 46.21 C137.42 47.64, 71.56 46.51, -0.08 45.37 M-0.87 46.45 C0.42 27.7, -1.32 12.37, -0.68 -1.51 M0.2 45.03 C-1.07 28.41, -0.5 11.4, 0.1 -0.22" stroke="#000000" stroke-width="2" fill="none" />
  </g>
  <g transform="translate(512.0516618860652 83.59522684939024) rotate(0 57.20833206176758 12.5)">
    <text x="57.20833206176758" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">In Progress</text>
  </g>
  <g stroke-linecap="round" transform="translate(687.9844481247055 73.15049115947359) rotate(0 102.01582483670632 22.944735689916655)">
    <path d="M-0.71 -0.04 L204.5 -1.45 L204.01 47.65 L-1.78 47.21" stroke="none" stroke-width="0" fill="#b2f2bb" />
    <path d="M-1.75 0.23 C48.77 3.07, 94.83 3.25, 205.49 1.78 M0.75 -0.87 C68.56 -1.06, 137.92 -0.33, 203.5 -0.39 M202.82 0.67 C203.47 13.55, 205.84 32, 202.54 46.28 M203.97 0.79 C203.84 9.62, 204.05 19.25, 204.88 45.67 M204.24 44.9 C155.53 45.66, 104.96 45.09, -0.36 46.87 M204.76 46.73 C162.21 47.55, 120.85 46.81, 0.84 45.42 M-0.41 45.72 C0.94 28.39, -0.26 11.42, -1.27 -1.05 M-0.03 46.41 C0.59 30.91, 0.17 15.06, 0.48 -0.36" stroke="#000000" stroke-width="2" fill="none" />
  </g>
  <g transform="translate(741.841940136705 83.59522684939024) rotate(0 48.15833282470703 12.5)">
    <text x="48.15833282470703" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Completed</text>
  </g>
  <g stroke-linecap="round" transform="translate(27.911080586651224 135.51233038426528) rotate(0 99.54485330086914 172.26201564122036)">
    <path d="M1.73 -0.74 L198.12 -0.65 L199.16 344.06 L-0.38 346.16" stroke="none" stroke-width="0" fill="#fff5f5" />
    <path d="M-1.62 1.31 C42.9 -2.8, 86.08 -1.89, 200.91 1.48 M0.48 -0.25 C51.92 -0.73, 105.7 -0.01, 199.94 -0.77 M199.42 -0.23 C198.16 90, 197.77 180.73, 200.18 343.4 M199.53 -0.32 C197.29 78.2, 196.9 154.83, 199.37 344.01 M199.07 345.17 C157.27 345.49, 114.64 345.43, -0.13 342.82 M198.85 345.48 C154.69 344.89, 110.09 344.01, -0.74 344.52 M-0.31 345.38 C-0.33 241.53, 2.11 134.95, -1.31 0.08 M0.11 344.14 C-2.6 209.89, -2.07 74.54, 0.17 0.45" stroke="#1e1e1e" stroke-width="1" fill="none" />
  </g>
  <g stroke-linecap="round" transform="translate(248.91633926868508 135.51233038426528) rotate(0 99.54485330086914 172.26201564122036)">
    <path d="M-1.28 0.33 L200.79 1.88 L197.82 343.21 L-1.17 343.48" stroke="none" stroke-width="0" fill="#e7f5ff" />
    <path d="M-0.94 1.43 C80.12 0.67, 158.37 1.41, 198.88 -0.17 M0.77 0.96 C69.31 -2.85, 139.77 -2.09, 198.49 -0.36 M199.68 1.16 C198.63 118.64, 198.99 237.46, 198.99 345.56 M199.24 0.22 C199.64 123.09, 199.76 244.6, 198.85 344.89 M198.25 344.38 C155.28 344.73, 111.02 343.8, 0.02 342.63 M198.5 343.69 C135.77 344.36, 72.07 344.01, 0.85 345.15 M-0.07 344.2 C0.76 212.14, 1.02 77.37, -1.06 1.06 M-0.15 344.34 C0.62 246.76, 0.02 147.44, 0.23 0.33" stroke="#000000" stroke-width="1" fill="none" />
  </g>
  <g stroke-linecap="round" transform="translate(469.71514064696385 135.51233038426528) rotate(0 99.54485330086914 172.26201564122036)">
    <path d="M0.07 -0.05 L197.46 1.95 L198.24 345.2 L1.7 345.19" stroke="none" stroke-width="0" fill="#fff9db" />
    <path d="M-1.19 -1.61 C74.27 -1.98, 145.16 -1.54, 198.63 -0.55 M-0.57 0.34 C73.81 -0.18, 146.79 1.31, 200.03 -0.64 M200.28 0.77 C198.5 81.44, 196.93 160.95, 199.15 344.56 M199.54 0.04 C201.29 118.02, 201.55 236.84, 199.4 344.33 M199.24 343.54 C150.57 345.38, 103.73 346.21, -1.81 344.51 M199.78 343.87 C143.37 346.41, 88.22 345.56, -0.78 344.96 M0.92 344.15 C-1.29 253.72, -0.37 164.38, 0.91 -0.46 M-0.36 344.39 C-0.84 224.54, -0.54 104.68, 0.5 0.51" stroke="#000000" stroke-width="1" fill="none" />
  </g>
  <g stroke-linecap="round" transform="translate(690.4554196605432 135.51233038426525) rotate(0 99.54485330086914 172.26201564122033)">
    <path d="M-1.63 1.95 L198.24 0.68 L200.79 345.19 L0.96 345.24" stroke="none" stroke-width="0" fill="#ebfbee" />
    <path d="M1.61 -0.29 C76.44 1.75, 152.73 1.06, 200.45 1.79 M0.5 -0.64 C55.31 0.16, 111.23 -1.32, 198.43 -0.58 M199.82 0.79 C200.31 84.95, 201.2 170.62, 199.66 345.69 M199.28 -0.24 C201.08 136.57, 200.94 272.32, 198.72 344.66 M199.19 345.07 C138.15 344.92, 71.61 343.53, -0.43 344.53 M198.79 345.02 C125.48 342.87, 51.17 343.65, -0.38 344.56 M-1.2 344.12 C-1.87 267.48, -0.68 188.67, 0.62 0.57 M0.14 344.16 C1.68 240.55, 1.74 138.29, 0.02 -0.02" stroke="#000000" stroke-width="1" fill="none" />
  </g>
  <g stroke-linecap="round" transform="translate(40.265387124965855 214.6172399176658) rotate(0 87 24.999999999999993)">
    <path d="M1.95 1.42 L175.19 1.9 L174.5 51.62 L-1.94 49.79" stroke="none" stroke-width="0" fill="#ffffff" />
    <path d="M1.37 -0.34 C38.04 -1.02, 74.77 -0.27, 174.25 0.99 M-0.6 -0.38 C56.02 1.89, 110.66 0.29, 173.5 0.32 M175.46 -1.33 C175.01 17.31, 174.93 37.8, 175.54 48.71 M174.77 0.31 C174.35 18.54, 174.17 35.74, 173.54 49.68 M174.19 49.51 C114.83 49.21, 54.36 52.85, 1.25 50.15 M173.34 49.35 C106.62 49.79, 38.67 50.6, 0.64 50.5 M-0.87 51.92 C-0.24 33.8, 2.31 17.18, 1.36 -0.96 M-0.77 49.14 C0.08 37.1, 0.65 25.24, -0.43 -0.26" stroke="#000000" stroke-width="1" fill="none" />
  </g>
  <g transform="translate(45.265387124965855 219.6172399176658) rotate(0 64.4749984741211 20)">
    <text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Videos for next </text>
    <text x="0" y="20" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">event</text>
  </g>
  <g stroke-linecap="round" transform="translate(40.265387124965855 282.0393256939407) rotate(0 87 25)">
    <path d="M1.05 1.58 L175.89 0.91 L172.2 48.85 L-1.88 49.38" stroke="none" stroke-width="0" fill="#ffffff" />
    <path d="M1.19 1.9 C48.24 0.38, 93.54 -1.44, 175.47 1.31 M0.42 0.13 C40.62 -0.54, 79.75 0.03, 173.44 0.06 M174.78 -1.39 C172.11 18.59, 173.47 37.02, 175.68 48.38 M173.44 0.19 C174.63 17.45, 173.89 35.28, 173.38 49.57 M173.87 48.19 C118.45 46.92, 61.69 48.93, -0.34 50.08 M173.15 50.78 C106.81 52.65, 38.22 51.36, -0.5 50.08 M0.44 50.81 C0.01 30.91, 0.87 14.76, -2 0.49 M-0.32 49.32 C0.36 31.44, -0.68 11.7, 0.21 0.96" stroke="#000000" stroke-width="1" fill="none" />
  </g>
  <g transform="translate(45.265387124965855 287.0393256939407) rotate(0 64.54166412353516 10)">
    <text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Summer campaign</text>
  </g>
  <g stroke-linecap="round" transform="translate(40.265387124965855 150.8062274736858) rotate(0 87 25)">
    <path d="M0.24 -0.52 L172.18 -1.12 L175.82 49.53 L1.75 49.86" stroke="none" stroke-width="0" fill="#ffffff" />
    <path d="M0.2 -1.36 C46.7 0.27, 91.71 -0.25, 175.61 1.07 M-0.13 -0.94 C45.52 -2.21, 92.97 -1.76, 174.61 0.37 M172.4 -0.62 C174.02 12, 175.21 19.27, 175.51 51.82 M173.83 0.74 C174.6 14.93, 174.84 28.73, 174.31 49.48 M174.82 49.15 C111.55 48.97, 54.5 49.56, -1.03 50.05 M174.6 49.76 C136.91 51.41, 98.7 50.2, 0.56 49.05 M1.76 48.06 C-2.01 35.09, -0.37 25.28, -0.03 -1.4 M-0.91 50.13 C0.81 36.15, -0.22 23.18, -0.65 -0.67" stroke="#000000" stroke-width="1" fill="none" />
  </g>
  <g transform="translate(45.265387124965855 155.8062274736858) rotate(0 80.86666870117188 10)">
    <text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Photo-shoot retouch</text>
  </g>
  <g stroke-linecap="round" transform="translate(261.461192569554 150.8062274736858) rotate(0 87 25)">
    <path d="M-1.28 1.04 L175.28 -1.84 L173.75 49.33 L-0.11 49.98" stroke="none" stroke-width="0" fill="#ffffff" />
    <path d="M-0.23 1.92 C53.89 1.02, 110.22 3.18, 175.31 1.32 M0.19 -0.02 C53.74 -1.37, 108.27 -0.5, 173.83 0.64 M173.24 1.08 C173.81 17.58, 173.97 34.72, 174.28 49.99 M174.1 0.31 C174.18 17.04, 174.88 31.83, 173.46 50.91 M173.48 48.04 C137.36 48.58, 104.46 50.55, -0.56 51.74 M174.64 50.03 C111.52 50.25, 48.73 48.9, -0.93 50.13 M0.28 48.84 C0.56 41.14, -0.17 28.44, -1.35 1 M0.36 50.27 C-0.75 32.09, -0.4 15.15, -0.89 -0.18" stroke="#000000" stroke-width="1" fill="none" />
  </g>
  <g transform="translate(266.461192569554 155.8062274736858) rotate(0 72.76667022705078 10)">
    <text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Intro for YouTube</text>
  </g>
  <g stroke-linecap="round" transform="translate(261.461192569554 214.6172399176658) rotate(0 87 24.999999999999993)">
    <path d="M1.21 1.9 L175.56 -0.95 L174.1 51.81 L-1.93 48.78" stroke="none" stroke-width="0" fill="#ffffff" />
    <path d="M-0.85 0.62 C41.77 -0.62, 85.3 -0.66, 172.01 1.39 M-0.42 0.06 C67.76 -0.67, 133.36 -0.17, 173.13 0.02 M173.97 1.89 C174.49 18.67, 175.51 34.59, 174.76 48.82 M174.61 0.85 C173.35 9.42, 174.49 20.28, 173.26 49.29 M173.99 49.33 C108.43 49.63, 42.3 53.07, -0.98 49.95 M174.86 50.74 C122.78 47.68, 71.1 47.62, -0.28 50.91 M-1.43 51.54 C-1.02 37.07, -0.46 22.32, 1.46 0.5 M-0.2 49.92 C1.25 34.42, -0.25 18.9, -0.77 0.08" stroke="#000000" stroke-width="1" fill="none" />
  </g>
  <g transform="translate(266.461192569554 219.6172399176658) rotate(0 64.44166564941406 20)">
    <text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Replace Trailer </text>
    <text x="0" y="20" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">audios</text>
  </g>
  <g stroke-linecap="round" transform="translate(481.68989666851803 150.8062274736858) rotate(0 87 25)">
    <path d="M1.48 0.59 L175.5 0.84 L173.11 50.77 L1.87 48.36" stroke="none" stroke-width="0" fill="#ffffff" />
    <path d="M-1.39 -0.48 C60.93 -2.88, 123.09 -2.98, 172.95 -1 M-0.48 -0.81 C57.17 -0.97, 116.31 -0.66, 173.5 -0.55 M172.26 0.28 C175.64 19.09, 172.84 37.14, 174.69 51.51 M174.6 0.1 C174.5 11.17, 173.87 21.28, 174.3 50.58 M175.8 49.17 C127.26 50.24, 78.2 50.19, -1.92 51.29 M174.27 49.59 C115.96 48.94, 57.99 48.33, -0.73 50.28 M-1 50.43 C0.02 33.11, 1.28 17.32, 0.25 1.74 M-0.93 49.74 C-0.68 30.64, 0.62 12.03, -0.17 -0.07" stroke="#000000" stroke-width="1" fill="none" />
  </g>
  <g transform="translate(486.68989666851803 155.8062274736858) rotate(0 72.73332977294922 10)">
    <text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Intro for Podcast</text>
  </g>
  <g stroke-linecap="round" transform="translate(704.6561429907779 147.1951541413909) rotate(0 87 25)">
    <path d="M-0.73 -0.58 L174.73 -0.04 L173.23 48.48 L0.46 49.82" stroke="none" stroke-width="0" fill="#ffffff" />
    <path d="M-0.7 -0.14 C57.04 -2.22, 116.55 -1.48, 173.14 -0.82 M0.62 0.91 C66.17 -1.75, 131.46 -0.73, 173.94 -0.35 M174.44 -1.25 C175.69 13.3, 172.64 25.93, 175.28 48.97 M173.8 0.47 C173.66 17.03, 174.12 36.8, 173.53 50 M173.86 49.92 C123.7 47.92, 70.99 50.37, 0.5 51.49 M174.27 49.36 C129.39 49.22, 82.46 49.74, 0.67 50.56 M-1.43 50.25 C1.15 34.55, -1.43 18.52, 0.51 -0.6 M0.82 49.96 C0.78 37.38, 0.78 24.37, -0.28 -0.6" stroke="#000000" stroke-width="1" fill="none" />
  </g>
  <g transform="translate(709.6561429907779 152.1951541413909) rotate(0 55.983333587646484 10)">
    <text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Trailer edition</text>
  </g>
  <g stroke-linecap="round" transform="translate(704.6561429907779 214.6172399176658) rotate(0 87 24.999999999999993)">
    <path d="M-0.71 0.17 L173.65 0.12 L174.07 50.85 L0.12 48.78" stroke="none" stroke-width="0" fill="#ffffff" />
    <path d="M1.21 -0.29 C42.29 0.48, 84.34 0.38, 174.99 1.11 M-0.86 0.72 C37.13 2.3, 73.69 1.45, 173.42 0.93 M175.43 -1.03 C173.77 11.92, 174.19 25.97, 174.25 49.57 M173.08 -0.86 C174.38 18.54, 173.69 37.23, 174.66 50.17 M174.02 49.21 C119.8 50.96, 64.05 48.03, -0.73 50.04 M173.29 50.48 C128.18 50.07, 82 50.91, 0.16 50.37 M-0.63 49.6 C0.72 38.16, -0.57 30.2, -1.97 0.6 M-0.34 50.68 C0.56 38.1, 0.46 26.75, 0.93 0.63" stroke="#000000" stroke-width="1" fill="none" />
  </g>
  <g transform="translate(709.6561429907779 219.6172399176658) rotate(0 74.7249984741211 10)">
    <text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Audio normalization</text>
  </g>
  <g stroke-linecap="round" transform="translate(704.6561429907779 282.0393256939408) rotate(0 87 25)">
    <path d="M1 1.47 L172.58 -0.04 L175.67 50.16 L-0.29 50.91" stroke="none" stroke-width="0" fill="#ffffff" />
    <path d="M0.46 -1.02 C54.96 1.03, 111.29 -0.87, 173.51 1.09 M0.32 0.8 C53.14 1.71, 104.6 0.99, 174.31 0.56 M175.61 -1.21 C171.74 16.38, 175.14 28.75, 173.79 48.1 M173.74 -0.74 C173.85 9.54, 173.99 20.92, 173.88 50.17 M175.06 50.1 C136.71 49.72, 93.69 51.74, 0.84 48.15 M174.21 50.49 C110.16 51.84, 48.3 51.13, -0.95 50.76 M0.62 51.75 C0.6 32.35, -0.29 17.99, -1.34 0.34 M-0.75 50.76 C-0.17 35.5, -0.12 21.14, -0.85 0.05" stroke="#000000" stroke-width="1" fill="none" />
  </g>
  <g transform="translate(709.6561429907779 287.0393256939408) rotate(0 60.29999923706055 10)">
    <text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="16px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Re-render video</text>
  </g>
  <g stroke-linecap="round">
    <g transform="translate(26.81190090566224 36.52274389372295) rotate(0 433.00614651057185 1.1494826798592968)">
      <path d="M-0.5 -0.2 C327.53 3.14, 654.53 3.31, 866.12 0.67 M0.26 0.38 C257.12 1.11, 513.7 1.24, 866.52 0.33" stroke="#1e1e1e" stroke-width="2" fill="none" />
    </g>
    <g transform="translate(26.81190090566224 36.52274389372295) rotate(0 433.00614651057185 1.1494826798592968)">
      <path d="M837.09 10.15 C849.96 8.42, 860.35 4.94, 865.43 2 M838.98 11.6 C847.61 6.91, 855.53 4.19, 866.42 1.14" stroke="#1e1e1e" stroke-width="2" fill="none" />
    </g>
    <g transform="translate(26.81190090566224 36.52274389372295) rotate(0 433.00614651057185 1.1494826798592968)">
      <path d="M837.05 -10.37 C850.09 -4.36, 860.5 -0.09, 865.43 2 M838.94 -8.92 C847.58 -7.53, 855.51 -4.17, 866.42 1.14" stroke="#1e1e1e" stroke-width="2" fill="none" />
    </g>
  </g>
</svg>

<h3 id="inbox">Inbox</h3>

<p>This column is where new tasks and projects arrive. Tasks in the inbox should be added by a third party or by yourself. Each card should include all relevant information, such as who is involved, what the task is, why it’s important, how it should be done, and any deadlines.</p>

<p>I recommend using a template to ensure standardized tasks and quick task creation. Be concise in each section and leave space for deliverables.</p>

<p>For example:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Intro for Podcast

Who: Hannah from Marketing
What: Create a New Intro for a Podcast
Why: Refresh the podcast branding.
How:
1. Brainstorm and research different podcast intros.
2. Develop a script or outline for the new intro.
3. Consider incorporating music, sound effects, or a brief teaser.
4. Record and edit the audio for the new intro.
5. Review and revise as necessary to ensure it aligns with the podcast.
When: Deadline - Complete the new podcast intro by May 31st, 2023.
</code></pre></div></div>

<p>Every other day or week, you and your lead (or team) should review the inbox column to acknowledge and prioritize tasks.</p>

<h3 id="backlog">Backlog</h3>

<p>The backlog column should only contain prioritized tasks. Its purpose is to provide visibility among other tasks in case there is overlap in priority or deadlines. The order of tasks matters because you will grab new tasks from the top.</p>

<p>Whenever someone wants to prioritize their tasks over others, it’s important to be aware of which tasks are being deprioritized. It can also help you or your lead recognize if additional coworkers are needed.</p>

<h3 id="doing">Doing</h3>

<p>This column indicates what you are currently working on. It is useful for self-control or for those who are interested in knowing what you’re working on. It also serves as a timestamp to track the time invested in each task and when you started or finished it.</p>

<h3 id="completed">Completed</h3>

<p>The completed column is where you list your deliverables and achievements. Attach all the deliverables to the corresponding card to easily recall or share them if needed.</p>

<h2 id="the-answers">The Answers</h2>

<p>Now that you have a kanban board, you can organize yourself, provide visibility, prioritize your backlog, log new tasks, and even track metrics for your deliveries.</p>

<p>Now let’s see how the kanban board and its columns align with the questions you need to answer:</p>

<ol>
  <li>
    <p><strong>What are you currently working on?</strong> The “Doing” column on the kanban board answers this question. It clearly indicates the tasks you are currently working on.</p>
  </li>
  <li>
    <p><strong>What are you going to work on next?</strong> The “Backlog” column addresses this question. It contains tasks that have been prioritized but not yet started.</p>
  </li>
  <li>
    <p><strong>What is the task, why is it important, who is involved, and when is the deadline?</strong> The columns provides the answers to these questions. Each task card includes relevant information such as task description, importance, stakeholders, and deadlines.</p>
  </li>
  <li>
    <p><strong>What have you delivered so far?</strong> The “Completed” column reflects the tasks you have already completed. Each card in this column represents a deliverable or achievement.</p>
  </li>
  <li>
    <p><strong>How often do your tasks undergo changes?</strong> The kanban board’s adaptability addresses this question. As tasks evolve or undergo changes, you can easily update or create new cards within the respective columns. You can also use comments, and checklists for this.</p>
  </li>
</ol>

<p>Make sure to share the board with your team, lead, or other stakeholders. This is essential for fostering collaboration and transparency, which are our main goals. Grant your team read and write access so they can contribute by adding comments, tasks, and offering help when needed.</p>

<p><a href="https://trello.com/b/GFg20Yai/my-work-board">Use this Trello template to get started</a>.
  </p>
<h2 id="conclusion">Conclusion</h2>

<p>So, there you have it - the secret to minimizing stress at work is to create a
four-column kanban board. Who knew that all this time, the key to productivity
was just a fancy version of a to-do list? Now, go forth and organize! And remember, if all else fails, just blame the lack of organization on your cat. They’re always causing chaos, anyway.</p>

<hr />

<p>Thanks to Beatriz Ruette for proof-reading this article.</p>
]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2023/05/04/the-mashup/</id>
      <title type="html">The Mashup</title>
      <link href="https://kinduff.com/2023/05/04/the-mashup/" rel="alternate" type="text/html" />
      <published>2023-05-04T00:00:00+00:00</published>
      <updated>2023-05-04T00:00:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            Life has a way of introducing us to new things, related or not to our professional life.
          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<p>I was in my mid-twenties coming back from the park with my skateboard between my legs. I jumped on the bus and stood near the exit door. I saw this guy with his skateboard too, wearing an <a href="https://en.wikipedia.org/wiki/A_Tribe_Called_Quest">A Tribe Called Quest</a> t-shirt, which is one of my favorite rap groups.</p>

<p>I asked him where he was coming from, since I barely knew Buenos Aires, to find a new cool spot to skate. I complimented his t-shirt and he told me about <a href="https://en.wikipedia.org/wiki/The_Pharcyde">The Pharcyde</a> and the mashup <a href="https://en.wikipedia.org/wiki/Amerigo_Gazaway">Amerigo Gazaway</a> made with A Tribe Called Quest.</p>

<p>That mashup album has to be one of my favorites ever. Amerigo did a great job of extracting the essence of these two groups and mashing them up in a new way, with a new style. The rest of his work speaks for itself; it’s pure gold.</p>

<p>Life has a way of introducing us to new things, related or not to our professional life. Everything that contributes to our personal growth has the potential to make an impact either way.</p>

<p>Let’s have a conversation with people around us. Don’t be afraid to ask or share. The value and diversity we can perceive through human interactions are incomparable to anything else.</p>
]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2023/03/02/the-cotorreo/</id>
      <title type="html">The Cotorreo</title>
      <link href="https://kinduff.com/2023/03/02/the-cotorreo/" rel="alternate" type="text/html" />
      <published>2023-03-02T00:00:00+00:00</published>
      <updated>2023-03-02T00:00:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            Here's a simple idea for remote teams feeling disconnected. A great way to start the day on a positive note.
          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<blockquote>
  <p>Cotorreo (<em>koh-toh-reh-oh</em>): Mexican Spanish, colloquial term that refers to a lively and playful conversation among friends.</p>
</blockquote>

<p>When I worked for a fully-remote company with a single team responsible for the e-commerce funnel, we anticipated that growing this same team would be challenging in terms of communication and processes. To address this, we decided to split the team into three groups, with some of the seniors becoming leads and continuing their work with new or existing team members.</p>

<p>One thing that concerned me when planning this change was the lack of communication between the new teams. Previously, we used the first 5 minutes of our daily stand-up to chat, tell jokes, share news, and catch up.</p>

<p>With the split, each team would have its own stand-up, and the 5 minutes for casual conversation would be lost. That’s when we came up with “The Cotorreo” - a 30-minute optional meeting at the beginning of the day, before the stand-ups, where everyone could just talk. We could chat about our weekends, watch funny videos or memes, or gossip a little. Talking about work was discouraged.</p>

<p>Thirty minutes may sound like a lot, but keep in mind that we were 100% remote, so we didn’t have coffee breaks, hallway chats, or bathroom fist bumps (just kidding). These 30 minutes were valuable for everyone. Sometimes we experienced awkward silences, or only a couple of teammates joined the call instead of the usual 15-20 members. But overall, it was a positive experience.</p>

<p>I can’t stress enough how beneficial “The Cotorreo” was for us. If you have a remote team, I highly recommend giving it a try. It brings the team together and makes the start of the day more enjoyable than just spending time on boring meetings or other work.</p>
]]>
      </content>
    </entry>
  
    <entry>
      <id>https://kinduff.com/2023/03/01/i-burnt-a-cake-when-i-was-12/</id>
      <title type="html">I burnt a cake when I was 12</title>
      <link href="https://kinduff.com/2023/03/01/i-burnt-a-cake-when-i-was-12/" rel="alternate" type="text/html" />
      <published>2023-03-01T00:00:00+00:00</published>
      <updated>2023-03-01T00:00:00+00:00</updated>

      
      <summary type="html">
        <![CDATA[
          
            Discover why rushing may not always be the best approach to achieving the best result.
          
        ]]>
      </summary>
      

      <content type="html">
        <![CDATA[<p>When I was 12, I loved to cook with my mother. She had this awesome skill that took me a while to understand (around 15 years) and develop myself. It looked like improvisation around the kitchen, but at the same time, she was following a set of instructions.</p>

<p>One day, I wanted to bake a cake. It was one of those cakes that look so good in the box, and you only need to add water, oil, and an egg, and put it in the oven. I had seen my mother and sister do it a million times. How hard could it be?</p>

<p>I found myself with a mix of powder, trying to figure out how to turn on the oven. My mother, who was keeping an eye on me, saw me struggling and came to help.</p>

<p>“Do you want to turn on the oven?” she asked.</p>

<p>“I do. Can you turn it on to 120°C? That’s what the instructions say,” I said with confidence.</p>

<p>She went ahead and turned it on. This kind of oven had to be lit with a match in order to start the gas. It still scares me to turn on these kinds of ovens today.</p>

<p>We put the mix inside the oven, and it was ready to go. Now we just had to wait for around 30 minutes or until it was done.</p>

<p>When my mother went out of the kitchen, I had a brilliant idea: if the mix would cook in 30 minutes at 120°C, it would cook in 15 minutes at 240°C. Of course, the cake burnt, and my mother gave me a talk about how cooking doesn’t work that way, that it takes time.</p>

<p>This memory got me thinking recently. Sometimes we’re in such a rush that we think productivity and coding faster will give us better results. I’m talking about tools, processes, and the way we think about problems.</p>

<p>Is going fast always better? Is rushing the way to write better software and lead a company? Or should we slow down, give it time, and have a well-cooked cake instead?</p>
]]>
      </content>
    </entry>
  
</feed>