<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ship30for30 on Nicole van der Hoeven</title><link>https://nicolevanderhoeven.com/tags/ship30for30/</link><description>Recent content in Ship30for30 on Nicole van der Hoeven</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><copyright>Nicole van der Hoeven</copyright><lastBuildDate>Wed, 02 Feb 2022 10:46:56 +0100</lastBuildDate><atom:link href="https://nicolevanderhoeven.com/tags/ship30for30/index.xml" rel="self" type="application/rss+xml"/><item><title>Creating a D&amp;D DM's Brain Attic With Obsidian</title><link>https://nicolevanderhoeven.com/blog/20220202-creating-a-dnd-dms-brain-attic-with-obsidian/</link><pubDate>Wed, 02 Feb 2022 10:46:56 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220202-creating-a-dnd-dms-brain-attic-with-obsidian/</guid><description>&lt;p&gt;I started using &lt;a href="https://obsidian.md"&gt;Obsidian&lt;/a&gt; for professional reasons. I use it daily as my main task management and personal knowledge management system for my main job as a software developer advocate at &lt;a href="https://k6.io"&gt;k6.io&lt;/a&gt;. However, a surprising use case of mine for Obsidian is playing Dungeons &amp;amp; Dragons, the tabletop roleplaying game.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a video of me walking through my setup for how to use Obsidian to create my own &amp;ldquo;DM&amp;rsquo;s Brain Attic&amp;rdquo;.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Fblwp-Uop_8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="other-resources"&gt;Other Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20210930-non-lazy-dms-use-obsidian-for-dnd/"&gt;Non-Lazy DMs use Obsidian for D&amp;amp;D&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20211113-how-i-use-obsidian-to-run-and-play-dnd-online/"&gt;How I use Obsidian to run and play D&amp;amp;D onliny&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20220109-5-ways-to-use-obsidian-as-a-software-engineer/"&gt;5 ways to use Obsidian as a Software Engineer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nicolevanderhoeven.com/blog/20211117-how-i-use-obsidian-for-work-as-a-software-developer-advocate/"&gt;How I use Obsidian for Work as a Software Developer Advocate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Realistic Calendar Blocking for the Agile Knowledge Worker</title><link>https://nicolevanderhoeven.com/blog/20220201-realistic-calendar-blocking-for-the-agile-knowledge-worker/</link><pubDate>Tue, 01 Feb 2022 16:07:31 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220201-realistic-calendar-blocking-for-the-agile-knowledge-worker/</guid><description>&lt;p&gt;Calendar blocking is the only way to identify and avoid distraction.&lt;/p&gt;
&lt;p&gt;In a world that tempts us with &amp;ldquo;a little bit of everything, all of the time,&amp;rdquo; resisting distraction is the most valuable skill. Yet distraction isn&amp;rsquo;t always easy to recognize, especially when it comes in the guise of other things we need to do.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how to use calendar blocking to gain control over your schedule.&lt;/p&gt;
&lt;h2 id="set-realistic-schedules"&gt;Set realistic schedules.&lt;/h2&gt;
&lt;p&gt;Setting an overly ambitious schedule inevitably leads to disappointment.&lt;/p&gt;
&lt;p&gt;The hard part is figuring out what&amp;rsquo;s infeasible, and that has to come with time. In the meantime, &lt;em&gt;expect to change your schedule.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="use-digital-tools"&gt;Use digital tools.&lt;/h2&gt;
&lt;p&gt;Calendar Tetris isn&amp;rsquo;t fun&amp;ndash; but there are tools that can help.&lt;/p&gt;
&lt;p&gt;If you expect to change your schedule, choose tools that make that easier. I use &lt;a href="http://Reclaim.ai"&gt;Reclaim.ai&lt;/a&gt; to change my calendar in response to changing priorities.&lt;/p&gt;
&lt;h2 id="do-a-weekly-review"&gt;Do a weekly review.&lt;/h2&gt;
&lt;p&gt;Review how well you stuck to your schedule and adjust it accordingly.&lt;/p&gt;
&lt;p&gt;A good schedule, like a good budget, changes over time. Set aside a time every week to assess the previous week and set priorities for the next week.&lt;/p&gt;
&lt;h2 id="relate-your-schedule-to-your-core-principles"&gt;Relate your schedule to your core principles.&lt;/h2&gt;
&lt;p&gt;Your calendar should be the reflection of the values you hold.&lt;/p&gt;
&lt;p&gt;But what are those values? Keep a list of the principles you live by (or want to live by). Look at your calendar as a way to keep yourself on track.&lt;/p&gt;
&lt;h2 id="reframe-restriction-as-freedom"&gt;Reframe restriction as freedom.&lt;/h2&gt;
&lt;p&gt;When you don&amp;rsquo;t set your calendar, others set it for you.&lt;/p&gt;
&lt;p&gt;Restriction isn&amp;rsquo;t following a schedule &lt;em&gt;you&lt;/em&gt; set. Restriction is being subject to the passing whims of bugs and meetings that demand your attention.&lt;/p&gt;
&lt;h2 id="calendar-blocking-defends-your-time"&gt;Calendar blocking defends your time.&lt;/h2&gt;
&lt;p&gt;It frees you to do things you decide are important.&lt;/p&gt;</description></item><item><title>5 Things the Obsidian Templater Plugin Can Do That Templates Can't</title><link>https://nicolevanderhoeven.com/blog/20220131-5-things-the-obsidian-templater-can-do-that-templates-cant/</link><pubDate>Mon, 31 Jan 2022 22:46:52 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220131-5-things-the-obsidian-templater-can-do-that-templates-cant/</guid><description>&lt;p&gt;The Templater plugin is what the core Templates plugin should have been.&lt;/p&gt;
&lt;p&gt;The name is unfortunate, as it implies that the two plugins are similar. Turns out they&amp;rsquo;re only similar in that one is a limited version of the other.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s what you can do with Templater&amp;ndash; and not with Templates.&lt;/p&gt;
&lt;h2 id="add-dynamic-variables-to-your-notes"&gt;Add dynamic variables to your notes&lt;/h2&gt;
&lt;p&gt;You&amp;rsquo;re probably thinking, &lt;em&gt;but Templates can already add dates&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Templater can do that, &lt;em&gt;and more&lt;/em&gt;. You can use it to fetch values in YAML frontmatter, random quotes from the interwebs, and even clipboard contents.&lt;/p&gt;
&lt;h2 id="make-your-notes-context-sensitive"&gt;Make your notes context-sensitive&lt;/h2&gt;
&lt;p&gt;Templater can create notes with different templates depending on context.&lt;/p&gt;
&lt;p&gt;For example, you could set up Obsidian to create a new note using the &lt;em&gt;Person&lt;/em&gt; template in the &lt;em&gt;People&lt;/em&gt; folder but a &lt;em&gt;Weekly Review&lt;/em&gt; note on Sunday nights.&lt;/p&gt;
&lt;h2 id="increment-your-notes-automatically"&gt;Increment your notes automatically&lt;/h2&gt;
&lt;p&gt;Templater can automatically increment new instances of a series.&lt;/p&gt;
&lt;p&gt;You can set it up to create a session log for your 100th D&amp;amp;D session, a review note for your 12th monthly review, or your 10th book review.&lt;/p&gt;
&lt;h2 id="interact-with-other-plugins"&gt;Interact with other plugins&lt;/h2&gt;
&lt;p&gt;Templater leverages all the best parts of Obsidian&amp;rsquo;s ecosystem.&lt;/p&gt;
&lt;p&gt;You can read from and write to YAML frontmatter using Dataview, or run commands that create notes based on text input with Buttons.&lt;/p&gt;
&lt;h2 id="write-and-run-your-own-scripts"&gt;Write and run your own scripts&lt;/h2&gt;
&lt;p&gt;Templater lets you write and call user scripts within an Obsidian note.&lt;/p&gt;
&lt;p&gt;This is the ultimate in extensibility. The ability to run custom JavaScript means you&amp;rsquo;re limited only by your imagination (and skill).&lt;/p&gt;
&lt;h2 id="templater-lets-you-turn-obsidian-into-exactly-what-you-want"&gt;Templater lets you turn Obsidian into exactly what you want.&lt;/h2&gt;
&lt;p&gt;And isn&amp;rsquo;t that what a PKM should do?&lt;/p&gt;</description></item><item><title>10 Mandatory Obsidian Plugins for Every Software Engineer</title><link>https://nicolevanderhoeven.com/blog/20220129-10-mandatory-obsidian-plugins-for-every-software-engineer/</link><pubDate>Sat, 29 Jan 2022 23:58:12 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220129-10-mandatory-obsidian-plugins-for-every-software-engineer/</guid><description>&lt;p&gt;If you haven&amp;rsquo;t installed any Obsidian plugins, you&amp;rsquo;re missing out.&lt;/p&gt;
&lt;p&gt;Many other mainstream PKM apps seem to have been built with the intention of hand-holding users through every step using a pretty interface. On the other hand, Obsidian is perfectly suited to power users who want to change the tool to meet their needs exactly. But you can only do that with plugins.&lt;/p&gt;
&lt;p&gt;Here are 10 Obsidian plugins you should install if you work in tech:&lt;/p&gt;
&lt;h2 id="enable-these-core-plugins"&gt;Enable these Core Plugins.&lt;/h2&gt;
&lt;p&gt;Core plugins are shipped with Obsidian but are disabled by default.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Daily notes&lt;/em&gt;&lt;/strong&gt;: Creates a new Markdown page according to a specified template that serves as a scratchpad and springboard for every new day.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Templates&lt;/em&gt;&lt;/strong&gt;: Lets you define predetermined formats that can be inserted into notes. Some template examples: Daily/Weekly/Monthly/Yearly notes, meeting notes with agendas, person notes to create your own CRM.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Backlinks&lt;/em&gt;:&lt;/strong&gt; When you have a note open, this shows you all the other notes that have referred to it, explicitly (via [[links]]) or implicitly (unlinked).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Quick switcher&lt;/em&gt;:&lt;/strong&gt; Lets you find any note by hitting CMD+O and showing search results as you type. With this enabled, I never bother with folders.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Workspaces&lt;/em&gt;:&lt;/strong&gt; Lets you save the exact arrangement of notes and sidebar options you have selected, and then load it quickly later. I have workspaces for writing, processing content, playing D&amp;amp;D, and making videos.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="install-these-community-plugins"&gt;Install these Community Plugins.&lt;/h2&gt;
&lt;p&gt;Community plugins are created by users and open-sourced on GitHub.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Calendar&lt;/em&gt;&lt;/strong&gt;: Adds a real-world calendar to your side panel that shows daily and weekly notes. Use Fantasy Calendar for even more customization.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Editor Syntax Highlight&lt;/em&gt;:&lt;/strong&gt; Formats text in code blocks according to the programming language set. Drastically improves readability of any code.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Readwise Official&lt;/em&gt;:&lt;/strong&gt; Regularly imports your highlights from ebooks, web articles, audiobooks, tweets, and PDFs into your Obsidian vault.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Templater&lt;/em&gt;:&lt;/strong&gt; Extends templating functionality by letting you run JAVASCRIPT. In your vault! This blows the functionality of Obsidian wide open.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Dataview&lt;/em&gt;:&lt;/strong&gt; Turns your Obsidian vault into a database using custom parameters in YAML frontmatter. There&amp;rsquo;s even a way to write queries in js!&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Señor Performo's Week of Load Testing (k6 Office Hours #39)</title><link>https://nicolevanderhoeven.com/blog/20220128-koh39-leandros-week-of-load-testing/</link><pubDate>Fri, 28 Jan 2022 23:27:47 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220128-koh39-leandros-week-of-load-testing/</guid><description>&lt;p&gt;This week for k6 Office Hours, I talked to one of the newest members on our team, &lt;a href="https://srperf.com"&gt;Leandro Melendez, aka Señor Performo&lt;/a&gt;, about his experience in joining k6/Grafana Labs. We ended up talking about performance &amp;ldquo;deadly sins&amp;rdquo; and how the practice of performance engineering has changed in the last decade.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/bi-RuT9eZdA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Why I'm Leaving the Netherlands</title><link>https://nicolevanderhoeven.com/blog/20220126-why-im-leaving-the-netherlands/</link><pubDate>Wed, 26 Jan 2022 21:15:31 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220126-why-im-leaving-the-netherlands/</guid><description>&lt;p&gt;It&amp;rsquo;s been almost five years since I first moved to the Netherlands, and while I love the country and I&amp;rsquo;m grateful for all the experiences I had here, I&amp;rsquo;ve decided to move away. Here&amp;rsquo;s why.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/wfPLkNA2Ha8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Why All Roads Lead to Testing</title><link>https://nicolevanderhoeven.com/blog/20220125-all-roads-lead-to-testing/</link><pubDate>Tue, 25 Jan 2022 23:59:03 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220125-all-roads-lead-to-testing/</guid><description>&lt;h1 id="why-all-roads-lead-to-testing"&gt;Why all roads lead to testing&lt;/h1&gt;
&lt;p&gt;Testing is a skill every software engineer should develop.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s easy to dismiss testing as a responsibility only some carry, but it&amp;rsquo;s best thought of as a hat that &lt;em&gt;anyone&lt;/em&gt; can put on. How well you learn to wear this hat affects your career whether or not you&amp;rsquo;re a tester. Here&amp;rsquo;s why.&lt;/p&gt;
&lt;h2 id="ideas-are-cheap"&gt;Ideas are cheap.&lt;/h2&gt;
&lt;p&gt;In tech, having an idea isn&amp;rsquo;t what sells&amp;ndash; the success is in the execution.&lt;/p&gt;
&lt;p&gt;iPhones didn&amp;rsquo;t become popular because it was the first mobile with a touchscreen. The Nintendo Switch isn&amp;rsquo;t ubiquitous because of its revolutionary hardware. Behind every successful product is a lot of testing.&lt;/p&gt;
&lt;h2 id="testing-isnt-just-for-testers"&gt;Testing isn&amp;rsquo;t just for testers.&lt;/h2&gt;
&lt;p&gt;Every good software engineer does testing.&lt;/p&gt;
&lt;p&gt;Debugging is a form of testing. Questioning requirements is a form of testing. Testers don&amp;rsquo;t (and shouldn&amp;rsquo;t) have a monopoly on testing. The reality is that everyone is doing it, often without calling it &amp;ldquo;testing&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="testing-is-about-people-more-than-it-is-about-machines"&gt;Testing is about people more than it is about machines.&lt;/h2&gt;
&lt;p&gt;The fundamental goal of any app is to address a human need.&lt;/p&gt;
&lt;p&gt;Testing is finding new ways to represent and understand this need at all stages of development. Testing is a people problem, not a technical problem.&lt;/p&gt;
&lt;h2 id="humans-are-irrational"&gt;Humans are irrational.&lt;/h2&gt;
&lt;p&gt;The biggest challenge in building apps is human irrationality.&lt;/p&gt;
&lt;p&gt;We don&amp;rsquo;t always &lt;em&gt;want&lt;/em&gt; what we need, we don&amp;rsquo;t always &lt;em&gt;know&lt;/em&gt; what we need, and even when we&amp;rsquo;re building &lt;em&gt;for&lt;/em&gt; others, we don&amp;rsquo;t always &lt;em&gt;work&lt;/em&gt; towards what we need. Testing is an attempt to make sense of this irrationality.&lt;/p&gt;
&lt;h2 id="testing-is-an-attitude"&gt;Testing is an attitude.&lt;/h2&gt;
&lt;p&gt;Getting good at testing extends to aspects beyond work.&lt;/p&gt;
&lt;p&gt;Testing is a discipline of questioning. It&amp;rsquo;s having curiosity as a default state and trying to meet people where they are. These are things every project, and every community, needs in spades.&lt;/p&gt;
&lt;h2 id="testing-is-rarely-the-destination"&gt;Testing is rarely the destination.&lt;/h2&gt;
&lt;p&gt;But some time, some how, all roads lead to testing.&lt;/p&gt;</description></item><item><title>How to Actually Remember What You Learn, for Engineers with Long Reading Lists</title><link>https://nicolevanderhoeven.com/blog/20220124-how-to-actually-remember-what-you-learn/</link><pubDate>Mon, 24 Jan 2022 21:47:59 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220124-how-to-actually-remember-what-you-learn/</guid><description>&lt;p&gt;Who says you need the terminology of the Zettelkasten process? Here&amp;rsquo;s how I&amp;rsquo;ve learned how to learn and how to apply new ideas to my daily work.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re reading this, you probably make your living on what you&amp;rsquo;ve learned that other people haven&amp;rsquo;t. Unfortunately, if you don&amp;rsquo;t have a written system to keep track of new ideas, you&amp;rsquo;ll probably unlearn everything in a few years.&lt;/p&gt;
&lt;h2 id="most-people-think-reading--learning"&gt;Most people think reading = learning.&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s why reading isn&amp;rsquo;t enough.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Our brains are best at linking concepts, not at remembering them.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Writing doesn&amp;rsquo;t help us learn; it IS how we learn.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can&amp;rsquo;t learn to swim by reading about it.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If reading isn&amp;rsquo;t enough, then what should you do instead?&lt;/p&gt;
&lt;h3 id="step-1-consume"&gt;&lt;strong&gt;Step 1: Consume&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The first step is to consume content, but &lt;em&gt;selectively&lt;/em&gt; so.&lt;/p&gt;
&lt;p&gt;Content could be a book, a video, a podcast, an article, or even a conversation. &lt;em&gt;Take notes&lt;/em&gt; on the author&amp;rsquo;s main points.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Example:&lt;/em&gt; Shape Up is a methodology emphasising iterative cycles, &amp;ldquo;betting&amp;rdquo; on work to be done, and building fully integrated slices of work.&lt;/p&gt;
&lt;h3 id="step-2-redefine"&gt;&lt;strong&gt;Step 2: Redefine&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Next, go beyond facts and add your thoughts.&lt;/p&gt;
&lt;p&gt;Think about the broader picture of what the author might be saying, and supplement it with &lt;em&gt;your&lt;/em&gt; opinions. &lt;em&gt;Example:&lt;/em&gt; Shape Up is an Agile methodology concerned with the limits we should apply to different stages of work.&lt;/p&gt;
&lt;h3 id="step-3-contextualize"&gt;&lt;strong&gt;Step 3: Contextualize&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Think about what the content means to you, specifically&amp;ndash; how does it stack with other things you&amp;rsquo;ve learned? Where does it fit into your interests? Accept that your context, and your notes, will change.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Example:&lt;/em&gt; Shape Up&amp;rsquo;s idea of fully integrated work supports the notion of context-switching (see: Continuous integration, Multithreading) but could be in contention with productivity concepts like deep work (David Allen), batching, and Productivity Momentum.&lt;/p&gt;
&lt;h2 id="its-your-brain"&gt;It&amp;rsquo;s your brain!&lt;/h2&gt;
&lt;p&gt;In the end, nobody can tell you the &amp;ldquo;right&amp;rdquo; way to learn.&lt;/p&gt;</description></item><item><title>My Workflow for Making Tech and Travel Videos Online</title><link>https://nicolevanderhoeven.com/blog/20220123-my-workflow-for-making-tech-and-travel-videos-online/</link><pubDate>Sun, 23 Jan 2022 16:16:33 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220123-my-workflow-for-making-tech-and-travel-videos-online/</guid><description>&lt;p&gt;In the last 5 years, I&amp;rsquo;ve made ~220 videos across 4 YouTube channels. Here&amp;rsquo;s what I&amp;rsquo;ve learned so far about making videos.&lt;/p&gt;
&lt;h2 id="why-make-videos"&gt;&lt;strong&gt;Why make videos?&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;A 10-minute video takes me anywhere from 7 to 15 hours to produce. I wouldn&amp;rsquo;t be doing it if I didn&amp;rsquo;t enjoy it!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;It can be the most genuine form of expression.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Videos were a big part of how &lt;em&gt;I&lt;/em&gt; got into tech, and I want to pass that on.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I&amp;rsquo;d rather make a video once than explain the same thing to 100 people.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I don&amp;rsquo;t think my way is the &lt;em&gt;best&lt;/em&gt; way, but maybe sharing my workflow will make it easier for you to get started, too!&lt;/p&gt;
&lt;h3 id="pre-production-ideation"&gt;&lt;strong&gt;Pre-production: Ideation&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Ideas are cheap&lt;/strong&gt;. The best idea is worthless if I can&amp;rsquo;t convey it well.&lt;/p&gt;
&lt;p&gt;I start with the idea, then the title and thumbnail. I search YouTube to see what titles have worked for others. Then, I use @Canva for thumbnail creation and &lt;a href="http://thumbsup.tv"&gt;thumbsup.tv&lt;/a&gt; to test combinations.&lt;/p&gt;
&lt;p&gt;Only then do I start to outline the video or research it. I use @obsdmd as my project management tool and content calendar.&lt;/p&gt;
&lt;h3 id="production-filming-and-editing"&gt;&lt;strong&gt;Production: Filming and editing&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;I like to film with talking points rather than a full script. It saves me time, and it comes across as more natural. My main gear: Sony A6600 + Sigma 16mm f/1.4, Røde PodMic, Elgato keylight.&lt;/p&gt;
&lt;p&gt;I edit everything myself in Final Cut Pro, using stock footage from @StoryblocksCo and sound effects/music from @epidemicsound.&lt;/p&gt;
&lt;h3 id="post-production-publishing"&gt;&lt;strong&gt;Post-production: Publishing&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;I export and upload the video to YouTube, adding the title, thumbnail, description, cards, end screen&amp;hellip; I have a checklist so I don&amp;rsquo;t forget these.&lt;/p&gt;
&lt;p&gt;I send most videos to humans at @Rev for captioning. I then use the captions to create YouTube chapters. From there, it&amp;rsquo;s just about publishing to appropriate platforms.&lt;/p&gt;
&lt;h2 id="optimize-for-consistency-and-fun"&gt;Optimize for consistency and fun&lt;/h2&gt;
&lt;p&gt;When in doubt, I chuck technique out the window and do what will keep video creation fun for me!&lt;/p&gt;</description></item><item><title>How to Do What Kind of Testing When: Testing Types by Scope</title><link>https://nicolevanderhoeven.com/blog/20220122-how-to-do-what-kind-of-testing-when/</link><pubDate>Sat, 22 Jan 2022 16:42:49 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220122-how-to-do-what-kind-of-testing-when/</guid><description>&lt;p&gt;Correctly identifying &lt;em&gt;when&lt;/em&gt; you test could be just as important as &lt;em&gt;what&lt;/em&gt;. Below are types of testing according to scope.&lt;/p&gt;
&lt;h3 id="static-testing"&gt;Static testing&lt;/h3&gt;
&lt;p&gt;Static testing occurs when requirements are written. Question requirements and spell out what each one means.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Concerns:&lt;/em&gt; Setting up a system to track and link requirements to test cases, negotiating business needs with technical feasibility, clarifying scope.&lt;/p&gt;
&lt;h3 id="unit-testing"&gt;Unit testing&lt;/h3&gt;
&lt;p&gt;Unit testing occurs when coding begins. Practice Test-Driven Development by translating requirements into tests before writing the code.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Concerns:&lt;/em&gt; Treating test code like application code, getting developer buy-in, communicating technical implementation, performance, pair programming.&lt;/p&gt;
&lt;h3 id="system-testing"&gt;System testing&lt;/h3&gt;
&lt;p&gt;System testing occurs when a build is released. Employ black-box testing: step back from the code and assess the feature as a whole for consistency.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Concerns:&lt;/em&gt; Adherence to common design standards, equivalence partitioning, boundary value analysis, fighting scope creep, usability, creating test data.&lt;/p&gt;
&lt;h3 id="system-integration-testing-sit"&gt;System integration testing (SIT)&lt;/h3&gt;
&lt;p&gt;SIT occurs when integrating multiple components. Use white-box or grey-box testing to target the interactions and traffic between components.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Concerns:&lt;/em&gt; API testing, stubbing and mocking, identifying request paths throughout the system, performance benchmarking, observability and analysis.&lt;/p&gt;
&lt;h3 id="business-acceptance-testing-bat"&gt;Business acceptance testing (BAT)&lt;/h3&gt;
&lt;p&gt;BAT occurs when the code is assessed against overall business goals. Seek out SMEs who can help you verify expected outcomes.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Concerns:&lt;/em&gt; Adherence to business requirements and regulations, process testing, simplifying request flows, identifying potential customer pain points.&lt;/p&gt;
&lt;h3 id="user-acceptance-testing-uat"&gt;User acceptance testing (UAT)&lt;/h3&gt;
&lt;p&gt;User acceptance testing occurs before code is released to production. Map test cases to requirements and test real-world scenarios.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Concerns:&lt;/em&gt; Testing for superuser workflows, data cleansing, verifying real user behavior from historical logs, exploratory testing, end-to-end performance.&lt;/p&gt;
&lt;h3 id="regression-testing"&gt;Regression Testing&lt;/h3&gt;
&lt;p&gt;Regression testing occurs between builds. Supplement a robust automation test suite with nuanced manual test cases that address known problem areas.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Concerns:&lt;/em&gt; Setting up a CI/CD pipeline, deciding what to automate, consolidating test and development tools, tracking failures over time.&lt;/p&gt;
&lt;h3 id="question-everything"&gt;Question everything&lt;/h3&gt;
&lt;p&gt;Remember: &lt;strong&gt;testing is an attitude.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Canonical Observability with Simon Aronsson and Michele Mancioppi (k6 Office Hours #38)</title><link>https://nicolevanderhoeven.com/blog/20220121-koh38-canonical-observability/</link><pubDate>Fri, 21 Jan 2022 18:23:47 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220121-koh38-canonical-observability/</guid><description>&lt;p&gt;Today, my former colleague &lt;a href="https://simme.dev"&gt;Simon Aronsson&lt;/a&gt; brought his &lt;em&gt;new&lt;/em&gt; colleague, &lt;a href="https://twitter.com/mmanciop"&gt;Michele Mancioppi&lt;/a&gt;, to k6 Office Hours to talk about observability, and how they do it at &lt;a href="https://canonical.com"&gt;Canonical&lt;/a&gt;. It turned into a great conversation about trends in observability from the last decade, and how it relates to performance and reliability testing.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/SD5Y4QejEu4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Hello everyone, and welcome back to the first k6 Office Hours of the year. Happy 2022, I&amp;rsquo;m Nicole Vander Hoeven.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;And I&amp;rsquo;m Simme, we&amp;rsquo;re back from the dead.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;And I&amp;rsquo;m Michele.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Simme is back. Yes, so Simme unfortunately is only temporarily back, and he&amp;rsquo;s brought his new colleague. I mean, I&amp;rsquo;m kind of sad, but I&amp;rsquo;m happy to meet you Michele Manciopi.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hello everyone.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Welcome. Simme why don&amp;rsquo;t you first tell everybody, how you betrayed us at k6.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sure, I&amp;rsquo;m so sorry for that, was a couple of months ago now. I think I quit at k6 in October, beginning of October something like that, to join Canonical and Michele, where we are trying to build a really awesome observability stack to know little part built on top of Grafana products.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yeah, it has been a very interesting three months. It&amp;rsquo;s actually a pretty refreshing to be able to use high quality software and compose it in ways that are, you know, they just work through, cool.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;So we already have a few people in the peanut gallery, there&amp;rsquo;s Simme and Michele and our newest colleague, I think senior performer, all saying hi to you Simme. so you&amp;rsquo;re very much missed.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Congratulations to k6 for bringing Leandra.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Definitely, and by the way, Leandra will be on k6 Office Hours next week, he just accepted the invite. So when I&amp;rsquo;m letting him like relax, and do his bootcamp onboarding things, and his week of load testing this week. . Ooh Danielle is here as well. Michele, why don&amp;rsquo;t you talk about yourself, and what you do at Canonical?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Well, I am a product manager at Canonical, for observer BD team. I was brought in with the goal of making the entirety of the product line of Canonical observable. Canonical is chiefly known for Ubuntu, but we have like a meter other products and they all need to be observable because they all sit at different levels of critical pieces of the infrastructure. Before Canonical, I was the technical product manager at Instana, which has been what baby ham it&amp;rsquo;s a product that does very automated observability. It&amp;rsquo;s mostly proprietary, but it was a lot of fun trying to make observability the way it&amp;rsquo;s supposed to be. That is seamless. Very easy to roll out. Before that I was at SAP where I was the technical lead of the performance team for SAP cloud platform, where my job was mostly to figure out where things were slow and fix it. And then I realized that rather than helping one single developer at the time, would they be more productive in actually providing pretty decent tools to do that at scale so people could do it themselves, which then brought me down the path of figuring out it&amp;rsquo;s actually fun here to make an observability product than it is to using one. And then the CircleCI.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;So Simme what was it about Canonical that won you over?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I actually think it was to no little part Michele won me over with his argumentation for&amp;ndash;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Okay. I&amp;rsquo;m taking him off the stream sorry. No, no, No.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;lsquo;Cause I got you everyone, bye.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No. We&amp;rsquo;re still all friends.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I do really miss the k6 family for sure. But yeah, it was just such a cool and exciting opportunity to be able to make this huge leap in observability with Canonical, for such a vastly used project or suite of tools and products. So that&amp;rsquo;s mainly one of them.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I&amp;rsquo;m sorry. Can we stop to remark? That was the coolest cup I&amp;rsquo;ve seen in a long.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It is as if this is sponsored, this is a hydrate spark, it&amp;rsquo;s a smart water bottle. And it&amp;rsquo;s marketed like for people like me because it&amp;rsquo;s a water bottle, but it has Bluetooth and LED light. So, you know, obviously I had to buy.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yeah, just out of curiosity, what are the key values of the Bluetooth support?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Oh, it tells me when I need to drink water. It&amp;rsquo;s very important stuff.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;How do you monitor that A, the Bluetooth is working and how do you receive those notifications?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Well, it&amp;rsquo;s funny that you ask, there is an app for it. This is totally not sponsored. Okay. But there is an app for it. I was gonna say Simme that it seems like there was a slight change in your focus as well, because at k6, we&amp;rsquo;re more focused on the performance and reliability testing part of it. But definitely we&amp;rsquo;ve also dabbled in the observability space, especially with the acquisition of Grafana. So it seems like your new role is also more focused towards observability. Was that one of the considerations?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sure it is. And then that was definitely one of the considerations during my, what is it now? 12 or something years in tech, I&amp;rsquo;ve been doing way more observability and monitoring work than I&amp;rsquo;ve been doing performance testing. And so that definitely felt like coming home in a sense to me.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;And I wanna ask you both this because you&amp;rsquo;ve both been in observability for awhile. How do you think observability and performance testing go together? Do you see them as separate disciplines entirely, there&amp;rsquo;s clearly some sort of overlap, right? Should companies be doing both, one or the other?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I definitely think there is a lot of overlap. One thing that I know that you and I have been pushing forward when we&amp;rsquo;ve been discussing this previously on the stream is that performance testing is great, but it usually only allows you to do a black box perspective testing, right? You&amp;rsquo;re able to measure the performance of your system, given certain interfaces or end points that you are able to observe the performance off and pairing that with observability tools, like for instance, loci or tempo, or Prometheus&amp;rsquo;s allows you to really drill back into the stack and figure out what is causing those problems. So I definitely think that it makes sense to combine the both to be able to observe the whole system and not just the edges of it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Do you agree with that Michele?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yeah, very much, over go and say that actually, it&amp;rsquo;s very hard to draw a demarkation between the performance and of observability, especially since in the last few decades and the increasingly disproportionately larger role that internet and internet systems taking our lives. We have come to see, you know, slow as the new down, which means that not only the software needs to work but it needs to be fast. And if you observability is fundamentally the art of understanding, are there problems? I mean, so how bad was impacted and how badly, and that is both in terms of software, it is broken as software is luck. Many of the techniques that you would use in, for example, a QA system to check the scalability of your software is something that you can use at scale in production to make sure that you&amp;rsquo;re at least carrying that much load, as well as techniques for example, for performance testing, you often do a lot of black box monitoring. The techniques that you use to check if today in SIL on a mobile connection, your web store is reachable is very similar in terms of technologies and capabilities and as technical requirements. So the technology is there to use, to throw a lot of requests security to your software. So it&amp;rsquo;s fundamentally the performance tools are versatile like that.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yeah, I totally agree with that. I have always taken the stance that it&amp;rsquo;s definitely better when you have both of them because observability is great. But then in pre-production environments, it can be a little tricky &amp;lsquo;cause you don&amp;rsquo;t have real traffic and that&amp;rsquo;s where performance testing can come in handy and performance testing is great, but you don&amp;rsquo;t always want to run it in production. And also you, it&amp;rsquo;s not always a good idea to be reliant on the results of the performance testing tool. You know, sometimes it makes a lot more sense to be already using the same observability stack that you use in production. And I also want to call out that performance testing is often thought of as load testing, but that&amp;rsquo;s really just one kind of performance that is being measured there. And so what about a related topic to observability as monitoring? I know Michele, you have a lot to say on that topic.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Oh my, can I rant?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yes. Go ahead. I&amp;rsquo;m familiar with your blog posts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ooh influence. I have a &amp;ndash;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I do research, you know.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I thought you came across it because, you know, super rabid spike. No, the, so I have been around the observability industry for awhile and I have a certain annoyance towards what the industry has done by rebranding perfectly good monitoring and application performance tools in terms of the hot new term up observability that you need to sell to sort of the software. The way I see it&amp;rsquo;s a much more formal, shall we say way. Observability is a property that you want your systems to have, monitoring is the way that we have to make most systems observable. However, something that I hope we will see in our lifetime, our software systems and such a level of quality and standardization in our profession of creating software systems. So that monitoring and observability becomes build team in the softwares we create. If you think about it all the for example, automatic distributed tracing and all the amazing innovations that have occurred over the past 15 years are effectively reckoning the lack of observability as a functional requirement of a piece of software. Monitoring is the art to collecting data.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yeah, and I think that there&amp;rsquo;s also a connotation of monitoring being a bit more passive. Would you agree with that?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Not necessarily, no. At the end of it so there is, I really take the view that monitoring is a means to the end of observability. It is true that in the past few years, with new generations of tools, we have made leaps and bounds in both the capability of collecting useful telemetry with very little work in terms of toil to roll it out, without the proper tools are there and I used to work for one where you deploy an agent and it automatically discovers all around it. There is a lot of dark magic going on, but it works. And then it becomes very cheap to actually get to the holy grail of monitoring that is to have as little silos as possible. Telemetry wants to have friends. You want to see end to end systems how they relate to one another. Now, the moment that something that has changed recently in the industry is we have gotten better, not only at collecting telemetry, but analyzing it. When you compare monitoring tools that we started with right there the Nagios of the world. You&amp;rsquo;ll need it to know in advance what you were looking for. Now with broader collection of telemetry, for example, distributed tracing, a very powerful type of telemetry, very little underutilized in terms of the insights can provide you, you end up having a lot of data that is likely going to be useful, and you have much more freedom in how you analyze it, both in terms of discovering issues as they occur, as well as afterwards in terms of post-mortem.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I do have, however one, I agree with you completely Michele. I do however, think Nicole has a point in that if you look at the traditional monitoring tools that people used to use, like Nagios for instance, it was always this very weird situation where you put up SNMP traps or collected, you know, logs that were thrown at you in a very passive manner. But I would say that it turned monitoring itself has come to evolve into a state where it very much is an active practice in the same way as people would describe observability.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Oh. So you are making a very interesting distinction of rather than receiving as a data sync telemetry that was emitted, but something else that you go and get it through RTI, things like deploying an agent that does stuff. That&amp;rsquo;s pretty interesting.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yeah. Or for instance, actually triggering a synthetic test that just prompts a common user flow and make sure that that still works. I mean, as compared to just admitting this passive telemetry data that just keeps rolling on, but maybe lacks the context as you put it on more advanced workflows where you&amp;rsquo;d correlate multiple sources of data or the multiple actions to derive your data that you want to.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It is true that in the past 15, 20 years, there has been an increase of active monitoring. I remember doing it back in the day with smoke tests that were of a crunch up every 15 minutes. I was so young. And now it&amp;rsquo;s that it&amp;rsquo;s kind of a baseline of observability. I mean, you need to want to catch everything, but if there is catastrophic failure, you will know hopefully before someone starts opening tickets or you&amp;rsquo;re upping your drops. Yeah.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yeah. I think Simme it was right when he was saying, what I was talking about was like the more traditional approach that it&amp;rsquo;s just something that&amp;rsquo;s there in the background whereas these days, the way that it should be done is a lot more proactive.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;And also they focus on actually gathering telemetry to be able to detect failure modes rather than probing for a certain thing. It used to be much more focused on a single point that you would probe for data. And&amp;ndash;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It used to have simpler software too.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;We sure did.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yeah, that&amp;rsquo;s for sure. But I also wanted to say that there&amp;rsquo;s also been, there&amp;rsquo;s still some push based monitoring, but we&amp;rsquo;re also now seeing more poll based monitoring systems, more event driven ones. And I think this is all the evolution of monitoring and observability, right? Because these things did not exist not too long ago.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To be fair, the one should, it is pretty true. We have much more pool and pool length. This is something that a permit use has pretty much popularized with the concept of scraping, but there are entire domains where we deploy a software that is still very much push based. For example, IOT, for very basic reasons of network visibility, it&amp;rsquo;s very hard to go and reach out into someone else&amp;rsquo;s rooftop and go get the data. So there is still the mechanics of push buffer and pulled it for example, gave us in the primitive ecosystem, push gateway mechanism.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Grafana agent that actually sits in between you and a cloud service or something else, and allows you to not punch holes in your firewall, but rather reach out and deliver data to something.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yeah, it&amp;rsquo;s kind of like you mentioned that our applications in general are just getting more and more complex, it reminds me the push the trend from monolith to microservices and then now some people are also going back. It&amp;rsquo;s never really gone, right. And it&amp;rsquo;s really difficult to say, no, this is the new way, nobody else is doing or should do the other way. It&amp;rsquo;s not really like that. A lot of things in tech are cyclical.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When I actually spoke about our systems are getting more complex. I was thinking exactly of micro services because we made a trade as an industry for very, very simple, very small components. And then pushing all the complexity that you cannot make disappear under the carpet of service meshes, many containers, things that need to be versioned independently remain compatible, which is actually one of the main drivers why in the observability industry, we moved from the very traditional, I don&amp;rsquo;t like the word pillars, but the very traditional telemetry types of logs and metrics with the occasional sprinkling of profiling to rather extensive use of distributed tracing because all of a sudden the problem was less often in the single simpler components and much more often in between.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;But this is kind of a funny conversation to me &amp;lsquo;cause I don&amp;rsquo;t know if you remember, but 10 years ago we used to talk about microservices as well, but then we called it service-oriented architecture and it wasn&amp;rsquo;t the new cool thing. And then we decided that that was kind of cumbersome and powerful to work with. And we started to merge together our software, again, introduced monoliths.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;But in a service record architecture, we tended to have a very expensive, very large piece of machinery called the enterprise service bus that actually was providing to some extent that kind of visibility that today we need to have through tracing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;And let&amp;rsquo;s also not discount the effect of the proliferation of cloud providers, because when you have your own data center and your audiences, maybe your internal company or something, maybe it is a good thing to go from one huge complex monolith to three simpler services. But when it&amp;rsquo;s not three, it&amp;rsquo;s like hundreds, maybe then you start needing like another layer to orchestrate and manage and all of the traffic between each of those components. It&amp;rsquo;s definitely not that clear cut to say which one is better.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I definitely think you&amp;rsquo;re bang on in that case, Nicole, &amp;lsquo;cause we&amp;rsquo;ve moved from maybe having a couple of software devs for a company that did some kind of HTML that website with some access database backend in the worst cases, right? We now have these huge teams of hundreds of developers that are all working on a compost system together. And having that as a monolith would in practice require us to either do these huge orchestrations of release trains that no one is able to do in a proficient fashion. Or we would have to have downtime all the time &amp;lsquo;cause we would need to redeploy everything every time we made a change. So in that sense, it really makes sense to split it up as we grow our teams and we grow our development efforts as well.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I have a rather, so coming from a very enterprise background I have a rather newest feel to be on the subject. And my take is that usually technological problems are not technological problems, there are people problems. One of the main motivators that was towards going to the extreme distribution of microservices. &amp;lsquo;Cause I tried to fight back against the Conway&amp;rsquo;s law. The fact that roughly the architecture of your system mirrored the architecture of your organization. So we said, look, we have all these teams, these pizza teams, it&amp;rsquo;s very hard to make them cooperate to create a well-behaved monolith. So let&amp;rsquo;s give each of them their independent infrastructure and talk over standardize protocols like most of the HTTP and some sort of RPC built on top of it. And that would provide for them a way to be productive independent of each other.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Exactly.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;As an industry, we dramatically underestimated the cost and complexity that comes from the need of coordination and compatibility and understanding among these teams, because now you no longer have one code base that you can run tests against. You have to have multiple ones that may interact surprisingly at Atlanta. These for example, has led to introduction of contract based testing, where teams contribute to each other interface tests. And there&amp;rsquo;s also the saying, which is something that is a harsh reality that every observable behavior of an application with a large enough user base, will become a dependency for somebody somewhere.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I think this is the whole premise of Conway&amp;rsquo;s law, right? The idea that our architect, the software architecture or the infrastructure that we put into place in a lot of ways starts to evolve depending on how our team is structured. And I think it&amp;rsquo;s both a technological and a human problem as well. When you talk about coordination between teams or between services, it&amp;rsquo;s really the same thing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yeah. We have made actually strides in how easy it is to make software inter operate with each other. If you go back, we started, we were talking about SOA. SOA came with a curse called SOAP. It was incredibly complicated, mindbogglingly hard to make run at scale. Today, we have a bunch of, so we are using HTP for other things. Sometimes I would think too many, we have good stuff like GRPC, like arrow, a lot of different protocols that can be very efficiently used to either make a synchronous message passing happen or synchronous invocations. We have a lot of tools that in the past year and half, I think we&amp;rsquo;ve got the big two trigger happy in deploying a lot of new tools in production. And I&amp;rsquo;m saying this with a background of someone that fundamentally had to support every single piece of technology that made input or output, for example, on Java. It would surprise you how many different HTTP clients for Java are I think in production, I lost count. There were 50, it&amp;rsquo;s insane. And I&amp;rsquo;m, for example, you raised your mark right with a very, very beautiful LED and Bluetooth. And it&amp;rsquo;s super cool. I feel&amp;ndash;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I was trying to share something that Simme was sharing there, but I can&amp;rsquo;t actually see it for some reason. Oh, there it is.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It&amp;rsquo;s okay.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;What&amp;rsquo;s this Simme?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I love to say, I like to bring out this picture whenever we talk about why observability is needed. &amp;lsquo;Cause while it&amp;rsquo;s a lot larger than most of us operate with, and it&amp;rsquo;s still very striking that they think this is supposed to be Netflix&amp;rsquo;s is a microservice architecture at some point, whether it is or not, I don&amp;rsquo;t really know, but it&amp;rsquo;s supposed to be and trying to&amp;ndash;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Can I be trashy? Can I be able to trashy?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Thank you.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Architecture has an element of deliberation that they do not believe there&amp;rsquo;s an actual out of the system has, this is an emergent system is a lot of architectures that then meshed into something.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Definitely.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It&amp;rsquo;s remarkable that it works so well.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yeah. And one of the cool things there, I think is the fact that without observability where this big ball of yarn, it would be completely unfeasible to reason about anything this system is doing at scale. You wouldn&amp;rsquo;t be able to reason about the particular part, maybe that you are working on one of these small dots that we can&amp;rsquo;t even see because of all the lines. But to reason about what it does is as a whole would be completely unreasonable. But with tools like, for instance, distributed tracing, we&amp;rsquo;re suddenly able to follow end to end an action of a user or an agent within this system. That was all I wanted to think of that.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I love distributed systems, distributed tracing in distributed systems, because it actually gives you the means of answering the most important question or you&amp;rsquo;re faced with an issue, who is affected and how badly? When you go on an enterprise setting and our people are often databases service, your application completely blowing up, could be a drop in the bucket of their system. They will not probably have the central entry you have to have a very different take on priorities unless you have agreed upon a slice on the silos and the failure that you are fundamentally up streaming through your users may not be their concern, but the moment you have the shooting tracing, that goes from the deepest database to the device in the face of your user, yet you have a very clear perception of how bad is something that is the one most important piece of information that you need in front of your face when the pager goes off again at 3:00 AM, you need to decide whether it&amp;rsquo;s time to go on to Batman, or if it can wait until the third coffee tomorrow morning.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I think that&amp;rsquo;s the real success of the &amp;ldquo;Squid Game&amp;rdquo; right? Because that image that you had up Simme, and just imagine that times 114 million users that are potentially using many of those systems, it&amp;rsquo;s amazing that it works at all at that scale, especially.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Something that always gives me those thoughtful moments of, oh my God, what are we doing as an industry? Is that a potentially simple issues have disproportionate impact on popular services to the life of many, many people. It goes from lack of entertainment. You&amp;rsquo;re there you want to see the latest, &amp;ldquo;Witcher&amp;rdquo; episode, cool stuff. You&amp;rsquo;re disappointed if the thing is on top, multiply that by a medium people that cannot get there, there are fix, Hey, you have a significant amount of life around that has gotten worse, but it goes also to something that is maybe much more limited, but much more tragic. For example, when I was working at SAP, one of our customers was, I cannot say the country, but it was the first aid response service of one of the countries. We were scared plus that something so important that either the platform, because downtime would have consistent consequences to real people, something that we have seen recently with the move to the cloud and the disproportionate role that for example, U.S system one has on everybody&amp;rsquo;s life today. We have seen how the risk is getting more and more concentrated into fewer and fewer, very large, very complex, very reliable, but critical pieces of infrastructure, in ways that I do not believe as a society we have had yet. And that is where it really humbles me as an engineer to think, well, this has to work, right?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yeah. We went through that in, I think in the last k6 Office Hours, I had somebody from oil funk, who is an emergency services provider in Austria, and it was cool, but also a little scary to find out that they are using k6 for, in part to also handle the traffic from the 112 emergency hotline. So it&amp;rsquo;s cool to see something that you&amp;rsquo;re working on, be used in such a critical industry, right. But at the same time, it&amp;rsquo;s also a little scary because it could actually be lives that are lost if you know, we don&amp;rsquo;t do our jobs well enough, it&amp;rsquo;s a little humbling to think of that.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I guess the closest resemblance we&amp;rsquo;ve had to these critical infrastructures that everyone relies on would it be like the transatlantic Telegraph cable? I mean, that has like in, I think it&amp;rsquo;s currently 19 cables or something like that, that make up the transatlantic telephone cable. But I really any catastrophic failure there would really isolate us in terms of cross continental communication.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;But that is less likely to result in loss of life. Then, for example, your neighbor want service, not being able to follow you.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For sure.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I&amp;rsquo;m sorry for having completely spoiled the mood. I think that as an industry, we need to go in deserve the role of engineers. If we built bridges the way we push software to production, in some cases, I don&amp;rsquo;t think anybody would cross a river without crossing themselves first.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;What&amp;rsquo;s interesting is in that spaghetti soup of microservices that you showed Simme, now we&amp;rsquo;re seeing that our observability stack is part of those. They are also contributing back to the system that we have to monitor. I don&amp;rsquo;t know if either of you saw the post-mortem by roadblocks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It was classic. I had ops to them. It&amp;rsquo;s a, we have all been there.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yes yes. Do you have to talk about it Michele?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I do, but I don&amp;rsquo;t think I would be able to be nearly as good as a Simme for this.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I just came to be honest. So I don&amp;rsquo;t have any detail commentary on that either.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It was the classic fallacy of oh jolly, oh golly. The same infrastructure that is powering my observability system was probably the system that went down.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;All right. All right. Yeah, that really is something that you&amp;rsquo;ll see a lot. I mean, for instance, say that you have a deployment of the classic Grafana suite somewhere, and you have that running in the same data cluster maybe, or at least the same cloud provider as you have your critical workloads and to make it even worse, you could go down to having it in the same geographic region, or even on the same cluster nodes or the same hardware that you&amp;rsquo;re using for the rest of your critical infrastructure. When something goes south there, in terms of your critical infrastructure, it is likely that that was all will also, as I think, where to kick would roadblock, spill over to your monitoring system. And if that happens, how are you gonna be able to tell that you&amp;rsquo;ve been hit?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;This is the classic blast radius question. Everything has failure modes, actually, several of them, and the more abstractions we deploy, the more failure modes we introduce, for example, Simme and I are building an observability system based on Kubernetes natives. Our guidance is if you deployed, deployed to a different cluster on different hardware, because you should never put the monitoring system on the same infrastructure, close to the infrastructure stuff we monitor.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It&amp;rsquo;s not only that. We also usually recommend that if you deploy our monitoring system, deploy another monitoring system that makes sure that your monitoring system is up and set them up in a, what did they call it? That dead mans trigger?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The dead man switch is the idea that, for example, do you know in the movies when the hero goes in front of him and says, if you kill me, you will be exposed in two days time. That&amp;rsquo;s the classic deadness which is something that happens unless someone periodically goes there and tells him not to. In this case, in the case of monitoring is unless your system, your monitoring system is telling you that it&amp;rsquo;s fine, assume tragedy. It never goes to the level of a specific use cases, but first of all, you need, let me take a step back. The best monitoring system is the one that tells you whether it&amp;rsquo;s something to look at, right? You actually do not want to have dashboards, however, colorful and beautiful in front of your face all the time, unless it is for Ferguson purposes, you actually want to be able to focus on something else and jump into the action when stuff is hitting the fan. In order to do that, you must have the guarantee that is the easy model of notification. You will receive it because silence, you want to know that it means that it&amp;rsquo;s good. You don&amp;rsquo;t want to have to doubt if there is something going on that my sister should tell me but doesn&amp;rsquo;t, which is why you set up fundamentally a health check thing that says I&amp;rsquo;m thinking here and all it&amp;rsquo;s fine. That is the diagnose switch.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I found it so interesting to read through the post-mortem and props to them too, by the way, for releasing something so detailed, they were not afraid to, you know, say what they&amp;rsquo;d done wrong and what they were doing to address it. I thought it was really well-written, but I want to read one part of it, because I thought it was so good. They said, &amp;ldquo;There was a circular dependency between our telemetry systems and console, which meant that when console was unhealthy, we lacked the telemetry data that would have made it easier for us to figure out what was wrong. We&amp;rsquo;ve removed the circular independency, our telemetry systems no longer depend on the systems they&amp;rsquo;re configured to monitor.&amp;rdquo; I thought that was a great takeaway from that whole incident. And because they&amp;rsquo;ve shared it in the post-mortem, they&amp;rsquo;re not the only ones who can learn from it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Very generous of them to expose themselves that way and actually left the rest of the industry learn from their mistakes. And so hard work as you said, Michele, our love to the team at the roadblocks who probably need needed a bit of time out after that.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;But there is also another component of a human component here. They did the right thing. They reestablished trust. They are telling us, we learned from our mistakes so that you can as well. In the scope of monitoring systems, trust is the ultimate currency because a monitoring system is literally a measurement system for the health of other systems. If you cannot trust your measurement system, what is the point of it?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;And you usually only get one go with that as well. If you burn that trust, it&amp;rsquo;s gonna be very, very hard to build up again.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;So this is something that touches me very personal because I used to work on a solution that was exquisitely powerful, but therefore also very complicated and complex. And the moment you have automation, someone somewhere sometimes is going to be broken by it. And reestablishing that trust was never easy and sometimes impossible depending on the scale of failure that you&amp;rsquo;re well-intended means of automatically monitoring something I should have brought to the customer. Something that we seldom say as an industry, when we try to sell a product to somebody else, is that everything has a cost. If you want to take away complexity from you to roll out very simple systems and set up that thing, reports stuff over there, and you want it to automatically, there&amp;rsquo;s a higher risk that the automation will cause an issue. Of course, that in many cases is a justified risk. You can roll out the monitoring gradually and the easier it is to roll out a monitoring system at scale, the more you reach the holy grail of monitoring, that is the network effect. The moment that you can start observing how issues in systems propagate, correlate, or are not correlated there is something very important.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;So let&amp;rsquo;s talk a bit more about the characteristics of a good observability stack. We&amp;rsquo;ve already mentioned a few we&amp;rsquo;ve mentioned that, it should be independent as much as possible from the systems that they&amp;rsquo;re trying to monitor. We&amp;rsquo;ve also said that maybe we should also take into account the human side of things rather than just the technological. Maybe you should tailor the complexity of your observability stack to the size and experience and structure of your teams. What are some other things that you both could name in your ideal observability stack?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;One thing that I really like to highlight here is the ease of use or the economics of the system that you are using. I used to do a analogy to how EpiPens work for people with allergies. If you&amp;rsquo;re eating a peanut and you&amp;rsquo;re allergic to peanuts, you don&amp;rsquo;t want to have to assemble the cure for that, right. Or something that alleviates or takes you out of immediate danger. You need it to be simple, just as take it out, push it in your leg, and it&amp;rsquo;s done. You don&amp;rsquo;t have to think about it. The same goes for monitoring or observability systems as well I would say. If you have to, when you&amp;rsquo;re awakened by a notification in the middle of the night, and maybe you&amp;rsquo;re even hung over or worse, and you are supposed to fix something that is critical, and you have to start thinking about what to do, then your observability system has in my eyes, at least failed you, you need to be able to get a notification that says this is wrong, here&amp;rsquo;s the data that proves that, click here to get a closer look and just be presented with all the information you need to be able to make a decent decision on how to proceed.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;One thing recently on that note that I&amp;rsquo;ve come across is how potentially easy it is for a new Blake me to set up a whole observability stack or at least monitoring, but he could definitely expand upon it is EBPF, because we&amp;rsquo;ve been talking about distribution of systems and also of observability related services, but there&amp;rsquo;s also a trend of going lower and lower level, right? And EBPF monitoring is monitoring at the kernel level, recently with some people from the k6 team, Artem Charlie, Kevin, Danielle, Lopez, shout out to those guys. We did this hackathon project actually for EBPF monitoring. And the whole reason that I got into it was because the promise was you install this binary, you drop it into your cluster on your local machine. And then it just kind of exposes magically all of these things that I normally would have had to set up like node exporters for, you know, it was we&amp;rsquo;re living in a golden age of monitoring and observability I think. The things that are possible, like I can&amp;rsquo;t even keep up anymore, be talking about ergonomics. I mean, what is more ergonomic than not having to do much of anything.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You are talking about the day one, the fact that it is so easy to set up apart from monitoring system is exactly what you need to be able to monitor at scale. It removes the thought. EBPF is a fantastic technology. We are fundamentally given a virtual machine to run inside the kernel to execute logic, that allows us to do in a centralized place. Things that in the past were almost impossible. For example, the first thing I ever did with a team of vinyl in Stanhope with EBPF was actually to detect how a process that, that was impossible in user land. But with EBPF, it was actually pretty simple. We literally spent more time making sure that the techniques would work across all the operating systems that we need to support and to figure out how to find out that. EBPF the, I see two big potentials for that, for things that are not possible already today with sufficient tips. The first one is to give us a distributed tracing tool that largely independent from their own time. Now there are technology limitations there. It&amp;rsquo;s hard to find out how to trace context. I&amp;rsquo;m sure that someone somewhere out there is figuring it out as we speak, probably, that we reduce to some extent the toil that is necessary to support the federal fire hose of new technologies, libraries, and stuff like that is put in production every day. But the second one that excites me even more because the shoot the tracing is largely already possible is actually to have cheap enough in terms of overhead and consistent enough across run times production profiling. People look at distributed tracing as a way of figuring out what is slow. And it works remarkably well as long as the bottleneck is in between processes, the moment you want to drill down, why this requests into the insight, this process was taking too long. You see what you&amp;rsquo;re tracing is not so suited anymore. You end up looking at the leaf instead of the forest, because there is so many more requests going on through the system, that unless you have a lot of spans that are very, very detailed and fundamentally to trace threat level profiling, you are not going to which costs a huge amount of overhead. You are not going to have the information needed to find out, okay, good stock in the Dow library again. However, the moment that you have things, basically you have to find out where the CPU, memory or location, memory usage and wait time hotspots are in your application. You actually have the first places to work at to improve the overall system. It&amp;rsquo;s not gonna tell you why that request was going badly, but the moment you saw the hotspot, you are virtually guaranteed that many requests are going to get better. And then you can measure them again in terms of input output, observability tracing. Now people out there are going to say, Michele, what the hell are we talking about? Today we have a lot of amazing technologies to the production profile and they are true because for example, they are right because for example, if you look at the Java virtual machine with, for example, the Java flight recorder, you have excellent facilities with super low overhead to figure out what is your Java or cuddling or cradle program doing true. But they&amp;rsquo;re very specific to the particular run time and to a particular programming language. And when you start comparing what wait time, for example, looks like in Golang as respected over to machine with code routines, instead of, I dunno, loom threads, project loom, and all the rest of the stuff, you end up actually having telemetry that seems to say the same things, but in reality has a different semantic. And that is a challenge in our systems that have more and more grown polyglot. When we had the, our happy little monolith fault, it was one language. Now this year the systems are implementation of many different languages that behaves differently, and yet they are operated in some cases by roughly the same people, for example, necessarily teams, right? Having fluency in terms of performance across several languages is a significant challenge. Now, if we actually get through EBPF production profiling, for example, the folks behind parka and also the folks we have big pixie, there&amp;rsquo;s an amazing job there. If we manage to have something that will give us close enough, precise enough production, profiling information across whatever we may wanna throw into a container that is going to be a generational change in terms of making complex systems run better at scale.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;That&amp;rsquo;s something that we&amp;rsquo;re interested in at k6 as well. I mean, I&amp;rsquo;m a performance Sesser so the first thing I think of as the network side of it, there are a lot of network metrics that could be gathered at that level. And the reality now is that without EBPF, you&amp;rsquo;re in this position where each new service has needs some other exporter that you need to install. And like there&amp;rsquo;s so many plugins to plugins and many different combinations of things, when really they might all be using HTTP. Like, why don&amp;rsquo;t we have something that just detects, maybe not, it won&amp;rsquo;t be everything right. It&amp;rsquo;s never EBPF has never going to completely be able to, or, well, I shouldn&amp;rsquo;t say never because you know, that could change very quickly, but I don&amp;rsquo;t see it as being the end all be all solution. But if it can provide some of the more common metrics, that&amp;rsquo;s already a step in the right direction. Talk about usability and ergonomics right?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;And also provide a safe assessable baseline across a lot of different technologies working together.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yeah. For sure. What other things do you think would you have in your ideal observability stack?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You asked me?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Either of you?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Go ahead Michele, I don&amp;rsquo;t have a lot of ideas on that.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Well, actually, if you go on the, okay, can I make us most shield for a link? If you go on google, WWW.ubuntu.com/whatisobservability/whatisobservability. There you see a kind of overview of the things that I find most meaningful, monitoring different types of systems. Second, I&amp;rsquo;m gonna give here that your own.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;They can share my screen record.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I assume you want this one?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Awesome.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yes. So this page is fundamentally a work of love of Simme and I, about the way we see observe a PVT. And the diagram that you see on screen is a, of course, simplified and very generic can your manage me if I lie, but it is a thirst overview of the kind of telemetry that you use at different levels in your infrastructure in order to monitor things. This is important for filamentary two reasons. One, is to provide guidance for people that may be new to observability in terms of which things to focus first, when you look at the telemetry types that are used on the right hand side, you will see that metrics and logs are of course universal. That&amp;rsquo;s what we started with. They are very good. Every software that deserves to run somewhere is capable of emitting clogs. Most of them can emit metrics and more and more, thanks to primitives that is really proud. There are the metrics sometimes serious thing to the forefront of enterprise systems. It didn&amp;rsquo;t used to be that. Then you start seeing that profiling gets, for example, the moment you move above the virtualization hardware, and you start talking about processes and applications, profiling them makes perfect sense.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sorry Michele for cutting you off. But I think you might need to need to explain the icons.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;That is correct.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;That&amp;rsquo;s really. We don&amp;rsquo;t have that context.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ah, they don&amp;rsquo;t explain themselves. Maybe then you use amino the icons.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;So the chart that you see on the left hand side is metrics, mentors, time series fundamental. That&amp;rsquo;s what we use to monitor things. There&amp;rsquo;s a lot. Then the table with the reds and greens and yellows followed by text that locks, the old, that bar chart is actually supposed to be flamed charts and that&amp;rsquo;s profiling showing hotspots. The strange thing with all those horizontal bars that is distributed tracing, that is the best way I can come up with to visualize spans. Spans is the basic data structure in distributed tracing. It describes an action taken by system to process a request. For example, you would have a span for the receiver of an HTTP request. The span is opened is created when your HTTP server is receiving the request, it&amp;rsquo;s going to be closed, but it simply is doing amazing things to get to the image in a screen&amp;ndash;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Most of this you&amp;rsquo;ve probably seen in your browser, was what I was about to say, like something similar when you browse on webpage, you&amp;rsquo;d get this span alike view of how the different correlate.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It&amp;rsquo;s similar, but there is a key difference. One of the key concepts of distributed tracing as coming from dapper, which is fundamentally the progenitor of all modern distributed systems is the parent-child relation between spans, which is the closest you can get to cow&amp;rsquo;s reality. We are, for example, when your application is receiving an HTTP request and is issuing your query to Mongo to retrieve some data, you will have a parent&amp;rsquo;s span for the receiver of the HP request. And the child&amp;rsquo;s span that says, I spoke to Mongo, took me this longer. And this query, I got so many data back that is the parent-child relation. And it fundamentally, you would not have spoken to Mongo if not for the incoming request. Now things get Merck here when we talk about a synchronous messaging, because the beauty and simplicity of the trees of spans that you have in synchronous systems, kind of get lost with a messaging the moment that you have batch consumers. You&amp;rsquo;ll have many requests that result in a whole bunch of messaging being queued up in your messaging queue. And one application consuming messages originated in different traces all at once, fundamentally creating a merge, but I digress. I&amp;rsquo;m sorry. So we were talking about&amp;hellip; I just get so excited about this future tree.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No, it&amp;rsquo;s great. I know that you said that you have a hard stop and I&amp;rsquo;d like to get you off a little bit early for your meeting Michele, but why don&amp;rsquo;t you talk about what Canonical has to do with observability at all?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Well, can I call does a lot of things, including a very beloved operating system together with an amazing community of volunteers, Ubuntu, we are responsible for a huge amount of software. We have offerings for Kubernetes, for OpenStack, for SAF, for a lot of systems that people use to run their applications and data centers. And it is the mission of Simme and I to make sure that those systems come with excellent monitoring capabilities, that you can monitor them with open source software, whether or not you want to use the monitoring system that Canonical provides you. At the end of the day, what we&amp;rsquo;re doing is in variable source fashion. We want to make sure that all the appliances that you can get from Canonical, the SAF, the OpenStack, the Kubernetes is, there are the cube flows and all the machine learning. They are, you can monitor them with best-in-class open source monitoring tools like videos, like getting logs out of SIS log, the security traces with open telemetry, where it makes sense. And that is the part of the work of Simme and I, that is about stepping up the game in terms of making software provided by Canonical observable in a way that you can use, for example, with your existing monitoring system, we really believe every single word we say, when we say the metric, once France, it&amp;rsquo;s all about having radio systems be monitored together. Now, if you do not happen to have a radio monitoring system, wherever monitoring the rest, we can give you one, but if you have a monitoring system and you&amp;rsquo;re comfortable with it, you by all rights should be able to monitor whatever piece of software you get from Canonical with it. And this is what to do.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;That&amp;rsquo;s awesome. I wish we had more time to talk about this, but maybe we can have you both in some future episode, I feel like there&amp;rsquo;s so many things that I wanted to dig deeper into, but thank you both for coming.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Thank you so much.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I am so happy. Simme I&amp;rsquo;m so happy to have you back on again. I&amp;rsquo;ve always enjoyed doing these with you, so it&amp;rsquo;s a little bit weird that you&amp;rsquo;re now on as a guest, but I&amp;rsquo;m happy that you&amp;rsquo;re also bringing things that you&amp;rsquo;ve learned at Canonical back to us. And Michele welcome. I&amp;rsquo;d love to have you&amp;ndash;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Thank you.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Back again for sure with or without Simme.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Anytime. But Simme is finer yeah.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;All right. Thank you.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sure. Sure. Thank you everybody for watching and I guess we&amp;rsquo;ll see you next week. Bye everyone.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Bye, have a wonderful day.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>First Look at Estonia | Getting to Tallinn (Lucky Dippers)</title><link>https://nicolevanderhoeven.com/blog/20220120-first-look-at-estonia/</link><pubDate>Thu, 20 Jan 2022 20:36:59 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220120-first-look-at-estonia/</guid><description>&lt;p&gt;In December 2018, my husband and I met up with some friends and went from Valkenburg and Maastricht in the Netherlands to Riga, Latvia; and then to Tallinn, Estonia. Three countries in one day!&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/xMh_yLOAIKI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>An Overview of Software Testing</title><link>https://nicolevanderhoeven.com/blog/20220119-an-overview-of-software-testing/</link><pubDate>Wed, 19 Jan 2022 17:10:11 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220119-an-overview-of-software-testing/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/huiptd8Y2I0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="transcript"&gt;Transcript&lt;/h2&gt;
&lt;p&gt;NICOLE: What is the difference between good software and bad software? Is it features or user interface or marketing? In my totally biased opinion, what actually makes a difference is how well the software was tested. But software testing encompasses a lot of different areas and it doesn&amp;rsquo;t even always have to be someone with a word tester in their job title that does the testing. So whether you&amp;rsquo;re looking to get started in the industry, or just trying to cross skill, here&amp;rsquo;s an overview of the main types of software testing.&lt;/p&gt;
&lt;p&gt;Is it just me, or does your desk get that clutter too after a week of work?&lt;/p&gt;
&lt;p&gt;Anyway, software testing is the process of validating whether an application works as intended, but there&amp;rsquo;s a lot of vagueness in that statement. One of the broadest ways to categorize testing types though, is whether it&amp;rsquo;s functional or operational.&lt;/p&gt;
&lt;p&gt;Functional testing is more about application features. Is there a form to capture user email addresses? Is there a button next to it that submits those addresses? Once the button is clicked, where do the user details go? Do they go to the database? Are they stored correctly? Those are the sort of ways in which functional testers think. Operational testing traditionally called non-functional testing, is a way of verifying software quality and aspects that extend beyond the features of the application.&lt;/p&gt;
&lt;p&gt;Operational testing sometimes involves concerns that are more subjective or qualitative. So it can be a little bit more difficult to test, because those things only arise in certain conditions. I&amp;rsquo;m saying operational testing here, instead of non-functional testing, because I was talking to Paul Bruce who made an excellent video just on this topic. He talks about why the term nonfunctional requirement is really a bit of a misnomer.&lt;/p&gt;
&lt;p&gt;PAUL: It relegates all these other things, security, performance, installation, deployment, accessibility. It relegates them to a nice to have, so it should be functional versus operational.&lt;/p&gt;
&lt;p&gt;NICOLE: So I&amp;rsquo;m using his term operational testing instead.&lt;/p&gt;
&lt;p&gt;Here are the different forms of operational or non-functional testing.&lt;/p&gt;
&lt;p&gt;First there&amp;rsquo;s accessibility testing. It is involved with verifying that end users can consume or navigate content. Usually through assistive devices like screen readers. While most forms of testing begin with a statistically normal user in mind, accessibility testing seeks out outliers in terms of location, linguistic background and disability.&lt;/p&gt;
&lt;p&gt;Usability testing is designing with user experience in mind, specifically concerning the placement of on-screen elements and the intuitiveness of the process flow of an application.&lt;/p&gt;
&lt;p&gt;Localization testing is a way of making sure that applications are usable in the local context, in the sense of being colloquially appropriate for users in different countries and from different cultures.&lt;/p&gt;
&lt;p&gt;Security testing verifies that a system has no flaws that could be exploited, to gain access to confidential information or features that would not otherwise be accessed by expected means.&lt;/p&gt;
&lt;p&gt;So that was me talking from my home in the Netherlands, but this week I am in Portugal. The remote working life, am I right?&lt;/p&gt;
&lt;p&gt;But anyway, performance testing is my favorite topic and my favorite type of testing because that&amp;rsquo;s the one that I&amp;rsquo;ve had the most experience with. Performance testing is more qualitative. So it&amp;rsquo;s more about how well the application works. And there are two main types of performance testing and that&amp;rsquo;s front-end performance, and back-end performance testing.&lt;/p&gt;
&lt;p&gt;Front-end performance testing seeks to verify the user experience at the interface level. So that&amp;rsquo;s everything that the end user sees on their local machine.&lt;/p&gt;
&lt;p&gt;There are different approaches to front-end performance testing, and the first of them is performance profiling. Performance profiling involves running your application through a series of automated checks. And there are a lot of sites for this, where you just put in your URL, if it&amp;rsquo;s a web app, and you get a score in the end. That tells you how performance your application is, the most popular example for this and also the easiest to get started with, is DevTools because that&amp;rsquo;s already in Chrome and Firefox based browsers. But you can also go to sites like Webpagetest, or GTMetrix, YSlow, which is a plugin, or you can use Google Lighthouse, which is now included with Chrome Dev Tools.&lt;/p&gt;
&lt;p&gt;The next approach to front-end performance testing is called RUM or Real User Monitoring. So the difference is that with performance profiling, that&amp;rsquo;s often done manually, and as a one-off thing, like maybe at the beginning of a test or during, but Real User Monitoring is not usually done within testing environments. As the name suggests, these tools measure the experience of real users. So they have to be run in production. Examples of tools in this space are; New Relic&amp;rsquo;s RUM, Elastic has a RUM as well, there&amp;rsquo;s Catchpoint, SpeedCurve Uptrends and many more.&lt;/p&gt;
&lt;p&gt;And the third approach to measuring front-end performance is by using some sort of browser-based automation tool. So typically this has been something like Selenium, but that&amp;rsquo;s falling out of favor in terms of more modern solutions like Playwright, Puppeteer, Cypress and so on.&lt;/p&gt;
&lt;p&gt;So front-end performance is about everything that the user sees on their end, but back-end performance testing is about everything that they don&amp;rsquo;t see. It&amp;rsquo;s about the network. It&amp;rsquo;s about latency, the application servers, the way the infrastructure is set up and all of those things that are a little bit more difficult to look into, but can also have severe bottlenecks. Back-end performance testing seeks to verify aspects of an application such as scalability, elasticity, availability, reliability and responsiveness.&lt;/p&gt;
&lt;p&gt;Scalability is the application&amp;rsquo;s ability to respond to changes in demand. This could mean scaling up, which means increasing the resources available to a server, but it could also mean scaling out, meaning increasing the number of servers that are available to handle the application load.&lt;/p&gt;
&lt;p&gt;Elasticity is a related topic to scalability, except where scalability is all about scaling up or out. Elasticity also emphasize a scaling down or in, and that&amp;rsquo;s because having these services or servers available on the Cloud that are dynamically adjusting can also be quite expensive. So elasticity makes sure that the infrastructure that&amp;rsquo;s available or the resources available are always appropriate for the size of the demand. So when demand increases, elasticity also checks whether the application decreases it servers or resources in response to that.&lt;/p&gt;
&lt;p&gt;Availability is how long the application stays up, despite changing circumstances in production. So this is typically measured by uptime. Availability can also be tested using disaster recovery procedures, and you&amp;rsquo;re not just testing the application itself, but also the processes around it. So are there enough people that are on call so that they would be able to come in and troubleshoot when there&amp;rsquo;s a production incident? All of those things are included in application availability.&lt;/p&gt;
&lt;p&gt;Reliability checks to see how your application behaves in response to unexpected errors. Reliability basically takes it as a given that your application is going to fail somehow, sometime, maybe you don&amp;rsquo;t know exactly when that will be or how it will fail, but it&amp;rsquo;s going to happen. So a big part of reliability and site reliability engineering is trying to expose your application to those failures beforehand so that you can build confidence about how it will behave when those things actually happen in production.&lt;/p&gt;
&lt;p&gt;And the last aspect to back-end performance testing is responsiveness. And this is usually equated with load testing. Load testing is more of a technique for testing though. And really load tests can be used to test not just responsiveness, but also reliability or availability or scalability, basically any of the &amp;ldquo;ilities&amp;rdquo; in this part of back-end performance testing.&lt;/p&gt;
&lt;p&gt;Protocol-based load testing verifies the backend performance of an application, not by simulating real users accessing the application, but by simulating the underlying requests that go back and forth between the client or the user and the application servers. One of the benefits of protocol-based load testing is that it takes up fewer resources on the side of the load generator, and therefore is less expensive to run. Some popular protocol-based load testing tools are k6, JMeter, Gatling LoadRunner, NeoLoad, and Silk Performer.&lt;/p&gt;
&lt;p&gt;Browser-based load testing verifies the application by simulating real users accessing it. So it also has the benefit of including these front-end performance metrics. Browser-based testing can also be called browser-driven or UI-based testing. Some popular tools for browser-based load testing are Playwright, Puppeteer, Flood Element and as of a few weeks ago, k6.&lt;/p&gt;
&lt;p&gt;Then there&amp;rsquo;s hybrid load testing, which takes the best of protocol and browser-based load testing tools by combining them in one test. Now this can present some challenges, especially if you&amp;rsquo;re using different tools for the browser-based script, than you&amp;rsquo;re using for the protocol-based script. The ideal is to use your protocol based load testing tool, to simulate majority of the load to cut down on costs for the execution and scaling out of your load test. And then you run a handful of users using your browser based load testing tool. So you still get some metrics for front-end performance while that load is being applied by the protocol based tool.&lt;/p&gt;
&lt;p&gt;Testing software can be really daunting because there are many aspects of an application that you can test. But that&amp;rsquo;s because there&amp;rsquo;s also many aspects of an application that can fail. And that&amp;rsquo;s why all roads lead to testing and why the success of an app hinges on how well it&amp;rsquo;s been tested.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;d like to zero in, on load testing in particular, check out this video that I made on what load testing is. Thanks for watching. And like they say, here in Portugal, Obrigada!&lt;/p&gt;</description></item><item><title>How to Use Executors in k6: Adapting Load Test Workload Models to Production</title><link>https://nicolevanderhoeven.com/blog/20220118-how-to-use-executors-in-k6-adapting-load-test-workload-models-to-production/</link><pubDate>Tue, 18 Jan 2022 22:45:52 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220118-how-to-use-executors-in-k6-adapting-load-test-workload-models-to-production/</guid><description>&lt;p&gt;Executors in k6 are like traffic cops.&lt;/p&gt;
&lt;p&gt;They define the shape and volume of traffic that your k6 load testing script follows during test execution. Executors can also drastically affect your results if you don&amp;rsquo;t get them right.&lt;/p&gt;
&lt;p&gt;Here are all the executor options in k6 and when you should use each one:&lt;/p&gt;
&lt;h2 id="k6-executors"&gt;k6 executors&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;shared-iterations&lt;/em&gt;&lt;/strong&gt;: Fix the number of total iterations for the entire test. Use when you want to create precisely X rows of test data during a prep run.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;per-vu-iterations&lt;/em&gt;&lt;/strong&gt;: Fix the number of iterations each virtual user (VU) does. Use when you want each VU to use exactly X rows of test data.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;constant-vus&lt;/em&gt;&lt;/strong&gt;: Fix the number of VUs and duration, but allow the number of iterations to vary. Use for straightforward tests or shakeout tests.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;ramping-vus&lt;/em&gt;&lt;/strong&gt;: Set stages, each with a number of VUs and a duration, and let the number of iterations vary. Use for easiest comparison with other load testing tools and for custom load profiles.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;constant-arrival-rate&lt;/em&gt;&lt;/strong&gt;: Fix the number of requests per second (rps) and duration, and allow the number of VUs and iterations to vary. Use when you have a simple load profile with a request throughput requirement (rps).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;ramping-arrival rate&lt;/em&gt;&lt;/strong&gt;: Like &lt;strong&gt;&lt;em&gt;constant-arrival-rate&lt;/em&gt;&lt;/strong&gt;, but with stages. For each stage, fix the number of rps and duration. Use for spike tests, multiphase load profiles with distinct requirements, and Game Day simulations.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;externally-controlled&lt;/em&gt;&lt;/strong&gt;: Fix max VUs and time, and allow everything else to be changed at runtime. Use for disaster recovery, breakpoint, or stress tests where you want ultimate flexibility in adapting your test to real-time results.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="still-unsure"&gt;Still unsure?&lt;/h2&gt;
&lt;p&gt;Use &lt;strong&gt;&lt;em&gt;ramping-vus&lt;/em&gt;&lt;/strong&gt;. It&amp;rsquo;s probably what you&amp;rsquo;re used to from other tools.&lt;/p&gt;
&lt;p&gt;Ready to move up? Use &lt;strong&gt;&lt;em&gt;ramping-arrival-rate&lt;/em&gt;&lt;/strong&gt;. Rps is a better (but still not perfect) measure of throughput for comparison than just the number of VUs.&lt;/p&gt;
&lt;h2 id="when-in-doubt-look-at-production"&gt;When in doubt, look at production.&lt;/h2&gt;
&lt;p&gt;Making sure your test looks and acts like real traffic yields the best results!&lt;/p&gt;
&lt;p&gt;For more details, check out &lt;a href="https://k6.io/docs/using-k6/scenarios/#executors"&gt;the k6 documentation&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Testing tool cheat sheet for load testers who don't just care about numbers</title><link>https://nicolevanderhoeven.com/blog/20220117-testing-tool-cheat-sheet-for-load-testers-who-dont-just-care-about-numbers/</link><pubDate>Mon, 17 Jan 2022 16:30:07 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220117-testing-tool-cheat-sheet-for-load-testers-who-dont-just-care-about-numbers/</guid><description>&lt;p&gt;It&amp;rsquo;s not enough to decide &lt;em&gt;how much&lt;/em&gt; load you want to generate. You also have to know &lt;em&gt;how&lt;/em&gt; you&amp;rsquo;re generating it.&lt;/p&gt;
&lt;p&gt;Your approach affects what part of your application is tested, the results returned, and the budget you&amp;rsquo;ll need to run your test.&lt;/p&gt;
&lt;p&gt;Here are three main categories of load testing tools:&lt;/p&gt;
&lt;h2 id="protocol-based-load-testing-tools"&gt;Protocol-based load testing tools:&lt;/h2&gt;
&lt;p&gt;These tools simulate the underlying messages sent back and forth between an application and a client.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Choose a protocol-based tool if&lt;/em&gt;: you want to generate massive load, you want to load test before components are integrated, you want to test APIs, or you are budget-conscious.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Best in class tools&lt;/em&gt;: Gatling, JMeter, k6, Locust, Neoload&lt;/p&gt;
&lt;h2 id="browser-based-load-testing-tools"&gt;Browser-based load testing tools:&lt;/h2&gt;
&lt;p&gt;These tools automate real user interactions with an interface.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Choose a browser-based tool if:&lt;/em&gt; you want to measure end-to-end performance, you want to reuse your browser automation scripts, you want front-end performance metrics, or you have a higher budget.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Best in class tools:&lt;/em&gt; Cypress, Flood Element, k6, Playwright, Puppeteer&lt;/p&gt;
&lt;h2 id="hybrid-load-testing-tools"&gt;Hybrid load testing tools:&lt;/h2&gt;
&lt;p&gt;This approach is a mixture of the previous two. You can do this in a few ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use a protocol tool to generate the majority of the load, and a browser tool for a handful of virtual users &lt;em&gt;(best functionality, highest effort/cost)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Use a browser-based tool for all load &lt;em&gt;(expensive, simplest)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Find a tool that can do both &lt;em&gt;(ideal solution, few options)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="whatever-you-choose-compare-like-with-like"&gt;Whatever you choose, compare like with like.&lt;/h2&gt;
&lt;p&gt;Happy testing!&lt;/p&gt;</description></item><item><title>How to use Dataview and Templater to run JavaScript in Obsidian for automating task management</title><link>https://nicolevanderhoeven.com/blog/20220116-how-to-use-dataview-and-templater-to-run-javascript-in-obsidian/</link><pubDate>Sun, 16 Jan 2022 16:30:22 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220116-how-to-use-dataview-and-templater-to-run-javascript-in-obsidian/</guid><description>&lt;p&gt;TIL how to run JavaScript in @obsdmd. A friend of mine had an interesting use case: He had a long reading list from his studies, and wanted to use Obsidian to decide what he could read given a certain amount of time.&lt;/p&gt;
&lt;p&gt;TL;DR: &lt;a href="https://gist.github.com/nicolevanderhoeven/eccc6f910cdc48a5b7934b53a5a0f244"&gt;Here&amp;rsquo;s the script&lt;/a&gt;.
And here&amp;rsquo;s the end result:
&lt;img src="https://nicolevanderhoeven.com/assets/templater-demo.gif" alt="Gif of the full setup working" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;Requires: Obsidian. The Dataview and Templater plugins. Also requires a separate markdown page for every chapter or bite-sized section of the book or course, with the metadata &lt;code&gt;time_required&lt;/code&gt; in the YAML frontmatter.&lt;/p&gt;
&lt;p&gt;Why Dataview? Dataview can parse that frontmatter, grab the value for &lt;code&gt;time_required&lt;/code&gt;, and return a list of pages and links. There is a Dataview Query Language, but dataviewjs is more extensible.&lt;/p&gt;
&lt;p&gt;Why Templater? I initially wanted to write a script within a dataviewjs block, but:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dataview results are only rendered in Preview mode (which I don&amp;rsquo;t spend much time in)&lt;/li&gt;
&lt;li&gt;I hate testing JavaScript within Obsidian.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Instead, I created a folder &lt;code&gt;scripts&lt;/code&gt; within my vault and selected it as the &amp;ldquo;user scripts folder&amp;rdquo; in Templater settings. Then, I created a script, &lt;code&gt;returnStudyOptions.js&lt;/code&gt;. &lt;a href="https://gist.github.com/nicolevanderhoeven/eccc6f910cdc48a5b7934b53a5a0f244"&gt;Here&amp;rsquo;s the gist for that&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In a new note, I typed &lt;code&gt;&amp;lt;% tp.user.returnStudyOptions(tp, 60) %&amp;gt;&lt;/code&gt;. This line calls the script I created and also passes 60 minutes as the time available.&lt;/p&gt;
&lt;p&gt;I selected &amp;ldquo;Templater: Replace templates in the active file&amp;rdquo; from the Command Pane, which runs the script and replaces the line with the script&amp;rsquo;s returned value, which looks something like this:
&lt;img src="https://nicolevanderhoeven.com/assets/templater-result.png" alt="Screenshot of the notes returned by the script" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;I also assigned a hotkey to for replacing the template, for ease of use. That&amp;rsquo;s it! I thought this was a fun way to learn how to use JavaScript in Obsidian. Thanks to &lt;a href="https://twitter.com/ealameda"&gt;@ealameda&lt;/a&gt; for the use case!&lt;/p&gt;</description></item><item><title>Building a DM's Brain Attic</title><link>https://nicolevanderhoeven.com/blog/20220115-building-a-dms-brain-attic/</link><pubDate>Sat, 15 Jan 2022 16:45:22 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220115-building-a-dms-brain-attic/</guid><description>&lt;p&gt;Anyone other DMs have this problem? My TRPGs folder, containing paid third-party assets for D&amp;amp;D and other RPGs, is made up of 37,884 items (287 GB).&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how I make sure I actually get value out of this embarrassment of riches: 👇&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/trpgs.png" alt="Screenshot of my TRPGs folder with all my third-party items" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;Mike from &lt;a href="https://twitter.com/SlyFlourish"&gt;@SlyFlourish&lt;/a&gt; wrote an article applying Sherlock Holmes&amp;rsquo;s brain attic for lazy dungeon masters, and he called it the &amp;ldquo;[DM Brain Attic](&lt;a href="https://slyflourish.com/brain_attic.html%22"&gt;https://slyflourish.com/brain_attic.html&amp;quot;&lt;/a&gt;. The idea is to collect interesting techniques or ideas and file them away for later.&lt;/p&gt;
&lt;p&gt;Sounds like a good idea, but for most of us, this attic is theoretical. We read books, we watch videos, and we read blog posts on monsters and settings and plots, and we trust that they&amp;rsquo;ll all be saved somewhere in our heads.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s not how it works. Our minds are good at making connections, not remembering CRs from monster statblocks. So how do we make this DM Brain Attic less theoretical and more practical?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Read and take notes. If you haven&amp;rsquo;t read everything you&amp;rsquo;ve bought, you&amp;rsquo;re buying too much. Read what you&amp;rsquo;ve got and write down the parts that are actually relevant to you and your game. Here&amp;rsquo;s what mine looks like for the first Arcadia (@helloMCDM) issue.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/arcadia.png" alt="Screenshot of my notes on Arcadia issue 1" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Combine like with like. This is the hard part, because it involves creating a central place for monsters, items, spells, etc. &lt;a href="https://github.com/nicolevanderhoeven/xios-guide-to-monsters"&gt;This&lt;/a&gt; is my attempt to do this for monsters. It creates one page per monster that includes its source. Here&amp;rsquo;s a monster example.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/zombie.png" alt="Screenshot of a monster page" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s an example for items that includes SRD items and Vault of Magic Items (by &lt;a href="https://twitter.com/KoboldPress"&gt;@KoboldPress&lt;/a&gt;). Each one links to a page for the item with full details.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/vault-of-magic.png" alt="Screenshot of my page of items" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Resurface via search: You may have noticed the metadata in the previous page. The metadata gives me criteria to search monsters by. Here&amp;rsquo;s how I can query my monster database using the &lt;a href="https://github.com/blacksmithgu/obsidian-dataview"&gt;Dataview plugin&lt;/a&gt; for &lt;a href="https://obsidian.md"&gt;Obsidian&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/dataview-query.png" alt="Screenshot of a monster query using Dataview" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;And here&amp;rsquo;s the result of that query, returning monsters that fit my criteria and, importantly, which of my PDFs they come from.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/dataview-result.png" alt="Screenshot of the results from the Dataview query shown earlier" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Resurface via random table generators. Another way that I resurface content is by using random table generators using the &lt;a href="https://github.com/valentine195/obsidian-dice-roller"&gt;Dice Roller plugin&lt;/a&gt; for Obsidian by Jeremy Valentine. Here&amp;rsquo;s my NPC page, compiled from multiple sources.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/npc-rolls.png" alt="My NPC creation page with randomized traits" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;Each die icon can be clicked to generate a new &amp;ldquo;roll&amp;rdquo;. Here&amp;rsquo;s a gif for how that works, using stuff from Sly Flourish&amp;rsquo;s Uncovered Secrets, accessible to &lt;a href="https://www.patreon.com/slyflourish"&gt;his Patreons&lt;/a&gt;. Each click &amp;ldquo;rolls&amp;rdquo; on a table I&amp;rsquo;ve defined in a separate note.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/uncoveredsecrets_02.gif" alt="Gif of how my random tables created from Sly Flourish’s Uncovered Secrets" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;Is building a DM Brain Attic a lot of work? Yes.&lt;/p&gt;
&lt;p&gt;But how likely is it that I&amp;rsquo;d use my 287 GB of third-party stuff while preparing for my game if I didn&amp;rsquo;t have this system? Not very.&lt;/p&gt;
&lt;p&gt;At least this way, I&amp;rsquo;m using what I&amp;rsquo;ve actually bought and putting good content into a very real DM&amp;rsquo;s Brain Attic that I can actually scrounge around for good ideas in, before or during a game.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;d like to know more, check out this video I made about how I use Obsidian to run and play D&amp;amp;D online:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/3pt6_srUZ7U?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Six Performance Testing Hats</title><link>https://nicolevanderhoeven.com/blog/20220114-six-performance-testing-hats/</link><pubDate>Fri, 14 Jan 2022 16:30:34 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220114-six-performance-testing-hats/</guid><description>&lt;p&gt;I was reading &lt;a href="https://amzn.to/3tvLYM9"&gt;Six Thinking Hats&lt;/a&gt; by Edward de Bono when I realized that the premise could be applied to performance testing:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://nicolevanderhoeven.com/assets/six-performance-testing-hats.png" alt="The Six Performance Testing Hats" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;Each hat represents a different way of thinking, which can be useful when working through issues. Sometimes, wearing only one hat can cause us to fixate on incorrect assumptions, and &amp;ldquo;putting on another hat&amp;rdquo; can help shake things up and get to actually fixing what went wrong.&lt;/p&gt;</description></item><item><title>Financial Independence Isn't Just for Old People</title><link>https://nicolevanderhoeven.com/blog/20220113-financial-independence-isnt-just-for-old-people/</link><pubDate>Thu, 13 Jan 2022 16:43:46 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220113-financial-independence-isnt-just-for-old-people/</guid><description>&lt;p&gt;5 years ago, at age 31, I became financially independent.&lt;/p&gt;
&lt;p&gt;Financial independence (FI) means that if I wanted to retire tomorrow, I could. I&amp;rsquo;d have to make significant changes to my life to do it, but I&amp;rsquo;d have a plan, and enough resources at hand to get by.&lt;/p&gt;
&lt;p&gt;Unfortunately, just talking about FI is uncommon at best and taboo at worst, even in an industry with higher-than-average salaries like tech.&lt;/p&gt;
&lt;p&gt;You might be thinking that I received some sort of inheritance or unexpected windfall. The truth is that 10 years ago, my husband and I were in credit card debt and had no major assets. Now he&amp;rsquo;s retired, and I have a job I love.&lt;/p&gt;
&lt;p&gt;The funny thing is, there&amp;rsquo;s really nothing magical about how we got here.&lt;/p&gt;
&lt;h2 id="heres-how-you-can-do-it-too"&gt;Here&amp;rsquo;s how you can do it too.&lt;/h2&gt;
&lt;h3 id="step-1-track-your-money"&gt;&lt;strong&gt;Step 1: Track your money.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;You can&amp;rsquo;t fix something you aren&amp;rsquo;t monitoring.&lt;/p&gt;
&lt;p&gt;To this day, my husband and I use (&lt;a href="http://youneedabudget.com"&gt;YNAB&lt;/a&gt;) to track every cent of our money, whether we&amp;rsquo;re saving it or spending it. When your financial situation is right there in black and white, it&amp;rsquo;s hard to ignore.&lt;/p&gt;
&lt;h3 id="step-2-reduce-your-expenses"&gt;&lt;strong&gt;Step 2: Reduce your expenses.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Too many people focus on earning more, when the reality is that it&amp;rsquo;s far easier to adjust what you&amp;rsquo;re &lt;em&gt;spending&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;You can afford (almost) anything, but you can&amp;rsquo;t afford everything&amp;ndash; so figure out what matters. Reducing your expenses is even better than getting a raise. Do regular audits of fixed expenses. If you have a partner, consider living on less than one income and banking the other entirely.&lt;/p&gt;
&lt;h3 id="step-3-automate-investments"&gt;&lt;strong&gt;Step 3: Automate investments.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Set up a recurring monthly payment for a painful amount of money. Invest in low-cost ETFs like Vanguard&amp;rsquo;s &lt;em&gt;and then forget about them&lt;/em&gt;. Resign yourself to living at your current lifestyle level (or lower), and don&amp;rsquo;t live it up when you get a raise.&lt;/p&gt;
&lt;p&gt;And for those who want a goal post, as I did: &lt;strong&gt;Actually calculate the minimum amount you&amp;rsquo;d need to retire&lt;/strong&gt;. It may be less than you think.&lt;/p&gt;
&lt;p&gt;Money isn&amp;rsquo;t everything, but it can be. To someone who doesn&amp;rsquo;t have it, money can buy freedom.&lt;/p&gt;</description></item><item><title>What Tabletop Games Teach Us About Application Perfomance</title><link>https://nicolevanderhoeven.com/blog/20220112-what-tabletop-games-teach-us-about-application-perfomance/</link><pubDate>Wed, 12 Jan 2022 16:30:29 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220112-what-tabletop-games-teach-us-about-application-perfomance/</guid><description>&lt;p&gt;Tabletop games and application performance have more in common than you might think.&lt;/p&gt;
&lt;p&gt;See, it&amp;rsquo;s all about optimization. Both involve juggling several variables: some that you can control, and some that you can&amp;rsquo;t.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s what I&amp;rsquo;ve learned about application performance from playing tabletop games.&lt;/p&gt;
&lt;h2 id="1-get-more-workers"&gt;#1: Get more workers&lt;/h2&gt;
&lt;p&gt;In worker placement games, you should always spend your first worker to train more workers.&lt;/p&gt;
&lt;p&gt;Similarly, one of the most basic ways to increase concurrency is multithreading: using more than one thread at a time. (See: Golang) This applies to testing tools as much as to systems. The 1 Thread: 1 Virtual User paradigm is flawed.&lt;/p&gt;
&lt;h2 id="2-spend-time-on-getting-your-engine-going"&gt;#2: Spend time on getting your engine going&lt;/h2&gt;
&lt;p&gt;Get your big combos in place before you tap to attack.&lt;/p&gt;
&lt;p&gt;Things like setting up automation frameworks or CI/CD pipelines DO set you back in the beginning, but they are worth their mana cost in the long run.&lt;/p&gt;
&lt;h2 id="3draft-with-others-in-mind"&gt;#3: Draft with others in mind&lt;/h2&gt;
&lt;p&gt;The trick to drafting is knowing what you&amp;rsquo;re leaving for others as much as what you&amp;rsquo;re taking for yourself.&lt;/p&gt;
&lt;p&gt;The short game is getting your team to do the testing. The long game is getting everyone in the company involved in testing.&lt;/p&gt;
&lt;h2 id="4-hope-for-a-nat-20-plan-for-a-nat-1"&gt;#4: Hope for a nat 20, plan for a nat 1&lt;/h2&gt;
&lt;p&gt;Sometimes proficiency, expertise, and a luckstone just aren&amp;rsquo;t enough.&lt;/p&gt;
&lt;p&gt;Instead of wondering &lt;em&gt;whether&lt;/em&gt; an app will fail, take for granted that it will, and start planning for it. Keep that Action Surge in your back pocket.&lt;/p&gt;
&lt;h2 id="5-sometimes-you-just-have-to-trade-for-sheep"&gt;#5: Sometimes, you just have to trade for sheep&lt;/h2&gt;
&lt;p&gt;The 2:1 port is valuable, but not always the best option.&lt;/p&gt;
&lt;p&gt;Learn what you can, but accept that you can&amp;rsquo;t learn it all. Reach out to others with compatible skillsets and ask the &amp;ldquo;stupid&amp;rdquo; questions that nobody else wants to ask.&lt;/p&gt;
&lt;h2 id="testing-is-a-team-sport-and-everyone-gets-a-chance-to-play"&gt;Testing is a team sport, and everyone gets a chance to play.&lt;/h2&gt;
&lt;p&gt;Happy gaming!&lt;/p&gt;</description></item><item><title>The Tester's Toolbox Is Flawed</title><link>https://nicolevanderhoeven.com/blog/20220111-the-testers-toolbox-is-flawed/</link><pubDate>Tue, 11 Jan 2022 16:30:49 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220111-the-testers-toolbox-is-flawed/</guid><description>&lt;p&gt;Every tester has a toolbox.&lt;/p&gt;
&lt;p&gt;In the toolbox rests a variety of tools for every conceivable purpose. Part of our job, as testers, is to choose the right one for the job. Sounds reasonable, right?&lt;/p&gt;
&lt;p&gt;That kind of thinking could be dangerous.&lt;/p&gt;
&lt;h2 id="the-right-tool-for-every-job-fails-for-multiple-jobs"&gt;&amp;ldquo;The right tool for every job&amp;rdquo; fails for multiple jobs.&lt;/h2&gt;
&lt;p&gt;You end up with multiple tools. One for accessibility testing. Another for API testing. Another for browser testing. Another for load testing. &lt;em&gt;This is the modern tester&amp;rsquo;s dilemma&lt;/em&gt;: we spend more time working with our tools than with the application under test.&lt;/p&gt;
&lt;p&gt;In the real world, including a new tool in your testing stack means a new framework, usually a new programming language, and sometimes even new colleagues with experience in those tools. And what about continuous testing? All those tools have to talk to each other at some point.&lt;/p&gt;
&lt;p&gt;More tools = more time, effort, and money.&lt;/p&gt;
&lt;h3 id="when-choosing-tools-prioritize-multitools"&gt;&lt;strong&gt;When choosing tools, prioritize multitools.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;A multitool can be used for different purposes and prioritizes flexibility.&lt;/p&gt;
&lt;p&gt;Here are a few ways to spot a multitool:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;#1: It is a polymath.&lt;/strong&gt; A multitool is good at many things and is limited in use case only by the imagination of those that use it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;#2: It uses what you know.&lt;/strong&gt; A multitool is built on languages and frameworks you and your team already know, reducing ramp-up time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;#3 It plays well with others.&lt;/strong&gt; A multitool doesn&amp;rsquo;t force you to use it to the exclusion of everything else. It integrates well with best-in-class tools.&lt;/p&gt;
&lt;p&gt;When you optimize for individual jobs, you&amp;rsquo;re missing the big picture. You&amp;rsquo;re ultimately left holding the ends of multiple tools and creating a kraken of a test suite with all these tools cobbled together.&lt;/p&gt;
&lt;p&gt;Instead, prioritize multitools.&lt;/p&gt;</description></item><item><title>Obsidian for the Uninitiated</title><link>https://nicolevanderhoeven.com/blog/20220110-obsidian-for-the-uninitiated/</link><pubDate>Mon, 10 Jan 2022 23:07:06 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220110-obsidian-for-the-uninitiated/</guid><description>&lt;h1 id="obsidian-for-the-uninitiated"&gt;Obsidian for the Uninitiated&lt;/h1&gt;
&lt;p&gt;You&amp;rsquo;ve installed Obsidian and created a new vault. Now what?&lt;/p&gt;
&lt;p&gt;Unfortunately, it can be more than a little daunting to get started with. It doesn&amp;rsquo;t help that there are terms like &lt;em&gt;Zettelkasten&lt;/em&gt; and &lt;em&gt;Maps of Content&lt;/em&gt; and &lt;em&gt;fleeting notes&lt;/em&gt; and &lt;em&gt;digital garden&lt;/em&gt; that are all just trying to structure what we all learned to do in primary school.&lt;/p&gt;
&lt;h2 id="start-by-logging-what-youre-doing"&gt;Start by logging what you&amp;rsquo;re doing.&lt;/h2&gt;
&lt;p&gt;Having a rigid structure does wonders for curtailing creativity and plain fun. Instead, I recommend starting small.&lt;/p&gt;
&lt;p&gt;Here are some small steps to take after installing Obsidian:&lt;/p&gt;
&lt;h3 id="step-1-enable-the-daily-notes-plugin"&gt;&lt;strong&gt;Step 1: Enable the Daily Notes plugin&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The most game-changing feature of Obsidian is plugins.&lt;/p&gt;
&lt;p&gt;Go into Settings &amp;gt; Core Plugins, and enable the &lt;em&gt;Daily notes&lt;/em&gt; plugin.&lt;/p&gt;
&lt;p&gt;Then, exit out of the dialog boxes and hit CMD P (Mac) or CTRL P (Windows) to bring up the command pane. Search for and select &lt;em&gt;Daily notes: Open today&amp;rsquo;s daily note&lt;/em&gt;. That creates a new note in your vault with today&amp;rsquo;s date.&lt;/p&gt;
&lt;p&gt;From now on, do this every day and log things you do during the day: things to do, appointments to keep, videos you watched.&lt;/p&gt;
&lt;h3 id="step-2-the-next-time-you-consume-content-take-notes"&gt;&lt;strong&gt;Step 2: The next time you consume content, take notes.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Now, the next time you read or watch something interesting, type its title into Obsidian with brackets:&lt;code&gt;[[Cool video I watched]]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s now a link. CMD+click on that link, or click the glasses icon on the top right to switch to Preview mode, and then click on the link. You should now have a new note. Write about what you thought of the video.&lt;/p&gt;
&lt;h3 id="step-3-start-identifying-and-fleshing-out-ideas"&gt;&lt;strong&gt;Step 3: Start identifying and fleshing out ideas.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Keep going with these steps and every now and then, start to identify cool ideas you come across. Create new notes from them just like you did in Step 2. Don&amp;rsquo;t worry about getting it all; just do it when and until you feel like it.&lt;/p&gt;
&lt;p&gt;These three simple steps, over time, will be the foundations of your own Personal Knowlege Management system with Obsidian.&lt;/p&gt;</description></item><item><title>5 Ways to Use Obsidian as a Software Engineer</title><link>https://nicolevanderhoeven.com/blog/20220109-5-ways-to-use-obsidian-as-a-software-engineer/</link><pubDate>Sun, 09 Jan 2022 19:20:49 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220109-5-ways-to-use-obsidian-as-a-software-engineer/</guid><description>&lt;p&gt;Yesterday, I wrote about why I think taking notes is the surprising foundation of a tester&amp;rsquo;s career.&lt;/p&gt;
&lt;p&gt;But it&amp;rsquo;s not just testers. Every software engineer is a knowledge worker, and that means we get paid for what we know. Using a Personal Knowledge Management (PKM) system such as &lt;a href="http://Obsidian.md"&gt;Obsidian.md&lt;/a&gt; helps us keep up with the constant barrage of new ideas in tech.&lt;/p&gt;
&lt;p&gt;Here are 5 things I use Obsidian for.&lt;/p&gt;
&lt;h2 id="1-my-very-own-stack-overflow"&gt;#1: My very own Stack Overflow&lt;/h2&gt;
&lt;p&gt;If you code, you&amp;rsquo;ve used Stack Overflow.&lt;/p&gt;
&lt;p&gt;What if you had your &lt;strong&gt;own&lt;/strong&gt; Stack Overflow, one that contained cheat sheets of every language you&amp;rsquo;ve ever tried to hack something up in, including only commands relevant to your job? This is exactly &lt;a href="https://notes.nicolevanderhoeven.com/Python"&gt;what I&amp;rsquo;ve done for Python&lt;/a&gt; recently, and it&amp;rsquo;s helping me solidify my knowledge.&lt;/p&gt;
&lt;h2 id="2-tools-database"&gt;#2: Tools database&lt;/h2&gt;
&lt;p&gt;There&amp;rsquo;s a tool for everything.&lt;/p&gt;
&lt;p&gt;To keep them straight, I have a page for every load testing tool I try, with tutorials for how to get started, an assessment of its features, and observations I had while attempting to learn it. &lt;a href="https://notes.nicolevanderhoeven.com/k6+(tool)"&gt;Here&amp;rsquo;s what I have for the load testing tool k6&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Bonus: I also use &lt;a href="https://github.com/blacksmithgu/obsidian-dataview"&gt;the Dataview plugin&lt;/a&gt; to query tools that fit my criteria.&lt;/p&gt;
&lt;h2 id="3-an-agile-workspace"&gt;#3: An Agile workspace&lt;/h2&gt;
&lt;p&gt;If Agile is good enough for my professional work, it&amp;rsquo;s good enough for my personal work.&lt;/p&gt;
&lt;p&gt;I use the &lt;a href="https://github.com/mgmeyers/obsidian-kanban"&gt;Kanban plugin&lt;/a&gt; to keep track of projects, create weekly and monthly review/retro templates, and work iteratively using &lt;a href="https://github.com/bjsi/incremental-writing"&gt;the Incremental Writing plugin&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="4-a-public-learning-log"&gt;#4: A public learning log&lt;/h2&gt;
&lt;p&gt;Learning in public is the fastest way to improve.&lt;/p&gt;
&lt;p&gt;When I&amp;rsquo;m trying to figure something out, I document my attempts. With Obsidian Publish, I can quickly push this log out to my domain and share them with colleagues to get a quick review so that they can easily follow my train of thought and tell me where I went wrong.&lt;/p&gt;
&lt;h2 id="5-a-digital-garden-of-software-ideas"&gt;#5: A digital garden of software ideas&lt;/h2&gt;
&lt;p&gt;Build libraries, not feeds.&lt;/p&gt;
&lt;p&gt;I use Obsidian to save things I read/watch/listen to but also to save space for ideas I&amp;rsquo;ve learned to germinate. I publish notes before they&amp;rsquo;re fully fleshed out, with the goal of growing everything over time.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://notes.nicolevanderhoeven.com"&gt;Today, I have 4,567 notes&lt;/a&gt;, all about things that matter to me.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Every engineer should have a PKM system.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Take Notes, Not Tools</title><link>https://nicolevanderhoeven.com/blog/20220108-take-notes-not-tools/</link><pubDate>Sat, 08 Jan 2022 17:00:44 +0100</pubDate><guid>https://nicolevanderhoeven.com/blog/20220108-take-notes-not-tools/</guid><description>&lt;p&gt;When I first got into testing, I thought that testing was about learning different tools and frameworks.&lt;/p&gt;
&lt;p&gt;I learned how to use Neoload, then LoadRunner, then JMeter, and then SeleniumSilkPerformerVisualStudioGatlingPuppeteerPlaywrightk6 in short succession. I took courses on JavaScript, on C, on Java. I ticked off tools like a grocery list.&lt;/p&gt;
&lt;p&gt;It didn&amp;rsquo;t take me long to realize that I still wasn&amp;rsquo;t a good tester.&lt;/p&gt;
&lt;h2 id="taking-notes-not-tools-is-what-makes-a-good-tester"&gt;Taking notes, not tools, is what makes a good tester.&lt;/h2&gt;
&lt;p&gt;When you think about it, a lot of things a tester does revolves around taking good notes.&lt;/p&gt;
&lt;p&gt;Requirements are just notes on what the business wants to achieve. Test scenarios are notes on situations that the team wants to simulate. Test cases are notes on how a user would use an application. Defects are notes on issues.&lt;/p&gt;
&lt;p&gt;The quality of a tester&amp;rsquo;s notes dictates the quality of their work.&lt;/p&gt;
&lt;h3 id="listen-to-people-not-tool-tutorials"&gt;&lt;strong&gt;Listen to people, not tool tutorials&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Take notes on what users do.&lt;/strong&gt; Talk to the business. Pore through Google Analytics logs. Piece together a story of the kind of people who use your application, and how they use it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Take notes on problem areas.&lt;/strong&gt; Talk to customer support about the most common questions they get&amp;ndash; they know more about pain points than anyone else in the company. Talk to the ops engineers who were on call during the last production incident. These problems are what you&amp;rsquo;ll need to test later.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Take notes on what you&amp;rsquo;ve learned.&lt;/strong&gt; If you don&amp;rsquo;t like learning, you&amp;rsquo;re in the wrong field. Document everything, even things you think you&amp;rsquo;ll never forget, because one day, you WILL forget.&lt;/p&gt;
&lt;p&gt;Taking notes, not tools, is the foundation every testing career is built on.&lt;/p&gt;</description></item></channel></rss>