<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[fieg.dev]]></title><description><![CDATA[Thoughts, stories and ideas.]]></description><link>https://fieg.dev/</link><image><url>https://fieg.dev/favicon.png</url><title>fieg.dev</title><link>https://fieg.dev/</link></image><generator>Ghost 4.48</generator><lastBuildDate>Sun, 01 Jun 2025 10:16:13 GMT</lastBuildDate><atom:link href="https://fieg.dev/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[The Power of Note Taking]]></title><description><![CDATA[Do you take notes? Do you read a lot of articles, watch talks or listen to podcasts on a daily basis? Do you forget most of it after a few days or weeks? Well so did I until I started taking notes and created my personal knowledge system or so called second brain.]]></description><link>https://fieg.dev/the-power-of-note-taking/</link><guid isPermaLink="false">61dc56402b24e60001122e53</guid><dc:creator><![CDATA[Jeroen Fiege]]></dc:creator><pubDate>Thu, 21 May 2020 09:57:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1565449446922-702749bcaf1b?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1565449446922-702749bcaf1b?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" alt="The Power of Note Taking"><p>I think it started with the article <a href="https://fortelabs.co/blog/how-to-take-smart-notes/">How to take Smart Notes</a> by Tiago Forte a few months back. It&apos;s quite a long read and among other things, it taught me about the 20th-century German sociologist Niklas Luhmann and his knowledge system called &#x201C;Zettelkasten&#x201D;.</p><p>Learnings from the article reinforced an idea I already had growing on myself. I felt that a lot of knowledge from reading articles or watching talks was lost. Given the time investment it takes to consume all this content, only to forget about it a few days later, was a terrible ROI. I had to do something about this. I thought about summarizing articles but didn&#x2019;t really know where to start, until now.</p><p>So I started writing summaries of articles I read. Around the same time, I heard about a new note-taking app called <a href="https://roamresearch.com/">Roam</a>. Roam has the ability to link notes together and form a knowledge graph, similar to that of a Zettelkasten.</p><p>Fast forward to earlier this week. I was watching a talk about <a href="https://youtu.be/otbnC2zE2rw">bootstrapping a SaaS</a> and something special happened. I noticed that I was watching it differently from before: I was keeping a mental list of items that I thought were important enough to summarize later on. Then it hit me:</p><p><strong>When you start taking notes and make it into a habit, you will read/watch differently. You will constantly be thinking about how to summarize it while reading an article or listening to a talk.</strong></p><p>This has some great benefits. Making mental lists boosts your ability to remember it later, but it also helps you to connect different concepts together. The latter is a vital part of learning. So instead of just consuming the content, you&apos;ll start to actually learn something new.</p><p>These days I take notes on about anything. Articles, talks, meetings, etc. I also link these notes together based on related concepts. Roam is a big help here, as it can suggest related notes. Working with your notes on a daily bases also acts as a form of spaced repetition, reinforcing the knowledge in your memory.</p><p>I found that the more notes I take and connect to each other, the more powerful it becomes.</p><p>Do you have any feedback? Feel free to send me a <a href="https://twitter.com/fieg/status/1263826199043870720">tweet</a>.</p>]]></content:encoded></item><item><title><![CDATA[Measuring performance of self-organizing product teams]]></title><description><![CDATA[<p>At my workplace we have different product teams. From management there was a clear wish to make team performance visible during Sprint Reviews. The natural response was to present Scrum related metrics, like velocity (story points committed vs delivered).</p><p>These general Scrum metrics feel a bit off to me. Take</p>]]></description><link>https://fieg.dev/measuring-performance-of-self-organizing-product-teams/</link><guid isPermaLink="false">61dc56402b24e60001122e52</guid><dc:creator><![CDATA[Jeroen Fiege]]></dc:creator><pubDate>Sat, 04 Apr 2020 12:15:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1543286386-713bdd548da4?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1543286386-713bdd548da4?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Measuring performance of self-organizing product teams"><p>At my workplace we have different product teams. From management there was a clear wish to make team performance visible during Sprint Reviews. The natural response was to present Scrum related metrics, like velocity (story points committed vs delivered).</p><p>These general Scrum metrics feel a bit off to me. Take velocity for example. What does this tell us? Say that we have a product which receives 10 new bug reports every week and every sprint we fix these bugs. Our velocity would be pretty good. But does this mean our team and product are doing good?</p><p>Let&apos;s take another example. John Cuttlefish recently published an excellent post about <a href="https://cutle.fish/blog/12-signs-youre-working-in-a-feature-factory">signs of working in a Feature Factory</a>. Say our team is only focused on shipping new features, but neglects attention for technical debt. The velocity metric would still indicate everything is fine, as story points are being delivered. But if we keep accumulating more and more technical debt, is our team really performing well?</p><p>If velocity doesn&apos;t actually tell us how we are performing? What does it tell us? The one thing I can think of is that it tells us that the team is busy. And being busy by itself doesn&apos;t say anything. We want to know if we are actually performing and bring value. So this brings us to our main question.</p><h3 id="what-are-good-measurements-of-team-and-product-performance">What are good measurements of team and product performance?</h3><p><br>We can do a bit of reverse engineering to come to these measurements. Let&apos;s start with our main goal. We want to build a product, which solves the problem(s) of our customer in an efficient way, resulting in happy end-users.</p><p>So what makes customers (un)happy?</p><ul><li>When a product is unavailable, users won&apos;t be happy. So a high uptime would make them, or at least keep them, happy.</li><li>When things don&apos;t work as expected, users won&apos;t be happy. So a low bug report count indicates that things work as expected.</li><li>When a bug is reported, users will be happy if it&apos;s quickly fixed. So time from initial bug report to fix in production should be as low as possible.</li><li>Getting exceptions is quite frustrating for users. So also the number of exceptions should be as low as possible.</li><li>When the application feels slow, users will be unhappy. So response times of web requests should be as low as possible.</li></ul><p>We could also just ask our end-users what they think of the product. One way would be to send a survey every once in a while to rate (1 to 10) certain aspects of our application. Similar to a NPS survey. We can think of questions like:</p><ul><li>How do you rate your productivity within the product?</li><li>How do you rate the usefulness of our product?</li><li>How do you rate our customer support?</li></ul><p>By tracking the average of these scores over time and plotting them on a graph, we can easily see if we improve as a team or not.</p><h3 id="technical-indicators">Technical indicators</h3><p>Considering we are talking about tech teams we can also ask ourselves what technical indicators tell us how we perform?</p><ul><li>Tests prevent regression, so test coverage should be sufficient</li><li>Slow tests are killing productivity, so time to run all tests suites should be kept within an acceptable range</li><li>Same goes for waiting on peer reviews, so we could measure the average time between opening a PR and when it&apos;s merged.</li><li>Or what about measuring deployment duration? The same as with tests, we want to keep waiting times for developers as low as possible.</li></ul><p>And finally, just like asking our end-users, we can also survey our team and ask them to rate various aspects.</p><ul><li>How do you rate your productivity?</li><li>How do you rate the productivity of your team?</li><li>How do you rate your morale?</li><li>How do you rate the morale of your team?</li></ul><h3 id="conclusion">Conclusion</h3><p>In this post we explored various ways to measure the performance of product teams. I hope this challenges you and your team to think further than just the standard scrum metrics. Collecting the right metrics gives you valuable insight in your teams performance and triggers healthy discussions on how and where to improve.</p><p>Do you have any thoughts on this subject? Feel free to <a href="https://twitter.com/fieg/status/1247598120642531334">reply on this tweet</a>.</p><p><em>Big thanks to Sander Lissenburg and Ferenc Szeli for proof reading this article.</em></p>]]></content:encoded></item><item><title><![CDATA[Improve Docker performance on macOS with Docker Machine]]></title><description><![CDATA[<p>Recently I spoke a few fellow developers and they were unhappy with the performance of Docker on macOS. Personally I couldn&apos;t really relate to these performance issues. So what was going on? Well it wasn&apos;t hard to find the difference: They were using Docker for Mac,</p>]]></description><link>https://fieg.dev/improve-docker-performance-macos-docker-machine/</link><guid isPermaLink="false">61dc56402b24e60001122e51</guid><dc:creator><![CDATA[Jeroen Fiege]]></dc:creator><pubDate>Sat, 08 Feb 2020 13:54:39 GMT</pubDate><media:content url="https://fieg.dev/content/images/2022/01/docker.png" medium="image"/><content:encoded><![CDATA[<img src="https://fieg.dev/content/images/2022/01/docker.png" alt="Improve Docker performance on macOS with Docker Machine"><p>Recently I spoke a few fellow developers and they were unhappy with the performance of Docker on macOS. Personally I couldn&apos;t really relate to these performance issues. So what was going on? Well it wasn&apos;t hard to find the difference: They were using Docker for Mac, while I was using Docker Machine with <a href="https://github.com/adlogix/docker-machine-nfs">Docker Machine NFS</a>.</p><p>So yesterday I gave it a try. I send a colleague instructions on how to setup his development environment with Docker Machine. His reaction?</p><blockquote>My docker is quite fast now</blockquote><p>This gave me reasons to believe that this setup of Docker is actually faster than Docker for Mac. Feel free to try this for yourself using the following instructions.</p><h3 id="1-install-requirements">1. Install requirements</h3><p>First go to your project directory.</p><pre><code class="language-shell">$ cd ~/git/&lt;project&gt;</code></pre><p>Install the required software using Homebrew.</p><pre><code class="language-shell">$ brew install docker docker-compose docker-machine docker-machine-nfs

$ brew cask install virtualbox</code></pre><h3 id="2-create-a-virtual-machine">2. Create a virtual machine</h3><pre><code class="language-shell">$ docker-machine create &lt;your-project-name&gt;</code></pre><h3 id="3-setup-nfs">3. Setup NFS</h3><pre><code class="language-shell">$ docker-machine-nfs &lt;your-project-name&gt; --shared-folder=`pwd`</code></pre><h3 id="4-connect-docker-to-the-virtual-machine">4. Connect docker to the virtual machine</h3><pre><code class="language-shell">$ eval $(docker-machine env &lt;your-project-name&gt;)</code></pre><h3 id="5-add-virtual-machine-ip-to-hosts-file">5. Add virtual machine ip to hosts file</h3><pre><code class="language-shell">$ echo &quot;$(docker-machine ip &lt;your-project-name&gt;) your-domain.test&quot; | sudo tee -a /etc/hosts</code></pre><h3 id="6-verify-that-everything-works">6. Verify that everything works</h3><pre><code class="language-shell">$ docker ps</code></pre><p>You can now start your project containers, e.g.</p><pre><code class="language-shell">$ docker-compose up -d</code></pre><p>Suppose that your project exposes a website on port 80 or 443, test that you can access it.</p><pre><code class="language-shell">$ open http://your-domain.test/</code></pre><h3 id="caveats">Caveats</h3><p>A few thing we have to remember:</p><p>1 . With every new shell instance we need to repeat step 4.</p><p>2 . After a reboot the VM is shutdown, so we need to start it: </p><pre><code class="language-shell">$ docker-machine start &lt;your-project-name&gt;</code></pre>]]></content:encoded></item></channel></rss>