<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Cello's Blog]]></title><description><![CDATA[Smart Home. Cyber Security. Software Craftmanship. Nerdy Stuff.]]></description><link>https://www.cellos.blog</link><image><url>https://substackcdn.com/image/fetch/$s_!YLv8!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50a47524-0e9a-4c35-a576-555b0c37c3f2_400x400.png</url><title>Cello&apos;s Blog</title><link>https://www.cellos.blog</link></image><generator>Substack</generator><lastBuildDate>Sun, 26 Apr 2026 12:03:57 GMT</lastBuildDate><atom:link href="https://www.cellos.blog/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Marcel Neumann]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[info@cellos.blog]]></webMaster><itunes:owner><itunes:email><![CDATA[info@cellos.blog]]></itunes:email><itunes:name><![CDATA[Marcel Neumann]]></itunes:name></itunes:owner><itunes:author><![CDATA[Marcel Neumann]]></itunes:author><googleplay:owner><![CDATA[info@cellos.blog]]></googleplay:owner><googleplay:email><![CDATA[info@cellos.blog]]></googleplay:email><googleplay:author><![CDATA[Marcel Neumann]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Building a DIY Advent Calendar powered by Home Assistant]]></title><description><![CDATA[24 days of Bibi Blocksberg]]></description><link>https://www.cellos.blog/p/building-a-diy-advent-calendar-powered-by-home-assistant</link><guid isPermaLink="false">https://www.cellos.blog/p/building-a-diy-advent-calendar-powered-by-home-assistant</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Tue, 11 Nov 2025 11:50:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vt9b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bf3c92c-6d27-4d54-89fe-6ffe9b7ae0fb_4000x3000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Christmas is coming!</strong></p><p>That also means it&#8217;s time once again to fill Advent calendars for the kids. This year, I came up with something very special for my daughter: <strong>a smart audio Advent calendar powered by Home Assistant!</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vt9b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bf3c92c-6d27-4d54-89fe-6ffe9b7ae0fb_4000x3000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vt9b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bf3c92c-6d27-4d54-89fe-6ffe9b7ae0fb_4000x3000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vt9b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bf3c92c-6d27-4d54-89fe-6ffe9b7ae0fb_4000x3000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vt9b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bf3c92c-6d27-4d54-89fe-6ffe9b7ae0fb_4000x3000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vt9b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bf3c92c-6d27-4d54-89fe-6ffe9b7ae0fb_4000x3000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vt9b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bf3c92c-6d27-4d54-89fe-6ffe9b7ae0fb_4000x3000.jpeg" width="1456" height="1941" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9bf3c92c-6d27-4d54-89fe-6ffe9b7ae0fb_4000x3000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1941,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4579296,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/178586753?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bf3c92c-6d27-4d54-89fe-6ffe9b7ae0fb_4000x3000.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vt9b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bf3c92c-6d27-4d54-89fe-6ffe9b7ae0fb_4000x3000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vt9b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bf3c92c-6d27-4d54-89fe-6ffe9b7ae0fb_4000x3000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vt9b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bf3c92c-6d27-4d54-89fe-6ffe9b7ae0fb_4000x3000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vt9b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bf3c92c-6d27-4d54-89fe-6ffe9b7ae0fb_4000x3000.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Some time ago, I built my daughter her own music box. The box is based on <em>ESPHome</em>, recognizes when <em>NFC</em> tags are placed on it, and then starts an album via <em>Home Assistant</em> &#8594; <em>Music Assistant</em> &#8594; <em>Spotify</em> on a <em>SONOS</em> speaker. I packed the whole thing into a <em>LEGO</em> case and attached a few buttons &#8212; basically a DIY <em>Toniebox</em>. Since so many people have asked about the <em>LEGO</em> version, I still owe you a separate blog post on that. But you can find the guide to the first version <a href="https://www.cellos.blog/p/spotify-made-my-daughter-cry-home-assistant-made-her-smile-again">here</a>.</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5efa0ebb-02d0-420f-b5f0-b26e60f2762f_720x540.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84d2dda6-566e-4830-b86d-8b443e123aec_720x540.jpeg&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b8dbed0-ca17-43d5-8f0b-45390f26cf3f_1456x720.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p>The box is used daily. Unfortunately, she&#8217;s been playing Christmas music every day since September. Anyway, she&#8217;s a huge fan of the German audio series <em>Bibi Blocksberg</em>. And as it happens, there&#8217;s even a <strong><a href="https://amzn.to/4nMWWVG">Bibi Blocksberg Advent calendar episode</a></strong>! That&#8217;s when the idea hit me: I could make her a special <em>NFC</em> card for the box just for that.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vSt5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289230f0-f6f4-4d39-9649-9dfa71ecbbab_4000x3000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vSt5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289230f0-f6f4-4d39-9649-9dfa71ecbbab_4000x3000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vSt5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289230f0-f6f4-4d39-9649-9dfa71ecbbab_4000x3000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vSt5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289230f0-f6f4-4d39-9649-9dfa71ecbbab_4000x3000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vSt5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289230f0-f6f4-4d39-9649-9dfa71ecbbab_4000x3000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vSt5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289230f0-f6f4-4d39-9649-9dfa71ecbbab_4000x3000.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/289230f0-f6f4-4d39-9649-9dfa71ecbbab_4000x3000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2732745,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/178586753?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289230f0-f6f4-4d39-9649-9dfa71ecbbab_4000x3000.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vSt5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289230f0-f6f4-4d39-9649-9dfa71ecbbab_4000x3000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vSt5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289230f0-f6f4-4d39-9649-9dfa71ecbbab_4000x3000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vSt5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289230f0-f6f4-4d39-9649-9dfa71ecbbab_4000x3000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vSt5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289230f0-f6f4-4d39-9649-9dfa71ecbbab_4000x3000.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The problem, though, is that she wouldn&#8217;t stop after the first chapter. She&#8217;d binge the entire story on December 1st. And that&#8217;s definitely not the point of an Advent calendar...</p><p>To avoid that, I needed to give her one card per day. But since the cards are a bit too expensive, I found a cheaper alternative: <em><a href="https://amzn.to/486Cgn3">24 NFC chips</a></em>. I numbered them from 1 to 24 with a marker and mapped each tag ID to a single track on <em>Spotify</em>.</p><p>Result: Each chip plays only one chapter.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3hvP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573e00b5-a3d4-4657-96db-7243410fc0a4_4000x3000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3hvP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573e00b5-a3d4-4657-96db-7243410fc0a4_4000x3000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3hvP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573e00b5-a3d4-4657-96db-7243410fc0a4_4000x3000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3hvP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573e00b5-a3d4-4657-96db-7243410fc0a4_4000x3000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3hvP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573e00b5-a3d4-4657-96db-7243410fc0a4_4000x3000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3hvP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573e00b5-a3d4-4657-96db-7243410fc0a4_4000x3000.jpeg" width="1456" height="1941" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/573e00b5-a3d4-4657-96db-7243410fc0a4_4000x3000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1941,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4159563,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/178586753?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573e00b5-a3d4-4657-96db-7243410fc0a4_4000x3000.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3hvP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573e00b5-a3d4-4657-96db-7243410fc0a4_4000x3000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3hvP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573e00b5-a3d4-4657-96db-7243410fc0a4_4000x3000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3hvP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573e00b5-a3d4-4657-96db-7243410fc0a4_4000x3000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3hvP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F573e00b5-a3d4-4657-96db-7243410fc0a4_4000x3000.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We put the chips into a regular Advent calendar &#8212; in our case, <a href="https://amzn.to/499BTt3">a </a><em><a href="https://amzn.to/499BTt3">Haribo</a></em><a href="https://amzn.to/499BTt3"> one</a>. I took the gummy bears for myself, of course. But don&#8217;t worry, my daughter also gets a regular <em>analog</em> calendar with sweets. The chips are placed into the doors, which can then be resealed.</p><p>And there you have it &#8212; <strong>the smart audio Advent calendar!</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BTcr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a3e11d-83b4-4802-8d29-33896f014644_4000x3000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BTcr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a3e11d-83b4-4802-8d29-33896f014644_4000x3000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BTcr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a3e11d-83b4-4802-8d29-33896f014644_4000x3000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BTcr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a3e11d-83b4-4802-8d29-33896f014644_4000x3000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BTcr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a3e11d-83b4-4802-8d29-33896f014644_4000x3000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BTcr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a3e11d-83b4-4802-8d29-33896f014644_4000x3000.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/09a3e11d-83b4-4802-8d29-33896f014644_4000x3000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3189224,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/178586753?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a3e11d-83b4-4802-8d29-33896f014644_4000x3000.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BTcr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a3e11d-83b4-4802-8d29-33896f014644_4000x3000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BTcr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a3e11d-83b4-4802-8d29-33896f014644_4000x3000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BTcr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a3e11d-83b4-4802-8d29-33896f014644_4000x3000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BTcr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a3e11d-83b4-4802-8d29-33896f014644_4000x3000.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>On December 24th, she&#8217;ll get the full episode card. Afterwards, I&#8217;ll collect the chips. If the idea is a hit, I can easily recycle them next year for another story.</p>]]></content:encoded></item><item><title><![CDATA[Building a Second Brain in Obsidian ]]></title><description><![CDATA[My Workflow for Cyber Security & Software Engineering Notes]]></description><link>https://www.cellos.blog/p/building-a-second-brain-in-obsidian</link><guid isPermaLink="false">https://www.cellos.blog/p/building-a-second-brain-in-obsidian</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Thu, 04 Sep 2025 07:44:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!QpwQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03fe778c-980c-49b1-8632-3d04df3b6697_744x765.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As a software engineer, cyber security student, and father of two, I constantly juggle a lot of information. There are too many things to remember, and my brain simply can&#8217;t handle it alone.  </p><p>Fortunately, I have a <strong>second brain </strong>right inside Obsidian.  </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QpwQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03fe778c-980c-49b1-8632-3d04df3b6697_744x765.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QpwQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03fe778c-980c-49b1-8632-3d04df3b6697_744x765.png 424w, https://substackcdn.com/image/fetch/$s_!QpwQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03fe778c-980c-49b1-8632-3d04df3b6697_744x765.png 848w, https://substackcdn.com/image/fetch/$s_!QpwQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03fe778c-980c-49b1-8632-3d04df3b6697_744x765.png 1272w, https://substackcdn.com/image/fetch/$s_!QpwQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03fe778c-980c-49b1-8632-3d04df3b6697_744x765.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QpwQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03fe778c-980c-49b1-8632-3d04df3b6697_744x765.png" width="728" height="748.5483870967741" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/03fe778c-980c-49b1-8632-3d04df3b6697_744x765.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:765,&quot;width&quot;:744,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:284340,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/172673543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03fe778c-980c-49b1-8632-3d04df3b6697_744x765.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QpwQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03fe778c-980c-49b1-8632-3d04df3b6697_744x765.png 424w, https://substackcdn.com/image/fetch/$s_!QpwQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03fe778c-980c-49b1-8632-3d04df3b6697_744x765.png 848w, https://substackcdn.com/image/fetch/$s_!QpwQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03fe778c-980c-49b1-8632-3d04df3b6697_744x765.png 1272w, https://substackcdn.com/image/fetch/$s_!QpwQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03fe778c-980c-49b1-8632-3d04df3b6697_744x765.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In this post, I&#8217;ll share my simple, effective workflow for taking, refining, and organizing technical notes in fields like software engineering and cyber security. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h3>Why Obsidian?</h3><p>I&#8217;ve tried many note-taking tools over the years (Notion, Standard Notes, Notesnook, Joplin, Evernote, Logseq, Trillium, Notable, QOwnNotes&#8230;). None of them felt quite right, until I landed on Obsidian.  </p><p>Here&#8217;s why it works for me:  </p><ul><li><p><strong>Plain Markdown files</strong> &#8594; My notes are just text files in Markdown. If Obsidian ever disappears, my notes remain usable. I can back them up with Git and sync however I like.  </p></li><li><p><strong>Data under my control</strong> &#8594; The notes live locally. If I use Obsidian Sync, they&#8217;re end-to-end encrypted. It means no central server exploit can expose my thoughts.  </p></li><li><p><strong>Back-links</strong> &#8594; The ability to easily create links with <code>[[this format]]</code> was a true game-changer. It makes connections between ideas visible &#8212; often between concepts I didn&#8217;t realize were related.  </p></li><li><p><strong>Flexibility &amp; plugins</strong> &#8594; Templates, customization, community plugins, and a thriving community all add up. Obsidian has the features I need without locking me in. </p></li></ul><div><hr></div><h3>Step 1: Capturing Notes Quickly</h3><p>The first step is to <strong>capture thoughts instantly</strong>.</p><p>I don&#8217;t overthink where to store them or how to name the file. If I hear a new concept, it needs to go into my second brain immediately.  </p><ul><li><p>On desktop: <code>CTRL + N</code>, type the note, done.  </p></li><li><p>On mobile: Open the app, hit <code>+</code>, type the thought, done.  </p></li></ul><p>Example: If I hear about <em>Caller ID Spoofing</em> in a cyber security podcast:  </p><ul><li><p><code>CTRL + N</code> </p></li><li><p>type "caller ID spoofing" </p></li><li><p>saved in seconds.  </p></li></ul><p>All new notes land in my <code>01_inbox</code> folder. These raw notes are &#8220;fleeting.&#8221; They may be messy, incomplete, and unstructured &#8212; but they&#8217;re safe, not lost.  </p><div><hr></div><h3>Step 2: Capturing Files Quickly</h3><p>Ideas don&#8217;t always come as words. Sometimes it&#8217;s a screenshot, article, or PDF.  </p><ul><li><p>Screenshot &#8594; <code>CTRL + N</code>, then <code>CTRL + V</code>.  </p></li><li><p>PDF &#8594; Drag and drop into a new note.  </p></li><li><p>Mobile &#8594; Share directly to the Obsidian app.  </p></li></ul><p>I configured Obsidian so that all attachments (images, PDFs, etc.) go into a <code>99_attachments</code> folder. This way, files don&#8217;t clutter the inbox - the note referencing them is what matters.  </p><div><hr></div><h3>Step 3: Refining Fleeting Notes</h3><p>Later, when I have time, I revisit the inbox to refine notes.  </p><p>Let&#8217;s say I open my <em>Caller ID Spoofing</em> note:  </p><ul><li><p>I quickly research (Google, Wikipedia, blogs, Perplexity, etc.).  </p></li><li><p>I then <strong>summarize the core ideas</strong> in short bullet points and my own words. </p></li><li><p>I keep the definition concise. I want a quick reminder, not a mini-Wikipedia.  </p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!M5q6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50d8851a-e814-47a9-ae1a-5ba07bf9803b_775x174.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M5q6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50d8851a-e814-47a9-ae1a-5ba07bf9803b_775x174.png 424w, https://substackcdn.com/image/fetch/$s_!M5q6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50d8851a-e814-47a9-ae1a-5ba07bf9803b_775x174.png 848w, https://substackcdn.com/image/fetch/$s_!M5q6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50d8851a-e814-47a9-ae1a-5ba07bf9803b_775x174.png 1272w, https://substackcdn.com/image/fetch/$s_!M5q6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50d8851a-e814-47a9-ae1a-5ba07bf9803b_775x174.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!M5q6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50d8851a-e814-47a9-ae1a-5ba07bf9803b_775x174.png" width="775" height="174" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50d8851a-e814-47a9-ae1a-5ba07bf9803b_775x174.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:174,&quot;width&quot;:775,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:26968,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/172673543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50d8851a-e814-47a9-ae1a-5ba07bf9803b_775x174.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!M5q6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50d8851a-e814-47a9-ae1a-5ba07bf9803b_775x174.png 424w, https://substackcdn.com/image/fetch/$s_!M5q6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50d8851a-e814-47a9-ae1a-5ba07bf9803b_775x174.png 848w, https://substackcdn.com/image/fetch/$s_!M5q6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50d8851a-e814-47a9-ae1a-5ba07bf9803b_775x174.png 1272w, https://substackcdn.com/image/fetch/$s_!M5q6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50d8851a-e814-47a9-ae1a-5ba07bf9803b_775x174.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>This ensures searching my notes is <strong>faster than Googling again</strong>.  </p><h3>Using Back-links</h3><p>While refining notes, I make heavy use of <code>[[back-links]]</code>.<br>You can create a link to any note by typing its name inside <code>[[ ]]</code>.</p><ul><li><p>If the note already exists, you even get <strong>auto-completion</strong> (like in a bash terminal) &#8594; super satisfying for developers.</p></li><li><p>If the note doesn&#8217;t exist yet, you can still create it as a back-link. From then on, auto-completion works&#8212;even before the actual file has been created.</p></li></ul><p>This way, when I mention technical topics or concepts, I just back-link them right away:</p><ul><li><p><em>Social Engineering</em> &#8594; <code>[[Social Engineering]]</code></p></li><li><p><em>Identity Theft</em> &#8594; <code>[[Identity Theft]]</code></p></li></ul><p>These are concepts that I know will definitely show up again later, so it makes sense to link them.</p><p>At the bottom of many of my notes, I also add a <strong>Links section</strong>. Here I include related thoughts and associations that come to mind - even if they didn&#8217;t appear in the body text. For example:</p><ul><li><p><code>[[Netzsicher]]</code> (the podcast where I picked up the idea)</p></li><li><p><code>[[Cybersecurity]]</code> (the broader umbrella topic)</p></li><li><p><code>[[Phone]]</code> (an obvious mental connection)</p></li></ul><p>This <strong>Links section</strong> helps turn each note into a hub for related ideas - whether they are similar, or contrasting. My personal rule of thumb is that <em>every note should connect to at least one other note</em>.</p><p>Here are more examples:</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fbdac687-8de6-4575-9941-827c5e0cdc60_612x261.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0749c75b-654e-4711-98af-8a26f9f1a38e_745x609.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5364203c-0f39-40e1-8744-33f58c7048bf_1325x928.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/abbe50cc-4fff-4943-92a3-d520c3ef4c6f_1049x587.png&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4fd1b38-9561-49d5-af4f-da234a7009d6_1456x1456.png&quot;}},&quot;isEditorNode&quot;:true}"></div><div><hr></div><h3>Step 4: From Fleeting Notes to Atomic Notes</h3><p>Once a note is refined, I drag it from <code>01_inbox</code> into <code>02_notes</code>.</p><p>These &#8220;atomic notes&#8221; each cover a single idea or concept in a distilled way.  </p><p>What&#8217;s the benefit?  </p><ul><li><p>Writing in my own words forces true understanding.  </p></li><li><p>Even if I forget later, I can retrieve the knowledge by searching or following links. </p></li><li><p>Searching for &#8220;phone&#8221; or &#8220;identity theft&#8221; or &#8220;fake number&#8221; will lead me back to *Caller ID Spoofing*.  </p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nzeh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d0852-a184-4b0c-95fd-77079a66d89a_454x342.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nzeh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d0852-a184-4b0c-95fd-77079a66d89a_454x342.png 424w, https://substackcdn.com/image/fetch/$s_!Nzeh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d0852-a184-4b0c-95fd-77079a66d89a_454x342.png 848w, https://substackcdn.com/image/fetch/$s_!Nzeh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d0852-a184-4b0c-95fd-77079a66d89a_454x342.png 1272w, https://substackcdn.com/image/fetch/$s_!Nzeh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d0852-a184-4b0c-95fd-77079a66d89a_454x342.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nzeh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d0852-a184-4b0c-95fd-77079a66d89a_454x342.png" width="454" height="342" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c2d0852-a184-4b0c-95fd-77079a66d89a_454x342.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:342,&quot;width&quot;:454,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:25851,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/172673543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d0852-a184-4b0c-95fd-77079a66d89a_454x342.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Nzeh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d0852-a184-4b0c-95fd-77079a66d89a_454x342.png 424w, https://substackcdn.com/image/fetch/$s_!Nzeh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d0852-a184-4b0c-95fd-77079a66d89a_454x342.png 848w, https://substackcdn.com/image/fetch/$s_!Nzeh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d0852-a184-4b0c-95fd-77079a66d89a_454x342.png 1272w, https://substackcdn.com/image/fetch/$s_!Nzeh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d0852-a184-4b0c-95fd-77079a66d89a_454x342.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Thanks to back-links, I can also trace related ideas:  </p><p>Checking my <em>Social Engineering</em> note&#8217;s back-links may lead me back to <em>Caller ID Spoofing</em>. This is where the <strong>graph view</strong> really shines. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><h3>Step 5: Deeper Learning Through Iteration</h3><p>Sometimes I want to expand further.  </p><p>If I keep linking to <code>[[Social Engineering]]</code>, eventually I&#8217;ll create that note and build it out using the same steps. Over time, my graph grows richer &#8212; not by force, but organically, based on what I revisit.  </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oS__!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F834f6d4c-fc56-4e8d-a0dd-ba08cd10b575_621x554.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oS__!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F834f6d4c-fc56-4e8d-a0dd-ba08cd10b575_621x554.png 424w, https://substackcdn.com/image/fetch/$s_!oS__!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F834f6d4c-fc56-4e8d-a0dd-ba08cd10b575_621x554.png 848w, https://substackcdn.com/image/fetch/$s_!oS__!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F834f6d4c-fc56-4e8d-a0dd-ba08cd10b575_621x554.png 1272w, https://substackcdn.com/image/fetch/$s_!oS__!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F834f6d4c-fc56-4e8d-a0dd-ba08cd10b575_621x554.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oS__!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F834f6d4c-fc56-4e8d-a0dd-ba08cd10b575_621x554.png" width="621" height="554" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/834f6d4c-fc56-4e8d-a0dd-ba08cd10b575_621x554.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:554,&quot;width&quot;:621,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:58037,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/172673543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F834f6d4c-fc56-4e8d-a0dd-ba08cd10b575_621x554.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!oS__!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F834f6d4c-fc56-4e8d-a0dd-ba08cd10b575_621x554.png 424w, https://substackcdn.com/image/fetch/$s_!oS__!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F834f6d4c-fc56-4e8d-a0dd-ba08cd10b575_621x554.png 848w, https://substackcdn.com/image/fetch/$s_!oS__!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F834f6d4c-fc56-4e8d-a0dd-ba08cd10b575_621x554.png 1272w, https://substackcdn.com/image/fetch/$s_!oS__!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F834f6d4c-fc56-4e8d-a0dd-ba08cd10b575_621x554.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This iterative process builds a <strong>living knowledge system</strong> where concepts connect naturally.</p><div><hr></div><h3>Keep It Simple</h3><p>There&#8217;s so much more I could share:  </p><ul><li><p>Using <strong>templates</strong> to add structured, query-able metadata to notes  </p></li><li><p>Organizing courses via <strong>bases</strong></p></li><li><p>Randomly resurfacing and polishing older notes  </p></li></ul><p>But here&#8217;s the important takeaway: <strong>start simple</strong>.  </p><p>Don&#8217;t chase complicated workflows, zettelkasten theories, or dozens of plugins. Start capturing. Start linking. Start refining. The second brain will build itself.  </p><div><hr></div><h3>Summary</h3><p>This is my workflow for capturing, refining, and organizing technical knowledge in <strong>Obsidian</strong>:  </p><p>1. <strong>Capture quickly</strong> (fleeting notes &#8594; inbox).  </p><p>2.<strong> Attach files easily</strong> (screenshots, PDFs, images &#8594; attachment folder).  </p><p>3. <strong>Refine notes</strong> with short bullet point summaries in my own words.  </p><p>4. <strong>Back-link aggressively </strong>to link concepts together.  </p><p>5. <strong>Move refined notes</strong> into a structured folder of atomic notes.  </p><p>6. <strong>Iteratively build knowledge</strong> through back-links and deeper notes.  </p><p>I&#8217;ve used this system for years while learning cyber security and software engineering. It&#8217;s not perfect, but it works &#8212; and more importantly, it grows with me.  </p><p>If you&#8217;re starting your own note-taking journey, my advice is simple: <strong>just start.  </strong></p><p>Your second brain doesn&#8217;t have to be perfect on day one - it just has to start working for you. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/p/building-a-second-brain-in-obsidian?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.cellos.blog/p/building-a-second-brain-in-obsidian?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h3>FAQ</h3><h4>&#10067; How is your folder structure?</h4><p>Very minimal. I only keep a few top-level folders for this workflow:</p><ul><li><p><strong>01_inbox</strong> &#8594; New, fleeting notes (raw, unrefined).</p></li><li><p><strong>02_notes</strong> &#8594; Refined, atomic notes in my own words.</p></li><li><p><strong>99_attachments</strong> &#8594; Images, PDFs, and other files.</p></li></ul><p>That&#8217;s it. I prefer not to over-complicate with too many sub-folders &#8212; back-links do most of the organizational work for me.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uGNP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53ad199-e87f-493c-98f7-49ec5425519b_444x318.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uGNP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53ad199-e87f-493c-98f7-49ec5425519b_444x318.png 424w, https://substackcdn.com/image/fetch/$s_!uGNP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53ad199-e87f-493c-98f7-49ec5425519b_444x318.png 848w, https://substackcdn.com/image/fetch/$s_!uGNP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53ad199-e87f-493c-98f7-49ec5425519b_444x318.png 1272w, https://substackcdn.com/image/fetch/$s_!uGNP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53ad199-e87f-493c-98f7-49ec5425519b_444x318.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uGNP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53ad199-e87f-493c-98f7-49ec5425519b_444x318.png" width="444" height="318" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f53ad199-e87f-493c-98f7-49ec5425519b_444x318.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:318,&quot;width&quot;:444,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:22839,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/172673543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53ad199-e87f-493c-98f7-49ec5425519b_444x318.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uGNP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53ad199-e87f-493c-98f7-49ec5425519b_444x318.png 424w, https://substackcdn.com/image/fetch/$s_!uGNP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53ad199-e87f-493c-98f7-49ec5425519b_444x318.png 848w, https://substackcdn.com/image/fetch/$s_!uGNP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53ad199-e87f-493c-98f7-49ec5425519b_444x318.png 1272w, https://substackcdn.com/image/fetch/$s_!uGNP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53ad199-e87f-493c-98f7-49ec5425519b_444x318.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h4>&#10067; Do you share your vault?</h4><p>No. My vault contains private notes, work references, and personal thoughts. That said, the method is what&#8217;s important &#8212; not the content. You can build your own system using the same structure.</p><div><hr></div><h4>&#10067; Why is writing in your own words so important?</h4><p>This is the core of my workflow. I never just copy-paste from articles or books. Instead, I summarize and rephrase <strong>in my own words</strong>.<br>This simple step:</p><ul><li><p>Forces me to actually understand the topic.</p></li><li><p>Makes retrieval easier later, since I&#8217;ll recognize my own phrasing.</p></li><li><p>Prevents turning my vault into just another dump of external info.</p></li></ul><p>If you skip this, you essentially skip the real learning part.</p><div><hr></div><h4>&#10067; Where do you study cyber security?</h4><p>I started with the <strong>SEC-100 certificate from OffSec</strong>.<br>Currently, I&#8217;m taking the <strong>CPTS (Certified Penetration Testing Specialist)</strong> course on HackTheBox.</p><div><hr></div><h4>&#10067; How long did it take to build your graph?</h4><p>I&#8217;ve been taking notes like this for <strong>2&#8211;3 years</strong>.<br>It grows more quickly when I&#8217;m reading a technical book or taking a course, and more slowly when I&#8217;m just doing daily work.<br>The graph is a byproduct &#8212; it emerges naturally over time, not something I actively try to &#8220;grow&#8221; for its own sake.</p><div><hr></div><h4>&#10067; Isn&#8217;t this a lot of work?</h4><p>Yes, it takes time to write good notes. But the benefits compound over years:</p><ul><li><p>Writing and linking forces deeper understanding.</p></li><li><p>Notes become my <strong>first lookup point</strong> before I turn to Google or AI.</p></li><li><p>Over time, I&#8217;ve built a &#8220;second brain&#8221; that saves me hours of re-learning the same things.</p></li></ul><p>In short: yes, it&#8217;s effort, but it pays off more than any quick-copy method ever could.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><p>&#128073; Your turn:  </p><ul><li><p>What&#8217;s your workflow for keeping technical knowledge organized?  </p></li><li><p>Do you have a favorite Obsidian tweak I should try?  </p></li></ul><p>Let&#8217;s compare notes and keep learning together.</p>]]></content:encoded></item><item><title><![CDATA[Pen-testing without Prison]]></title><description><![CDATA[Laws every Ethical Hacker should know]]></description><link>https://www.cellos.blog/p/pen-testing-without-prison</link><guid isPermaLink="false">https://www.cellos.blog/p/pen-testing-without-prison</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Fri, 29 Aug 2025 06:02:03 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1567766176311-a1a2d11a3e35?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMHx8cHJpc29ufGVufDB8fHx8MTc1NjQyNjE2NHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1567766176311-a1a2d11a3e35?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMHx8cHJpc29ufGVufDB8fHx8MTc1NjQyNjE2NHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1567766176311-a1a2d11a3e35?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMHx8cHJpc29ufGVufDB8fHx8MTc1NjQyNjE2NHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1567766176311-a1a2d11a3e35?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMHx8cHJpc29ufGVufDB8fHx8MTc1NjQyNjE2NHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1567766176311-a1a2d11a3e35?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMHx8cHJpc29ufGVufDB8fHx8MTc1NjQyNjE2NHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1567766176311-a1a2d11a3e35?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMHx8cHJpc29ufGVufDB8fHx8MTc1NjQyNjE2NHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1567766176311-a1a2d11a3e35?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMHx8cHJpc29ufGVufDB8fHx8MTc1NjQyNjE2NHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="4480" height="6720" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1567766176311-a1a2d11a3e35?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMHx8cHJpc29ufGVufDB8fHx8MTc1NjQyNjE2NHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:6720,&quot;width&quot;:4480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;gray stainless steel bed frame&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="gray stainless steel bed frame" title="gray stainless steel bed frame" srcset="https://images.unsplash.com/photo-1567766176311-a1a2d11a3e35?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMHx8cHJpc29ufGVufDB8fHx8MTc1NjQyNjE2NHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1567766176311-a1a2d11a3e35?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMHx8cHJpc29ufGVufDB8fHx8MTc1NjQyNjE2NHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1567766176311-a1a2d11a3e35?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMHx8cHJpc29ufGVufDB8fHx8MTc1NjQyNjE2NHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1567766176311-a1a2d11a3e35?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMHx8cHJpc29ufGVufDB8fHx8MTc1NjQyNjE2NHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@camstejim">camilo jimenez</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>Pen-testing is fun.</p><p>Breaking things on purpose, but in a responsible way.  </p><p>Sounds cool, right? Hacker hoodie, flashy exploits, adrenaline...</p><p>But here&#8217;s the problem: <strong>the law</strong>.</p><p>When you touch a system that&#8217;s not yours, you&#8217;re instantly walking a <strong>legal tightrope</strong>. And that's a wobbly one.</p><p>So before you even get started, make sure to have the most important docs in writing: Authorization. Scope. Contacts. Duration.  </p><p>That is boring, sure. But that little PDF with signatures is your parachute when things get messy.</p><p>But these documents are not a free get-out-of-jail card. There are lots of laws and regulations you have to comply with when pen-testing. </p><p>Yes, that is boring, as well. But if you build up a life, career, family, you don't want to throw that all away by going to jail because you misstepped once.</p><p>So here&#8217;s a bare-minimum <strong>legal cheat sheet</strong> for cyber security. Not a law textbook, no legal advice. Just the basics, so you know where to look (and what to google when in doubt).</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>USA &#127482;&#127480;</h2><ul><li><p><strong>CFAA (computer fraud and abuse act): </strong>The OG cybercrime law. Super broad. Anything &#8220;unauthorized&#8221; can land you in trouble. Often criticized as _way too generic_.</p></li><li><p><strong>DMCA (digital millennium copyright act): </strong>Circumventing digital locks = no-go. Applies even if your hack is not malicious.</p></li><li><p><strong>ECPA (electronic communications privacy act):</strong> Wiretaps, message interception, unauthorized data sniffing &#8594; illegal. Courts can&#8217;t use unlawfully intercepted data.</p></li><li><p><strong>HIPAA (health insurance portability and accountability act):</strong> If you touch health records, there are strict security rules. Fines can be brutal.</p></li><li><p><strong>COPPA (childrens online privacy protection act):</strong> Extra care if your work touches children&#8217;s data (&lt;13). Strict limits here.</p></li></ul><h2>Europe &#127466;&#127482;</h2><ul><li><p><strong>GDPR (general data protection regulation):</strong> The famous one. Personal data = protected. Hefty fines if you mess it up.</p></li><li><p><strong>NISD (network and information systems directive):</strong> Forces bigger organizations beyond critical infrastructure to have solid cyber defenses.</p></li><li><p><strong>Cybercrime Convention: </strong>Joint effort between countries to fight cyber crime. Legal basis for cooperation.</p></li><li><p><strong>E-Privacy Directive 2002/58/ec:</strong> Email, cookies, communications data &#8594; extra rules for handling.</p></li></ul><h2>UK &#127468;&#127463;</h2><ul><li><p><strong>Computer Misuse Act 1990:</strong> Unauthorized access = illegal. Police may seize hardware.</p></li><li><p><strong>Data Protection Act 2018:</strong> GDPR-but-make-it-UK.</p></li><li><p><strong>HRA (Human Rights Act 1998): </strong>Right to privacy, includes digital life.</p></li><li><p><strong>Police and Justice Act 2006: </strong>Expanded cyber crime definitions to cover more abuse cases.</p></li><li><p><strong>IPA (Investigatory Powers Act 2016):</strong> Legalized mass surveillance &amp; hacking powers for agencies.</p></li><li><p><strong>RIPA (regulation of investigatory powers act 2000): </strong>Earlier rules for secret investigations. IPA is basically its evolution.</p></li></ul><h2>India &#127470;&#127475;</h2><ul><li><p><strong>IT Act 2000: </strong>Unauthorized access banned. Digital evidence is admissible in court.</p></li><li><p><strong>Personal Data Protection Bill 2019:</strong> Proposed GDPR-like rules, but got shelved.</p></li><li><p><strong>Indian Evidence Act of 1872:</strong> Defines what counts as admissible in cyber crime cases.</p></li></ul><h2>China &#127464;&#127475;</h2><ul><li><p><strong>Cyber Security Law:</strong> Companies must protect infrastructure, report incidents, safeguard personal data.</p></li><li><p><strong>National Security Law:</strong> Anything threatening "national security" (broadly defined) = illegal.</p></li><li><p><strong>Anti-Terrorism Law:</strong> Blocks all terror-related online activity.</p></li><li><p><strong>Cross-Border Data Measures: </strong>Exporting data abroad? Needs government approval + security reviews.</p></li><li><p><strong>CII Security Regulation:</strong> Like the Cyber Security Law, but focused on critical infrastructure.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div></li></ul><h2>Takeaway</h2><p>Pen-testing is fun. Regulations? Not so much.  </p><p>But if you don&#8217;t know at least the basics, you risk stepping from <strong>ethical hacker</strong> to <strong>criminal defendant </strong>in seconds.</p><p>So:</p><ul><li><p>Always get <strong>written authorization.</strong></p></li><li><p>Stay <strong>within scope</strong>.</p></li><li><p>Remember: the law differs wildly across borders.</p></li></ul><p>Think of laws as the invisible tripwires in the system. Knowing where they are doesn&#8217;t just keep you safe. It keeps you hacking another day.</p>]]></content:encoded></item><item><title><![CDATA[You are Never Safe in Cyber Security]]></title><description><![CDATA[That&#8217;s the reality: complete safety does not exist.]]></description><link>https://www.cellos.blog/p/you-are-never-safe-in-cyber-security</link><guid isPermaLink="false">https://www.cellos.blog/p/you-are-never-safe-in-cyber-security</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Tue, 26 Aug 2025 11:41:02 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1621072145476-7c50a88739c3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMnx8cmlza3xlbnwwfHx8fDE3NTYyMDgwMDV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1621072145476-7c50a88739c3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMnx8cmlza3xlbnwwfHx8fDE3NTYyMDgwMDV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1621072145476-7c50a88739c3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMnx8cmlza3xlbnwwfHx8fDE3NTYyMDgwMDV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1621072145476-7c50a88739c3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMnx8cmlza3xlbnwwfHx8fDE3NTYyMDgwMDV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1621072145476-7c50a88739c3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMnx8cmlza3xlbnwwfHx8fDE3NTYyMDgwMDV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1621072145476-7c50a88739c3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMnx8cmlza3xlbnwwfHx8fDE3NTYyMDgwMDV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1621072145476-7c50a88739c3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMnx8cmlza3xlbnwwfHx8fDE3NTYyMDgwMDV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="1080" height="720" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1621072145476-7c50a88739c3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMnx8cmlza3xlbnwwfHx8fDE3NTYyMDgwMDV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;text&quot;,&quot;title&quot;:&quot;text&quot;,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="text" title="text" srcset="https://images.unsplash.com/photo-1621072145476-7c50a88739c3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMnx8cmlza3xlbnwwfHx8fDE3NTYyMDgwMDV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1621072145476-7c50a88739c3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMnx8cmlza3xlbnwwfHx8fDE3NTYyMDgwMDV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1621072145476-7c50a88739c3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMnx8cmlza3xlbnwwfHx8fDE3NTYyMDgwMDV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1621072145476-7c50a88739c3?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyMnx8cmlza3xlbnwwfHx8fDE3NTYyMDgwMDV8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@flyd2069">FlyD</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>That&#8217;s the reality: complete safety does not exist. Every system has risk. The goal isn&#8217;t to eliminate risk entirely - that&#8217;s impossible - but to <strong>manage it effectively</strong>. And you can only manage what you first identify.  </p><h1>Vulnerability Assessments  </h1><p>Automated tools such as <strong>Nessus, Qualys, Wiz, and OpenVAS</strong> are great at scanning and uncovering a wide range of vulnerabilities across your infrastructure. They cast a broad net and provide valuable coverage.  </p><p>But automation has limits. These tools <strong>cannot adapt</strong> to your unique system configurations, business logic, or organization-specific attack surfaces. They&#8217;re a necessary starting point, but by themselves, they don&#8217;t provide a complete picture of your risks.  </p><h1>Penetration Tests  </h1><p>A true penetration test goes beyond automated scanning. It&#8217;s <strong>tailored to your own environment</strong>, adapting to your configurations, business processes, and technology stack. Skilled pentesters can:  </p><p>- Chain multiple vulnerabilities together  </p><p>- Detect business logic issues  </p><p>- Simulate realistic attacks that tools miss  </p><p>Importantly, penetration tests are <strong>a moment-in-time snapshot</strong>. They provide valuable visibility into your risk landscape on the day of testing, but once completed, they do not continue to monitor your systems. New vulnerabilities, configuration changes, or software updates after the test can reintroduce risk.  </p><h1>Common Misconceptions  </h1><p>Training platforms like <strong>HackTheBox or TryHackMe</strong> have gamified aspects of offensive security. While excellent for skill development, they encourage a mindset of finding <strong>a single attack path</strong> - much like solving a puzzle.  </p><p>In reality, this is closer to a <strong>red team exercise</strong>, which simulates a persistent attacker who only needs one way in. By contrast, <strong>a penetration test is about coverage</strong>: finding as many potential weaknesses as possible, not just one. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h1>The Bottom Line  </h1><p>Effective risk management requires a <strong>layered approach</strong>:  </p><p>1. <strong>Automated vulnerability assessments</strong> for broad coverage  </p><p>2. <strong>Tailored penetration tests</strong> for in-depth risk analysis  </p><p>3. <strong>Red team exercises</strong> to validate detection and response readiness  </p><p>Remember: you are never completely safe. Risk is always present. But with continuous scanning, periodic pentests, and strategic red team exercises, you gain the visibility needed to <strong>make informed, proactive decisions</strong> about the threats you face.  </p>]]></content:encoded></item><item><title><![CDATA[Learning Cyber Security]]></title><description><![CDATA[5 Quick Wins for Your Mindset]]></description><link>https://www.cellos.blog/p/learning-cyber-security</link><guid isPermaLink="false">https://www.cellos.blog/p/learning-cyber-security</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Mon, 25 Aug 2025 12:36:42 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1603205431143-ce58f21799a4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzM3x8bGVhcm5pbmd8ZW58MHx8fHwxNzU2MTI1MjQ1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1603205431143-ce58f21799a4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzM3x8bGVhcm5pbmd8ZW58MHx8fHwxNzU2MTI1MjQ1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1603205431143-ce58f21799a4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzM3x8bGVhcm5pbmd8ZW58MHx8fHwxNzU2MTI1MjQ1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1603205431143-ce58f21799a4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzM3x8bGVhcm5pbmd8ZW58MHx8fHwxNzU2MTI1MjQ1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1603205431143-ce58f21799a4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzM3x8bGVhcm5pbmd8ZW58MHx8fHwxNzU2MTI1MjQ1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1603205431143-ce58f21799a4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzM3x8bGVhcm5pbmd8ZW58MHx8fHwxNzU2MTI1MjQ1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1603205431143-ce58f21799a4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzM3x8bGVhcm5pbmd8ZW58MHx8fHwxNzU2MTI1MjQ1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="5184" height="3888" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1603205431143-ce58f21799a4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzM3x8bGVhcm5pbmd8ZW58MHx8fHwxNzU2MTI1MjQ1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3888,&quot;width&quot;:5184,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;brown wooden blocks on white table&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="brown wooden blocks on white table" title="brown wooden blocks on white table" srcset="https://images.unsplash.com/photo-1603205431143-ce58f21799a4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzM3x8bGVhcm5pbmd8ZW58MHx8fHwxNzU2MTI1MjQ1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1603205431143-ce58f21799a4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzM3x8bGVhcm5pbmd8ZW58MHx8fHwxNzU2MTI1MjQ1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1603205431143-ce58f21799a4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzM3x8bGVhcm5pbmd8ZW58MHx8fHwxNzU2MTI1MjQ1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1603205431143-ce58f21799a4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzM3x8bGVhcm5pbmd8ZW58MHx8fHwxNzU2MTI1MjQ1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Learning by doing</strong> isn't just a nice-to-have in cyber security; it's essential. You can read about vulnerabilities all day, but until you've exploited one in a controlled environment, you don't truly understand the attack vector.</p><p><strong>Always understand the "why".</strong> Don't just follow step-by-step tutorials. When you run that Nmap scan, understand what each flag does. When you exploit that buffer overflow, know why those specific bytes cause the crash.</p><p><strong>Question everything.</strong> That includes your assumptions, the tools you're using, and even the advice you're getting. This skeptical mindset is what separates script kiddies from real security professionals.</p><p><strong>Do it on your own.</strong> This one hits different in cyber security. It's tempting to immediately ask for help when you're stuck, but the struggle is where the learning happens. Many tasks are genuinely difficult, but they provide invaluable learnings along the way.</p><p><strong>Learn to ask good questions</strong> when you do need help. Show your work, explain what you tried, what you expected, and what actually happened. This demonstrates effort, helps others learn from your process, and dramatically increases the likelihood someone will help you.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><strong>Stay legal. Always.</strong> Before doing any security work, ensure you have a signed scope document that clearly defines what you're authorized to test. Stay within that scope no matter what you discover. Your curiosity and skills are powerful tools. Use them to build, protect, and defend - never to harm.</p>]]></content:encoded></item><item><title><![CDATA[Lessons Learned: Building a Cross-Platform App with AI]]></title><description><![CDATA[I developed an app for Android and iOS without writing a single line of code.]]></description><link>https://www.cellos.blog/p/lessons-learned-building-a-cross-platform-app-with-ai</link><guid isPermaLink="false">https://www.cellos.blog/p/lessons-learned-building-a-cross-platform-app-with-ai</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Thu, 24 Jul 2025 11:46:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ClxF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a94de0f-6ef0-403e-aef3-dcc6e25133a0_1024x500.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ClxF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a94de0f-6ef0-403e-aef3-dcc6e25133a0_1024x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ClxF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a94de0f-6ef0-403e-aef3-dcc6e25133a0_1024x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ClxF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a94de0f-6ef0-403e-aef3-dcc6e25133a0_1024x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ClxF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a94de0f-6ef0-403e-aef3-dcc6e25133a0_1024x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ClxF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a94de0f-6ef0-403e-aef3-dcc6e25133a0_1024x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ClxF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a94de0f-6ef0-403e-aef3-dcc6e25133a0_1024x500.jpeg" width="1024" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4a94de0f-6ef0-403e-aef3-dcc6e25133a0_1024x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:571632,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/169130291?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a94de0f-6ef0-403e-aef3-dcc6e25133a0_1024x500.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ClxF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a94de0f-6ef0-403e-aef3-dcc6e25133a0_1024x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ClxF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a94de0f-6ef0-403e-aef3-dcc6e25133a0_1024x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ClxF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a94de0f-6ef0-403e-aef3-dcc6e25133a0_1024x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ClxF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a94de0f-6ef0-403e-aef3-dcc6e25133a0_1024x500.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I developed an app for <strong><a href="https://play.google.com/store/apps/details?id=com.lily624org.bbqbuddy">Android</a></strong> and <strong><a href="https://apps.apple.com/de/app/bbq-buddy/id6747058992">iOS</a></strong> without writing a single line of code. I even had no prior experience with the programming language used. All of this was thanks to an AI agent, which I also had never used before. That sounds pretty impressive at first, but it actually wasn&#8217;t quite that easy. Here&#8217;s a brief report of my experience and what I learned, including tips and pitfalls, so you can do the same!</p><h1><strong>Starting Point</strong></h1><p>I&#8217;m a professional software engineer, mainly working in the .NET environment. For work, I wanted to get more familiar with React to be able to implement small features full-stack. And what better way to learn a language than to develop a small project with it?</p><h1><strong>The Project</strong></h1><p>Some of my friends are real BBQ nerds (myself included). We grill all the time, running through the entire range of Weber recipes, even in winter. One of my friends even hit 300 grill sessions in 2024. He knows this so precisely because on each grill day, he marks a small cross on his calendar with a pen. That&#8217;s where the idea came up to digitize this. A small app to track your grill sessions with a photo and some metadata, so you can view statistics and unlock achievements.</p><ul><li><p>How often have I grilled this week/this month/this year?</p></li><li><p>What are my most frequently used ingredients?</p></li><li><p>How often have I managed the perfect weekend?</p></li><li><p>How many people have I grilled for?</p></li><li><p>...</p></li></ul><h1><strong>The Tech Stack</strong></h1><p>Since I use Android and my buddy uses iOS, it was clear right away that the app had to be cross-platform. It also had to use React or React Native, since I wanted to learn this language. I quickly found <strong><a href="https://docs.expo.dev/">Expo</a></strong>, a seemingly very popular framework in the community that appeared to meet all my requirements. As my IDE, I chose <strong><a href="https://docs.cursor.com/welcome">Cursor AI</a></strong>, since colleagues had recommended it. By default, my setup used the Claude 3.5 model.</p><h1><strong>Getting Started</strong></h1><p>To avoid starting totally blind, I first watched some <strong><a href="https://www.youtube.com/watch?v=m1-bc53EGh8">Expo getting-started videos</a></strong>. The videos were surprisingly up to date, and I was able to recreate the easy, trivial quick-start examples almost 1:1. I also browsed a bit through the <strong><a href="https://reactnative.dev/docs/getting-started">React Native docs</a></strong> to get a first feel for the syntax and general paradigms of the language.</p><h1><strong>Vibe-Coding</strong></h1><p>Now it finally started. In Cursor, you can simply enter prompts, and the AI makes the changes in the files, showing a git diff you can view and accept directly in the editor. For example, if I prompted for a list view as the content of my first page, the AI recognized it was an Expo project and inserted the appropriate code. What can I say? The start was quite impressive.<br>Within seconds, I had a list of grill sessions on my phone. I prompted for more and more details over time. First, I wanted more sample data for the list, then I wanted an image for each list item, then I wanted to change the sorting, change colors, etc. No matter what I asked for, the AI executed it.<br>Thanks to the really strong start, I actually slipped into a sort of &#8220;vibe-coding&#8221; mode: I just wrote prompts and barely looked at the generated code anymore, simply accepting it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uGH8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84c322a-8473-4824-a999-f2ed54d6c37c_945x2048.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uGH8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84c322a-8473-4824-a999-f2ed54d6c37c_945x2048.png 424w, https://substackcdn.com/image/fetch/$s_!uGH8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84c322a-8473-4824-a999-f2ed54d6c37c_945x2048.png 848w, https://substackcdn.com/image/fetch/$s_!uGH8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84c322a-8473-4824-a999-f2ed54d6c37c_945x2048.png 1272w, https://substackcdn.com/image/fetch/$s_!uGH8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84c322a-8473-4824-a999-f2ed54d6c37c_945x2048.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uGH8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84c322a-8473-4824-a999-f2ed54d6c37c_945x2048.png" width="945" height="2048" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a84c322a-8473-4824-a999-f2ed54d6c37c_945x2048.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2048,&quot;width&quot;:945,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Early version of the list view after only a few iterations&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Early version of the list view after only a few iterations" title="Early version of the list view after only a few iterations" srcset="https://substackcdn.com/image/fetch/$s_!uGH8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84c322a-8473-4824-a999-f2ed54d6c37c_945x2048.png 424w, https://substackcdn.com/image/fetch/$s_!uGH8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84c322a-8473-4824-a999-f2ed54d6c37c_945x2048.png 848w, https://substackcdn.com/image/fetch/$s_!uGH8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84c322a-8473-4824-a999-f2ed54d6c37c_945x2048.png 1272w, https://substackcdn.com/image/fetch/$s_!uGH8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa84c322a-8473-4824-a999-f2ed54d6c37c_945x2048.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1><strong>The First Setback</strong></h1><p>I then had the AI implement another view for adding grill sessions. Additionally, navigation between the two pages had to be implemented, and persistence via the phone's file system needed to be added. By this point, the AI&#8217;s changes were becoming noticeably slower. The compiler complained more and more, the AI repeatedly apologized and iterated to fix issues like incorrect syntax. Again and again, I had to specify the context explicitly in the prompt or restrict it so that usable results would be produced.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!K_B-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57ccb272-e6b8-4364-ad15-e2e4f6a7a106_945x2048.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K_B-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57ccb272-e6b8-4364-ad15-e2e4f6a7a106_945x2048.png 424w, https://substackcdn.com/image/fetch/$s_!K_B-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57ccb272-e6b8-4364-ad15-e2e4f6a7a106_945x2048.png 848w, https://substackcdn.com/image/fetch/$s_!K_B-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57ccb272-e6b8-4364-ad15-e2e4f6a7a106_945x2048.png 1272w, https://substackcdn.com/image/fetch/$s_!K_B-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57ccb272-e6b8-4364-ad15-e2e4f6a7a106_945x2048.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K_B-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57ccb272-e6b8-4364-ad15-e2e4f6a7a106_945x2048.png" width="945" height="2048" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/57ccb272-e6b8-4364-ad15-e2e4f6a7a106_945x2048.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2048,&quot;width&quot;:945,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Early version of the second page of the app&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Early version of the second page of the app" title="Early version of the second page of the app" srcset="https://substackcdn.com/image/fetch/$s_!K_B-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57ccb272-e6b8-4364-ad15-e2e4f6a7a106_945x2048.png 424w, https://substackcdn.com/image/fetch/$s_!K_B-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57ccb272-e6b8-4364-ad15-e2e4f6a7a106_945x2048.png 848w, https://substackcdn.com/image/fetch/$s_!K_B-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57ccb272-e6b8-4364-ad15-e2e4f6a7a106_945x2048.png 1272w, https://substackcdn.com/image/fetch/$s_!K_B-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57ccb272-e6b8-4364-ad15-e2e4f6a7a106_945x2048.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1><strong>Pair-Coding</strong></h1><p>By now, I had scrolled through the code myself a bit and can objectively say that quite a lot of technical debt had accumulated. Files exceeded 1,000 lines, with a lot of duplication, no architecture, and no tests. Therefore, blind vibe-coding is apparently not viable, even for a relatively small project. So I decided to change my approach. Instead of having the AI do everything on its own, I paired up with it, just like you would with a junior developer, explaining and avoiding code smells.</p><p>I took each feature again and, together with the AI, refactored it. Bit by bit, I had the AI extract small components and clean up according to best practices/clean code. I always had to explicitly state that the AI should only edit that particular component; otherwise, there were often random changes elsewhere in the repository.<br>When it came to what should be in a component from a domain perspective and what should not, the AI often guessed wrong. Here, I had to be very exact with my prompts to get the desired result.</p><p>This approach actually paid off. The code became a lot cleaner, and even I, as a React newbie, could follow the small diffs and intervene if needed. Most importantly, very atomic commits in git are essential so you can revert to a previous commit if the AI goes into Skynet mode and destroys everything.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nN1s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefa4cb5-a5df-4360-80fb-5989860242b4_240x136.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nN1s!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefa4cb5-a5df-4360-80fb-5989860242b4_240x136.gif 424w, https://substackcdn.com/image/fetch/$s_!nN1s!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefa4cb5-a5df-4360-80fb-5989860242b4_240x136.gif 848w, https://substackcdn.com/image/fetch/$s_!nN1s!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefa4cb5-a5df-4360-80fb-5989860242b4_240x136.gif 1272w, https://substackcdn.com/image/fetch/$s_!nN1s!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefa4cb5-a5df-4360-80fb-5989860242b4_240x136.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nN1s!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefa4cb5-a5df-4360-80fb-5989860242b4_240x136.gif" width="320" height="181.33333333333331" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cefa4cb5-a5df-4360-80fb-5989860242b4_240x136.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:136,&quot;width&quot;:240,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nN1s!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefa4cb5-a5df-4360-80fb-5989860242b4_240x136.gif 424w, https://substackcdn.com/image/fetch/$s_!nN1s!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefa4cb5-a5df-4360-80fb-5989860242b4_240x136.gif 848w, https://substackcdn.com/image/fetch/$s_!nN1s!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefa4cb5-a5df-4360-80fb-5989860242b4_240x136.gif 1272w, https://substackcdn.com/image/fetch/$s_!nN1s!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefa4cb5-a5df-4360-80fb-5989860242b4_240x136.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>But I also benefited from the pairing. When I didn&#8217;t understand diffs, the AI explained them really well. Especially React paradigms I hadn&#8217;t known before were made clear to me by the AI. I think this is clearly the strength of this approach. You just have to be curious and ask the right questions.</p><h1><strong>The Result</strong></h1><p>The app is finished, works as intended, and is available in both the <strong><a href="https://play.google.com/store/apps/details?id=com.lily624org.bbqbuddy">Play Store</a></strong> and the <strong><a href="https://apps.apple.com/de/app/bbq-buddy/id6747058992">App Store</a></strong>! Here are a few pictures:</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/565c7e25-46db-4fbc-b9ff-be01e2a546d4_1456x2588.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/14680896-ea07-475f-94c7-9bbe32222a99_1456x2588.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24e2dd25-86d4-49ce-8c56-5e840c450b1c_1456x2588.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf846f56-98ee-4c03-8537-cf53fabcecda_1456x2588.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d79b8052-2de0-4326-bcec-a2f0616cc6a8_1456x2588.jpeg&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/31a03a0b-dfd4-430c-92ee-5484a7267133_1456x1210.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p></p><p>The app is already being used by several people, which is, of course, very rewarding to see.</p><h1><strong>Was This Approach Worth It?</strong></h1><p>I think so, because without additional practice with a programming language previously unknown to me, I would never have managed to build the app this way. Constantly googling syntax would have taken far longer, and as a dad, that's important to me. Projects that seem too big are immediately considered unrealistic and abandoned. But this way, I actually completed a project in just a few days (spread over several weeks).</p><h1><strong>Would I Have Been Faster In My Familiar .NET Environment?</strong></h1><p>That&#8217;s tough to judge. Even now, I would rely heavily on AI support there. In .NET, I can, of course, understand code changes better and faster, but I think the tech stack for cross-platform development (dotnet MAUI) is significantly more bloated and would have caused quite a headache. The code would probably have been even cleaner, though. In the long run, that&#8217;s certainly a benefit.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h1><strong>Outlook</strong></h1><p>Pair-coding with AI works and is efficient. It&#8217;s important not to fly blind, but to consciously review things. AI doesn&#8217;t replace software engineers; instead, it&#8217;s a new tool for them. As a result, the outcome will depend on your own software development experience, as you really have to guide the AI in the desired direction. And only a trained software engineer knows exactly what that direction should be.</p><p>What are your experiences with AI agents?</p>]]></content:encoded></item><item><title><![CDATA[Hack The Box: Nibbles]]></title><description><![CDATA[This is my walkthrough for the machine Nibbles on Hack The Box.]]></description><link>https://www.cellos.blog/p/hack-the-box-nibbles</link><guid isPermaLink="false">https://www.cellos.blog/p/hack-the-box-nibbles</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Thu, 24 Jul 2025 11:44:47 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1562813733-b31f71025d54?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYWNrZXJ8ZW58MHx8fHwxNzUzMzU3NDcxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1562813733-b31f71025d54?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYWNrZXJ8ZW58MHx8fHwxNzUzMzU3NDcxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1562813733-b31f71025d54?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYWNrZXJ8ZW58MHx8fHwxNzUzMzU3NDcxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1562813733-b31f71025d54?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYWNrZXJ8ZW58MHx8fHwxNzUzMzU3NDcxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1562813733-b31f71025d54?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYWNrZXJ8ZW58MHx8fHwxNzUzMzU3NDcxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1562813733-b31f71025d54?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYWNrZXJ8ZW58MHx8fHwxNzUzMzU3NDcxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1562813733-b31f71025d54?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYWNrZXJ8ZW58MHx8fHwxNzUzMzU3NDcxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="6024" height="4024" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1562813733-b31f71025d54?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYWNrZXJ8ZW58MHx8fHwxNzUzMzU3NDcxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:4024,&quot;width&quot;:6024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;man siting facing laptop&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="man siting facing laptop" title="man siting facing laptop" srcset="https://images.unsplash.com/photo-1562813733-b31f71025d54?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYWNrZXJ8ZW58MHx8fHwxNzUzMzU3NDcxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1562813733-b31f71025d54?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYWNrZXJ8ZW58MHx8fHwxNzUzMzU3NDcxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1562813733-b31f71025d54?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYWNrZXJ8ZW58MHx8fHwxNzUzMzU3NDcxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1562813733-b31f71025d54?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYWNrZXJ8ZW58MHx8fHwxNzUzMzU3NDcxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="true">Clint Patterson</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>This is my walkthrough for the machine <code>Nibbles</code> on <strong><a href="https://referral.hackthebox.com/mzBNP9n">Hack The Box</a></strong>.</p><h3><strong>Enumeration</strong></h3><p>As usual we are only given the IP of our target machine. For convenience let's add that IP into our <code>/etc/hosts</code> file. That way we can simply use <code>target</code> instead of re-typing the whole IP whenever we need it for a command.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!h2GY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa4a4c-78bc-4e44-bf6d-e289c4c933fa_1023x280.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h2GY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa4a4c-78bc-4e44-bf6d-e289c4c933fa_1023x280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!h2GY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa4a4c-78bc-4e44-bf6d-e289c4c933fa_1023x280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!h2GY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa4a4c-78bc-4e44-bf6d-e289c4c933fa_1023x280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!h2GY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa4a4c-78bc-4e44-bf6d-e289c4c933fa_1023x280.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h2GY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa4a4c-78bc-4e44-bf6d-e289c4c933fa_1023x280.jpeg" width="1023" height="280" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c8aa4a4c-78bc-4e44-bf6d-e289c4c933fa_1023x280.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:280,&quot;width&quot;:1023,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!h2GY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa4a4c-78bc-4e44-bf6d-e289c4c933fa_1023x280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!h2GY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa4a4c-78bc-4e44-bf6d-e289c4c933fa_1023x280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!h2GY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa4a4c-78bc-4e44-bf6d-e289c4c933fa_1023x280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!h2GY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa4a4c-78bc-4e44-bf6d-e289c4c933fa_1023x280.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Next is a full scan with <strong><a href="https://nmap.org/">Nmap</a></strong>. I like to add the flag <code>--open</code> to only get open ports and not pollute the result with so much noise. The flag <code>-p-</code> tells Nmap to scan <strong>all</strong> ports, not just the most common ones.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eltv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ad652b3-b358-4001-aaa7-184865565c85_960x403.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eltv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ad652b3-b358-4001-aaa7-184865565c85_960x403.jpeg 424w, https://substackcdn.com/image/fetch/$s_!eltv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ad652b3-b358-4001-aaa7-184865565c85_960x403.jpeg 848w, https://substackcdn.com/image/fetch/$s_!eltv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ad652b3-b358-4001-aaa7-184865565c85_960x403.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!eltv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ad652b3-b358-4001-aaa7-184865565c85_960x403.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eltv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ad652b3-b358-4001-aaa7-184865565c85_960x403.jpeg" width="960" height="403" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ad652b3-b358-4001-aaa7-184865565c85_960x403.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:403,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eltv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ad652b3-b358-4001-aaa7-184865565c85_960x403.jpeg 424w, https://substackcdn.com/image/fetch/$s_!eltv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ad652b3-b358-4001-aaa7-184865565c85_960x403.jpeg 848w, https://substackcdn.com/image/fetch/$s_!eltv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ad652b3-b358-4001-aaa7-184865565c85_960x403.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!eltv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ad652b3-b358-4001-aaa7-184865565c85_960x403.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We see that there is an open <code>http port 80</code>. Let's use cURL to see if we get a response from there.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o0Pg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff42c036a-e387-4c0e-8e7b-ef24d15eeb18_597x383.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o0Pg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff42c036a-e387-4c0e-8e7b-ef24d15eeb18_597x383.jpeg 424w, https://substackcdn.com/image/fetch/$s_!o0Pg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff42c036a-e387-4c0e-8e7b-ef24d15eeb18_597x383.jpeg 848w, https://substackcdn.com/image/fetch/$s_!o0Pg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff42c036a-e387-4c0e-8e7b-ef24d15eeb18_597x383.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!o0Pg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff42c036a-e387-4c0e-8e7b-ef24d15eeb18_597x383.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o0Pg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff42c036a-e387-4c0e-8e7b-ef24d15eeb18_597x383.jpeg" width="597" height="383" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f42c036a-e387-4c0e-8e7b-ef24d15eeb18_597x383.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:383,&quot;width&quot;:597,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!o0Pg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff42c036a-e387-4c0e-8e7b-ef24d15eeb18_597x383.jpeg 424w, https://substackcdn.com/image/fetch/$s_!o0Pg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff42c036a-e387-4c0e-8e7b-ef24d15eeb18_597x383.jpeg 848w, https://substackcdn.com/image/fetch/$s_!o0Pg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff42c036a-e387-4c0e-8e7b-ef24d15eeb18_597x383.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!o0Pg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff42c036a-e387-4c0e-8e7b-ef24d15eeb18_597x383.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We get a boring <strong>Hello world!</strong>. But further down, we see a hint. It seems like there is a sub-directory called <code>nibbleblog</code>. Let's cURL <code>http://target/nibbleblog</code> and we get quite a huge response. So we better open that in the browser:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rBCM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0b720a6-170f-46a4-ad2f-7181a7c70195_1281x838.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rBCM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0b720a6-170f-46a4-ad2f-7181a7c70195_1281x838.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rBCM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0b720a6-170f-46a4-ad2f-7181a7c70195_1281x838.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rBCM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0b720a6-170f-46a4-ad2f-7181a7c70195_1281x838.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rBCM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0b720a6-170f-46a4-ad2f-7181a7c70195_1281x838.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rBCM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0b720a6-170f-46a4-ad2f-7181a7c70195_1281x838.jpeg" width="1281" height="838" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0b720a6-170f-46a4-ad2f-7181a7c70195_1281x838.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:838,&quot;width&quot;:1281,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rBCM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0b720a6-170f-46a4-ad2f-7181a7c70195_1281x838.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rBCM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0b720a6-170f-46a4-ad2f-7181a7c70195_1281x838.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rBCM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0b720a6-170f-46a4-ad2f-7181a7c70195_1281x838.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rBCM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0b720a6-170f-46a4-ad2f-7181a7c70195_1281x838.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Alright! Looks like some dude named <code>Nibbles</code> runs a blog about <code>Yum yum</code>, or a dude named <code>Yum yum</code> runs a blog about <code>Nibbles</code>!? Either way around, that sounds wrong. But unfortunately there is nothing more interesting to find here, I guess. There are no posts yet. There is no <code>about</code> page, no <code>login</code> page, no <code>guestbook</code>. So let's enumerate further and start <strong><a href="https://github.com/OJ/gobuster">gobuster</a></strong> to see if we can find more hidden sub-directories of that blog. We use a list from <strong><a href="https://github.com/danielmiessler/SecLists">SecLists</a></strong> for that.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ILSQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca29d-fb2f-4c24-8e2d-0c4d58e3cff9_1144x668.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ILSQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca29d-fb2f-4c24-8e2d-0c4d58e3cff9_1144x668.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ILSQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca29d-fb2f-4c24-8e2d-0c4d58e3cff9_1144x668.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ILSQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca29d-fb2f-4c24-8e2d-0c4d58e3cff9_1144x668.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ILSQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca29d-fb2f-4c24-8e2d-0c4d58e3cff9_1144x668.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ILSQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca29d-fb2f-4c24-8e2d-0c4d58e3cff9_1144x668.jpeg" width="1144" height="668" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3fca29d-fb2f-4c24-8e2d-0c4d58e3cff9_1144x668.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:668,&quot;width&quot;:1144,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ILSQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca29d-fb2f-4c24-8e2d-0c4d58e3cff9_1144x668.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ILSQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca29d-fb2f-4c24-8e2d-0c4d58e3cff9_1144x668.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ILSQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca29d-fb2f-4c24-8e2d-0c4d58e3cff9_1144x668.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ILSQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fca29d-fb2f-4c24-8e2d-0c4d58e3cff9_1144x668.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Nice, we have quite some findings! Let's start with the <code>/README</code> since that really sounds promising.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!C87q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10a2b14-7747-437a-937f-cbee267b0715_554x590.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C87q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10a2b14-7747-437a-937f-cbee267b0715_554x590.jpeg 424w, https://substackcdn.com/image/fetch/$s_!C87q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10a2b14-7747-437a-937f-cbee267b0715_554x590.jpeg 848w, https://substackcdn.com/image/fetch/$s_!C87q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10a2b14-7747-437a-937f-cbee267b0715_554x590.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!C87q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10a2b14-7747-437a-937f-cbee267b0715_554x590.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C87q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10a2b14-7747-437a-937f-cbee267b0715_554x590.jpeg" width="554" height="590" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b10a2b14-7747-437a-937f-cbee267b0715_554x590.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:590,&quot;width&quot;:554,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!C87q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10a2b14-7747-437a-937f-cbee267b0715_554x590.jpeg 424w, https://substackcdn.com/image/fetch/$s_!C87q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10a2b14-7747-437a-937f-cbee267b0715_554x590.jpeg 848w, https://substackcdn.com/image/fetch/$s_!C87q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10a2b14-7747-437a-937f-cbee267b0715_554x590.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!C87q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10a2b14-7747-437a-937f-cbee267b0715_554x590.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This provides us with some URLs that give insights to <code>nibbleblog</code> which appears to be a <code>CMS</code> for blogs. This also gives us a first inside into the tech stack of the blog: It runs on <code>PHP</code>. Let's verify that with <strong><a href="https://whatweb.net/">WhatWeb</a></strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zn4v!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c5ccfa-9a96-43af-8bd8-45f85d26badb_1857x119.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zn4v!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c5ccfa-9a96-43af-8bd8-45f85d26badb_1857x119.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zn4v!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c5ccfa-9a96-43af-8bd8-45f85d26badb_1857x119.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zn4v!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c5ccfa-9a96-43af-8bd8-45f85d26badb_1857x119.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zn4v!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c5ccfa-9a96-43af-8bd8-45f85d26badb_1857x119.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zn4v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c5ccfa-9a96-43af-8bd8-45f85d26badb_1857x119.jpeg" width="1456" height="93" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/27c5ccfa-9a96-43af-8bd8-45f85d26badb_1857x119.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:93,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zn4v!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c5ccfa-9a96-43af-8bd8-45f85d26badb_1857x119.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zn4v!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c5ccfa-9a96-43af-8bd8-45f85d26badb_1857x119.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zn4v!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c5ccfa-9a96-43af-8bd8-45f85d26badb_1857x119.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zn4v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27c5ccfa-9a96-43af-8bd8-45f85d26badb_1857x119.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>We see <code>PHP</code> again, so that seems to be correct. Also we that the blog might be running on <code>Ubuntu</code>.</p><p>Let's check the next URL we found. <code>/content</code> is very interesting since it contains further sub-directories called <code>/private</code> and <code>/tmp</code>. Digging deeper we can find file called <code>config.xml</code>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iUrc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0fe4ba-7dae-43dd-928b-938acec85e41_540x347.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iUrc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0fe4ba-7dae-43dd-928b-938acec85e41_540x347.png 424w, https://substackcdn.com/image/fetch/$s_!iUrc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0fe4ba-7dae-43dd-928b-938acec85e41_540x347.png 848w, https://substackcdn.com/image/fetch/$s_!iUrc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0fe4ba-7dae-43dd-928b-938acec85e41_540x347.png 1272w, https://substackcdn.com/image/fetch/$s_!iUrc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0fe4ba-7dae-43dd-928b-938acec85e41_540x347.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iUrc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0fe4ba-7dae-43dd-928b-938acec85e41_540x347.png" width="540" height="347" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db0fe4ba-7dae-43dd-928b-938acec85e41_540x347.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:347,&quot;width&quot;:540,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38210,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/169130106?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0fe4ba-7dae-43dd-928b-938acec85e41_540x347.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iUrc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0fe4ba-7dae-43dd-928b-938acec85e41_540x347.png 424w, https://substackcdn.com/image/fetch/$s_!iUrc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0fe4ba-7dae-43dd-928b-938acec85e41_540x347.png 848w, https://substackcdn.com/image/fetch/$s_!iUrc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0fe4ba-7dae-43dd-928b-938acec85e41_540x347.png 1272w, https://substackcdn.com/image/fetch/$s_!iUrc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb0fe4ba-7dae-43dd-928b-938acec85e41_540x347.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_GkD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57aaede4-78d9-43c5-8405-51debdeea20c_757x722.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_GkD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57aaede4-78d9-43c5-8405-51debdeea20c_757x722.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_GkD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57aaede4-78d9-43c5-8405-51debdeea20c_757x722.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_GkD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57aaede4-78d9-43c5-8405-51debdeea20c_757x722.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_GkD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57aaede4-78d9-43c5-8405-51debdeea20c_757x722.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_GkD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57aaede4-78d9-43c5-8405-51debdeea20c_757x722.jpeg" width="757" height="722" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/57aaede4-78d9-43c5-8405-51debdeea20c_757x722.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:722,&quot;width&quot;:757,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_GkD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57aaede4-78d9-43c5-8405-51debdeea20c_757x722.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_GkD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57aaede4-78d9-43c5-8405-51debdeea20c_757x722.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_GkD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57aaede4-78d9-43c5-8405-51debdeea20c_757x722.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_GkD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57aaede4-78d9-43c5-8405-51debdeea20c_757x722.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>There is a lot more <code>nibbles</code> and <code>yum yum</code> garbage. But there are also some email addresses, especially <code>admin@nibbles.com</code>. This could indicate that <code>admin</code> is a possible user name for the blog. We are able to verify that in the next file called <code>users.xml</code>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!z9_m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c06fb4-3524-487c-84ed-8d65a50c902b_755x301.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!z9_m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c06fb4-3524-487c-84ed-8d65a50c902b_755x301.jpeg 424w, https://substackcdn.com/image/fetch/$s_!z9_m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c06fb4-3524-487c-84ed-8d65a50c902b_755x301.jpeg 848w, https://substackcdn.com/image/fetch/$s_!z9_m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c06fb4-3524-487c-84ed-8d65a50c902b_755x301.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!z9_m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c06fb4-3524-487c-84ed-8d65a50c902b_755x301.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!z9_m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c06fb4-3524-487c-84ed-8d65a50c902b_755x301.jpeg" width="755" height="301" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85c06fb4-3524-487c-84ed-8d65a50c902b_755x301.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:301,&quot;width&quot;:755,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!z9_m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c06fb4-3524-487c-84ed-8d65a50c902b_755x301.jpeg 424w, https://substackcdn.com/image/fetch/$s_!z9_m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c06fb4-3524-487c-84ed-8d65a50c902b_755x301.jpeg 848w, https://substackcdn.com/image/fetch/$s_!z9_m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c06fb4-3524-487c-84ed-8d65a50c902b_755x301.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!z9_m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85c06fb4-3524-487c-84ed-8d65a50c902b_755x301.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Moving on to <code>/admin</code> gives us login page. Knowing that <code>admin</code> is a valid user, let's try some obvious passwords like <code>admin</code>, <code>administrator</code>, <code>password</code>. Sadly that does not work.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LEOo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab1afb2-4d2c-4f2d-b717-dcc091e452ce_962x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LEOo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab1afb2-4d2c-4f2d-b717-dcc091e452ce_962x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LEOo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab1afb2-4d2c-4f2d-b717-dcc091e452ce_962x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LEOo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab1afb2-4d2c-4f2d-b717-dcc091e452ce_962x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LEOo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab1afb2-4d2c-4f2d-b717-dcc091e452ce_962x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LEOo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab1afb2-4d2c-4f2d-b717-dcc091e452ce_962x500.jpeg" width="962" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7ab1afb2-4d2c-4f2d-b717-dcc091e452ce_962x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:962,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LEOo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab1afb2-4d2c-4f2d-b717-dcc091e452ce_962x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LEOo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab1afb2-4d2c-4f2d-b717-dcc091e452ce_962x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LEOo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab1afb2-4d2c-4f2d-b717-dcc091e452ce_962x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LEOo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab1afb2-4d2c-4f2d-b717-dcc091e452ce_962x500.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Let's run <strong><a href="https://github.com/digininja/CeWL">CeWL</a></strong> to generate a custom wordlist that we might use later to brute-force the password. CeWL crawls the whole page and collects long words and/or words that are mentioned very often.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0hP_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefafb84f-8d14-4052-ba42-f5c4072800b3_1002x761.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0hP_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefafb84f-8d14-4052-ba42-f5c4072800b3_1002x761.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0hP_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefafb84f-8d14-4052-ba42-f5c4072800b3_1002x761.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0hP_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefafb84f-8d14-4052-ba42-f5c4072800b3_1002x761.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0hP_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefafb84f-8d14-4052-ba42-f5c4072800b3_1002x761.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0hP_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefafb84f-8d14-4052-ba42-f5c4072800b3_1002x761.jpeg" width="1002" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efafb84f-8d14-4052-ba42-f5c4072800b3_1002x761.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1002,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0hP_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefafb84f-8d14-4052-ba42-f5c4072800b3_1002x761.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0hP_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefafb84f-8d14-4052-ba42-f5c4072800b3_1002x761.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0hP_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefafb84f-8d14-4052-ba42-f5c4072800b3_1002x761.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0hP_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefafb84f-8d14-4052-ba42-f5c4072800b3_1002x761.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Wow. <code>Nibbles</code> is really mentioned <code>9</code> times. And, thank god, the password <code>nibbles</code> grants us access to the admin area of the page. From here we are able to publish new blog posts, change the theme, or tweak some settings. Also there are some plugins installed. One let's you upload an image. When we try that, the image appears in the already found directory <code>content/private/plugins/my_image/</code>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FsI3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7cbf87-8a7a-41f8-b602-2cda8710125a_651x506.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FsI3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7cbf87-8a7a-41f8-b602-2cda8710125a_651x506.png 424w, https://substackcdn.com/image/fetch/$s_!FsI3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7cbf87-8a7a-41f8-b602-2cda8710125a_651x506.png 848w, https://substackcdn.com/image/fetch/$s_!FsI3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7cbf87-8a7a-41f8-b602-2cda8710125a_651x506.png 1272w, https://substackcdn.com/image/fetch/$s_!FsI3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7cbf87-8a7a-41f8-b602-2cda8710125a_651x506.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FsI3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7cbf87-8a7a-41f8-b602-2cda8710125a_651x506.png" width="651" height="506" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d7cbf87-8a7a-41f8-b602-2cda8710125a_651x506.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:506,&quot;width&quot;:651,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:39014,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/169130106?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7cbf87-8a7a-41f8-b602-2cda8710125a_651x506.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FsI3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7cbf87-8a7a-41f8-b602-2cda8710125a_651x506.png 424w, https://substackcdn.com/image/fetch/$s_!FsI3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7cbf87-8a7a-41f8-b602-2cda8710125a_651x506.png 848w, https://substackcdn.com/image/fetch/$s_!FsI3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7cbf87-8a7a-41f8-b602-2cda8710125a_651x506.png 1272w, https://substackcdn.com/image/fetch/$s_!FsI3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7cbf87-8a7a-41f8-b602-2cda8710125a_651x506.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!szl9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d868946-7bb3-42cb-8190-234eee13bfc7_793x338.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!szl9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d868946-7bb3-42cb-8190-234eee13bfc7_793x338.jpeg 424w, https://substackcdn.com/image/fetch/$s_!szl9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d868946-7bb3-42cb-8190-234eee13bfc7_793x338.jpeg 848w, https://substackcdn.com/image/fetch/$s_!szl9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d868946-7bb3-42cb-8190-234eee13bfc7_793x338.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!szl9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d868946-7bb3-42cb-8190-234eee13bfc7_793x338.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!szl9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d868946-7bb3-42cb-8190-234eee13bfc7_793x338.jpeg" width="793" height="338" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1d868946-7bb3-42cb-8190-234eee13bfc7_793x338.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:338,&quot;width&quot;:793,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!szl9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d868946-7bb3-42cb-8190-234eee13bfc7_793x338.jpeg 424w, https://substackcdn.com/image/fetch/$s_!szl9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d868946-7bb3-42cb-8190-234eee13bfc7_793x338.jpeg 848w, https://substackcdn.com/image/fetch/$s_!szl9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d868946-7bb3-42cb-8190-234eee13bfc7_793x338.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!szl9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d868946-7bb3-42cb-8190-234eee13bfc7_793x338.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>Initial Access</strong></h3><p>Since we are now able to upload a file and also access it afterwards, let's try to upload a <code>web shell</code> for PHP. We use a simple test string for that.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V_N6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75bc352-ae9c-4a3f-847a-f9e6102f486f_766x247.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V_N6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75bc352-ae9c-4a3f-847a-f9e6102f486f_766x247.png 424w, https://substackcdn.com/image/fetch/$s_!V_N6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75bc352-ae9c-4a3f-847a-f9e6102f486f_766x247.png 848w, https://substackcdn.com/image/fetch/$s_!V_N6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75bc352-ae9c-4a3f-847a-f9e6102f486f_766x247.png 1272w, https://substackcdn.com/image/fetch/$s_!V_N6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75bc352-ae9c-4a3f-847a-f9e6102f486f_766x247.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V_N6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75bc352-ae9c-4a3f-847a-f9e6102f486f_766x247.png" width="766" height="247" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c75bc352-ae9c-4a3f-847a-f9e6102f486f_766x247.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:247,&quot;width&quot;:766,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32374,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/169130106?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75bc352-ae9c-4a3f-847a-f9e6102f486f_766x247.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V_N6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75bc352-ae9c-4a3f-847a-f9e6102f486f_766x247.png 424w, https://substackcdn.com/image/fetch/$s_!V_N6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75bc352-ae9c-4a3f-847a-f9e6102f486f_766x247.png 848w, https://substackcdn.com/image/fetch/$s_!V_N6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75bc352-ae9c-4a3f-847a-f9e6102f486f_766x247.png 1272w, https://substackcdn.com/image/fetch/$s_!V_N6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75bc352-ae9c-4a3f-847a-f9e6102f486f_766x247.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W5_6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d615f62-c572-4e02-8a74-ecbb7a52a80a_788x86.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W5_6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d615f62-c572-4e02-8a74-ecbb7a52a80a_788x86.jpeg 424w, https://substackcdn.com/image/fetch/$s_!W5_6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d615f62-c572-4e02-8a74-ecbb7a52a80a_788x86.jpeg 848w, https://substackcdn.com/image/fetch/$s_!W5_6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d615f62-c572-4e02-8a74-ecbb7a52a80a_788x86.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!W5_6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d615f62-c572-4e02-8a74-ecbb7a52a80a_788x86.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W5_6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d615f62-c572-4e02-8a74-ecbb7a52a80a_788x86.jpeg" width="788" height="86" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4d615f62-c572-4e02-8a74-ecbb7a52a80a_788x86.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:86,&quot;width&quot;:788,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!W5_6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d615f62-c572-4e02-8a74-ecbb7a52a80a_788x86.jpeg 424w, https://substackcdn.com/image/fetch/$s_!W5_6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d615f62-c572-4e02-8a74-ecbb7a52a80a_788x86.jpeg 848w, https://substackcdn.com/image/fetch/$s_!W5_6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d615f62-c572-4e02-8a74-ecbb7a52a80a_788x86.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!W5_6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d615f62-c572-4e02-8a74-ecbb7a52a80a_788x86.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Since that worked, let's go a step further and upload a <code>reverse shell</code> to gain our first foothold on the target. We can find all kinds of <code>reverse shells</code> on pages like <strong><a href="https://gtfobins.github.io/">GTFOBins</a></strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p9tK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7e3b646-f86d-4b88-9b71-05430927d973_1108x100.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p9tK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7e3b646-f86d-4b88-9b71-05430927d973_1108x100.png 424w, https://substackcdn.com/image/fetch/$s_!p9tK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7e3b646-f86d-4b88-9b71-05430927d973_1108x100.png 848w, https://substackcdn.com/image/fetch/$s_!p9tK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7e3b646-f86d-4b88-9b71-05430927d973_1108x100.png 1272w, https://substackcdn.com/image/fetch/$s_!p9tK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7e3b646-f86d-4b88-9b71-05430927d973_1108x100.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p9tK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7e3b646-f86d-4b88-9b71-05430927d973_1108x100.png" width="1108" height="100" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e7e3b646-f86d-4b88-9b71-05430927d973_1108x100.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:100,&quot;width&quot;:1108,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:15153,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/169130106?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7e3b646-f86d-4b88-9b71-05430927d973_1108x100.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!p9tK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7e3b646-f86d-4b88-9b71-05430927d973_1108x100.png 424w, https://substackcdn.com/image/fetch/$s_!p9tK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7e3b646-f86d-4b88-9b71-05430927d973_1108x100.png 848w, https://substackcdn.com/image/fetch/$s_!p9tK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7e3b646-f86d-4b88-9b71-05430927d973_1108x100.png 1272w, https://substackcdn.com/image/fetch/$s_!p9tK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7e3b646-f86d-4b88-9b71-05430927d973_1108x100.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Po_-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfab219-3b99-41c0-ab50-da3c8649b8b5_541x251.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Po_-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfab219-3b99-41c0-ab50-da3c8649b8b5_541x251.png 424w, https://substackcdn.com/image/fetch/$s_!Po_-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfab219-3b99-41c0-ab50-da3c8649b8b5_541x251.png 848w, https://substackcdn.com/image/fetch/$s_!Po_-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfab219-3b99-41c0-ab50-da3c8649b8b5_541x251.png 1272w, https://substackcdn.com/image/fetch/$s_!Po_-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfab219-3b99-41c0-ab50-da3c8649b8b5_541x251.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Po_-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfab219-3b99-41c0-ab50-da3c8649b8b5_541x251.png" width="541" height="251" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6cfab219-3b99-41c0-ab50-da3c8649b8b5_541x251.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:251,&quot;width&quot;:541,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:22619,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/169130106?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfab219-3b99-41c0-ab50-da3c8649b8b5_541x251.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Po_-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfab219-3b99-41c0-ab50-da3c8649b8b5_541x251.png 424w, https://substackcdn.com/image/fetch/$s_!Po_-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfab219-3b99-41c0-ab50-da3c8649b8b5_541x251.png 848w, https://substackcdn.com/image/fetch/$s_!Po_-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfab219-3b99-41c0-ab50-da3c8649b8b5_541x251.png 1272w, https://substackcdn.com/image/fetch/$s_!Po_-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6cfab219-3b99-41c0-ab50-da3c8649b8b5_541x251.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CIVl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7e0cd5-9c51-4c8c-8aaa-a40dc9ca86e9_556x119.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CIVl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7e0cd5-9c51-4c8c-8aaa-a40dc9ca86e9_556x119.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CIVl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7e0cd5-9c51-4c8c-8aaa-a40dc9ca86e9_556x119.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CIVl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7e0cd5-9c51-4c8c-8aaa-a40dc9ca86e9_556x119.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CIVl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7e0cd5-9c51-4c8c-8aaa-a40dc9ca86e9_556x119.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CIVl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7e0cd5-9c51-4c8c-8aaa-a40dc9ca86e9_556x119.jpeg" width="556" height="119" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cd7e0cd5-9c51-4c8c-8aaa-a40dc9ca86e9_556x119.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:119,&quot;width&quot;:556,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CIVl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7e0cd5-9c51-4c8c-8aaa-a40dc9ca86e9_556x119.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CIVl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7e0cd5-9c51-4c8c-8aaa-a40dc9ca86e9_556x119.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CIVl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7e0cd5-9c51-4c8c-8aaa-a40dc9ca86e9_556x119.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CIVl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd7e0cd5-9c51-4c8c-8aaa-a40dc9ca86e9_556x119.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h3><strong>Privilege Escalation</strong></h3><p>Now that we are in, we have to gain ourselves <code>root</code> rights. This includes re-starting the enumeration phase of our attack. We just found a file called <code>personal.zip</code> right next to the user flag. We should check that out.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jk_M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febefa7b1-bdf5-4384-8b64-f208df1272a7_506x145.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jk_M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febefa7b1-bdf5-4384-8b64-f208df1272a7_506x145.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jk_M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febefa7b1-bdf5-4384-8b64-f208df1272a7_506x145.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jk_M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febefa7b1-bdf5-4384-8b64-f208df1272a7_506x145.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jk_M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febefa7b1-bdf5-4384-8b64-f208df1272a7_506x145.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jk_M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febefa7b1-bdf5-4384-8b64-f208df1272a7_506x145.jpeg" width="506" height="145" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ebefa7b1-bdf5-4384-8b64-f208df1272a7_506x145.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:145,&quot;width&quot;:506,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jk_M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febefa7b1-bdf5-4384-8b64-f208df1272a7_506x145.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jk_M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febefa7b1-bdf5-4384-8b64-f208df1272a7_506x145.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jk_M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febefa7b1-bdf5-4384-8b64-f208df1272a7_506x145.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jk_M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febefa7b1-bdf5-4384-8b64-f208df1272a7_506x145.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>That script is quite big. We will defer digging deeper into it and proceed our enumeration first. Let's upload one of the big privilege escalation scripts like <strong><a href="https://github.com/rebootuser/LinEnum">LinEnum</a></strong> or <strong><a href="https://github.com/peass-ng/PEASS-ng/tree/master/linPEAS">LinPEAS</a></strong> onto our target and execute it. We do that by serving a <code>http server</code> via <code>python</code> on our machine and get the file on our target machine via <code>wget</code>.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3Px2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b9bbba-c521-4096-86de-7155c4c49ac4_1115x84.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3Px2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b9bbba-c521-4096-86de-7155c4c49ac4_1115x84.png 424w, https://substackcdn.com/image/fetch/$s_!3Px2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b9bbba-c521-4096-86de-7155c4c49ac4_1115x84.png 848w, https://substackcdn.com/image/fetch/$s_!3Px2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b9bbba-c521-4096-86de-7155c4c49ac4_1115x84.png 1272w, https://substackcdn.com/image/fetch/$s_!3Px2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b9bbba-c521-4096-86de-7155c4c49ac4_1115x84.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3Px2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b9bbba-c521-4096-86de-7155c4c49ac4_1115x84.png" width="1115" height="84" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2b9bbba-c521-4096-86de-7155c4c49ac4_1115x84.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:84,&quot;width&quot;:1115,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:16187,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/169130106?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b9bbba-c521-4096-86de-7155c4c49ac4_1115x84.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3Px2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b9bbba-c521-4096-86de-7155c4c49ac4_1115x84.png 424w, https://substackcdn.com/image/fetch/$s_!3Px2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b9bbba-c521-4096-86de-7155c4c49ac4_1115x84.png 848w, https://substackcdn.com/image/fetch/$s_!3Px2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b9bbba-c521-4096-86de-7155c4c49ac4_1115x84.png 1272w, https://substackcdn.com/image/fetch/$s_!3Px2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b9bbba-c521-4096-86de-7155c4c49ac4_1115x84.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yr7L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bae50e3-e128-4ecb-b61b-c1c049707364_779x364.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yr7L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bae50e3-e128-4ecb-b61b-c1c049707364_779x364.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yr7L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bae50e3-e128-4ecb-b61b-c1c049707364_779x364.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yr7L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bae50e3-e128-4ecb-b61b-c1c049707364_779x364.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yr7L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bae50e3-e128-4ecb-b61b-c1c049707364_779x364.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yr7L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bae50e3-e128-4ecb-b61b-c1c049707364_779x364.jpeg" width="779" height="364" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9bae50e3-e128-4ecb-b61b-c1c049707364_779x364.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:364,&quot;width&quot;:779,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yr7L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bae50e3-e128-4ecb-b61b-c1c049707364_779x364.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yr7L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bae50e3-e128-4ecb-b61b-c1c049707364_779x364.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yr7L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bae50e3-e128-4ecb-b61b-c1c049707364_779x364.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yr7L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bae50e3-e128-4ecb-b61b-c1c049707364_779x364.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>After executing the script on our target machine we get a finding. It seems like our user <code>nibbler</code> is allowed to run the previously found script <code>monitor.sh</code> as <code>root</code> without password!</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!J-5C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e674bcc-55b2-42c2-b05a-eca600dd29c7_1120x272.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!J-5C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e674bcc-55b2-42c2-b05a-eca600dd29c7_1120x272.jpeg 424w, https://substackcdn.com/image/fetch/$s_!J-5C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e674bcc-55b2-42c2-b05a-eca600dd29c7_1120x272.jpeg 848w, https://substackcdn.com/image/fetch/$s_!J-5C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e674bcc-55b2-42c2-b05a-eca600dd29c7_1120x272.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!J-5C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e674bcc-55b2-42c2-b05a-eca600dd29c7_1120x272.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!J-5C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e674bcc-55b2-42c2-b05a-eca600dd29c7_1120x272.jpeg" width="1120" height="272" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e674bcc-55b2-42c2-b05a-eca600dd29c7_1120x272.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:272,&quot;width&quot;:1120,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!J-5C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e674bcc-55b2-42c2-b05a-eca600dd29c7_1120x272.jpeg 424w, https://substackcdn.com/image/fetch/$s_!J-5C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e674bcc-55b2-42c2-b05a-eca600dd29c7_1120x272.jpeg 848w, https://substackcdn.com/image/fetch/$s_!J-5C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e674bcc-55b2-42c2-b05a-eca600dd29c7_1120x272.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!J-5C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e674bcc-55b2-42c2-b05a-eca600dd29c7_1120x272.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>In that case let's visit <strong><a href="https://gtfobins.github.io/">GTFOBins</a></strong> again, grab a <code>reverse shell</code>, append it to the file <code>monitor.sh</code>, and execute the script.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BCWN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b35d894-01a1-48d8-9b48-089da73ca22f_1116x201.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BCWN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b35d894-01a1-48d8-9b48-089da73ca22f_1116x201.png 424w, https://substackcdn.com/image/fetch/$s_!BCWN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b35d894-01a1-48d8-9b48-089da73ca22f_1116x201.png 848w, https://substackcdn.com/image/fetch/$s_!BCWN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b35d894-01a1-48d8-9b48-089da73ca22f_1116x201.png 1272w, https://substackcdn.com/image/fetch/$s_!BCWN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b35d894-01a1-48d8-9b48-089da73ca22f_1116x201.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BCWN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b35d894-01a1-48d8-9b48-089da73ca22f_1116x201.png" width="1116" height="201" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b35d894-01a1-48d8-9b48-089da73ca22f_1116x201.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:201,&quot;width&quot;:1116,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:43829,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/169130106?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b35d894-01a1-48d8-9b48-089da73ca22f_1116x201.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BCWN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b35d894-01a1-48d8-9b48-089da73ca22f_1116x201.png 424w, https://substackcdn.com/image/fetch/$s_!BCWN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b35d894-01a1-48d8-9b48-089da73ca22f_1116x201.png 848w, https://substackcdn.com/image/fetch/$s_!BCWN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b35d894-01a1-48d8-9b48-089da73ca22f_1116x201.png 1272w, https://substackcdn.com/image/fetch/$s_!BCWN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b35d894-01a1-48d8-9b48-089da73ca22f_1116x201.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mG0s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3eb468bf-6835-4b3c-b66a-8855d3245cda_547x199.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mG0s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3eb468bf-6835-4b3c-b66a-8855d3245cda_547x199.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mG0s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3eb468bf-6835-4b3c-b66a-8855d3245cda_547x199.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mG0s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3eb468bf-6835-4b3c-b66a-8855d3245cda_547x199.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mG0s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3eb468bf-6835-4b3c-b66a-8855d3245cda_547x199.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mG0s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3eb468bf-6835-4b3c-b66a-8855d3245cda_547x199.jpeg" width="547" height="199" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3eb468bf-6835-4b3c-b66a-8855d3245cda_547x199.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:199,&quot;width&quot;:547,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mG0s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3eb468bf-6835-4b3c-b66a-8855d3245cda_547x199.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mG0s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3eb468bf-6835-4b3c-b66a-8855d3245cda_547x199.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mG0s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3eb468bf-6835-4b3c-b66a-8855d3245cda_547x199.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mG0s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3eb468bf-6835-4b3c-b66a-8855d3245cda_547x199.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>We are <code>root</code>! Now we own the machine. All there is left to do, is getting the <code>root</code> flag.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!47kN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe49eba1d-743f-4ca1-a52b-aec78caa55f8_552x272.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!47kN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe49eba1d-743f-4ca1-a52b-aec78caa55f8_552x272.jpeg 424w, https://substackcdn.com/image/fetch/$s_!47kN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe49eba1d-743f-4ca1-a52b-aec78caa55f8_552x272.jpeg 848w, https://substackcdn.com/image/fetch/$s_!47kN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe49eba1d-743f-4ca1-a52b-aec78caa55f8_552x272.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!47kN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe49eba1d-743f-4ca1-a52b-aec78caa55f8_552x272.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!47kN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe49eba1d-743f-4ca1-a52b-aec78caa55f8_552x272.jpeg" width="552" height="272" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e49eba1d-743f-4ca1-a52b-aec78caa55f8_552x272.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:272,&quot;width&quot;:552,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!47kN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe49eba1d-743f-4ca1-a52b-aec78caa55f8_552x272.jpeg 424w, https://substackcdn.com/image/fetch/$s_!47kN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe49eba1d-743f-4ca1-a52b-aec78caa55f8_552x272.jpeg 848w, https://substackcdn.com/image/fetch/$s_!47kN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe49eba1d-743f-4ca1-a52b-aec78caa55f8_552x272.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!47kN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe49eba1d-743f-4ca1-a52b-aec78caa55f8_552x272.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[My guests' favorite automation is dumb as hell]]></title><description><![CDATA[I've installed quite some smart home stuff in my house.]]></description><link>https://www.cellos.blog/p/my-guests-favorite-automation-is-dumb-as-hell</link><guid isPermaLink="false">https://www.cellos.blog/p/my-guests-favorite-automation-is-dumb-as-hell</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Thu, 24 Jul 2025 11:41:52 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1578269174936-2709b6aeb913?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx0cm9waHl8ZW58MHx8fHwxNzUzMzU3Mjk2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1578269174936-2709b6aeb913?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx0cm9waHl8ZW58MHx8fHwxNzUzMzU3Mjk2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1578269174936-2709b6aeb913?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx0cm9waHl8ZW58MHx8fHwxNzUzMzU3Mjk2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1578269174936-2709b6aeb913?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx0cm9waHl8ZW58MHx8fHwxNzUzMzU3Mjk2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1578269174936-2709b6aeb913?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx0cm9waHl8ZW58MHx8fHwxNzUzMzU3Mjk2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1578269174936-2709b6aeb913?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx0cm9waHl8ZW58MHx8fHwxNzUzMzU3Mjk2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1578269174936-2709b6aeb913?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx0cm9waHl8ZW58MHx8fHwxNzUzMzU3Mjk2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="5282" height="3521" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1578269174936-2709b6aeb913?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx0cm9waHl8ZW58MHx8fHwxNzUzMzU3Mjk2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3521,&quot;width&quot;:5282,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;yellow and white trophy&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="yellow and white trophy" title="yellow and white trophy" srcset="https://images.unsplash.com/photo-1578269174936-2709b6aeb913?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx0cm9waHl8ZW58MHx8fHwxNzUzMzU3Mjk2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1578269174936-2709b6aeb913?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx0cm9waHl8ZW58MHx8fHwxNzUzMzU3Mjk2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1578269174936-2709b6aeb913?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx0cm9waHl8ZW58MHx8fHwxNzUzMzU3Mjk2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1578269174936-2709b6aeb913?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx0cm9waHl8ZW58MHx8fHwxNzUzMzU3Mjk2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="true">Giorgio Trovato</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>I've installed quite some smart home stuff in my house. Some projects I'm really proud of, like the <strong><a href="https://www.cellos.blog/spotify-made-my-daughter-cry-home-assistant-made-her-smile-again/">music box I built for my daughter</a></strong>. Others are super nerdy, like the <strong><a href="https://www.cellos.blog/how-home-assistant-saves-me-250-every-year/">smart meter I made for my gas meter</a></strong>.</p><p>I would have expected visitors who are not so tech-savvy to be really impressed by that.</p><p>To my surprise, however, I always find that another, totally dumb automation is the winner of the visitors' hearts... But first a little more background:</p><h2><strong>Open house</strong></h2><p>We enter our garden directly from the living room via a patio door. The door has a <strong><a href="https://amzn.to/4jgGhcb">handle</a></strong> like the ones on windows. If you turn the handle horizontally, the door can be opened. If the handle is pointing downwards, it is locked.</p><p>This door was often accidentally left open because it was only pushed shut but the handle was left in the horizontal position. This makes you feel quite uncomfortable when nobody is in the house.</p><p>A smart solution had to be found...</p><h2><strong>Home Assistant to the rescue!</strong></h2><p>The classic solution for detecting open windows and doors is using <strong><a href="https://amzn.to/3DQutx0">smart magnetic contacts</a></strong>, which I've installed a lot in my house. But for this problem door, of course, that's not enough because it's <code>closed</code> according to the magnetic contact but not really <code>locked</code> due to the handle position.</p><p>But after a bit of research, I found out that there are also <strong><a href="https://amzn.to/3E3Tl4s">door handle sensors</a></strong>! They don't seem to be quite so common because there isn't such a wide vendor range, but they are just right for this application.</p><p>They tell me which position the door handle is in, regardless of whether the door is open or closed.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gdpb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ad50de3-3a11-496a-acdd-5648c18821a5_446x198.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gdpb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ad50de3-3a11-496a-acdd-5648c18821a5_446x198.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gdpb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ad50de3-3a11-496a-acdd-5648c18821a5_446x198.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gdpb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ad50de3-3a11-496a-acdd-5648c18821a5_446x198.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gdpb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ad50de3-3a11-496a-acdd-5648c18821a5_446x198.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gdpb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ad50de3-3a11-496a-acdd-5648c18821a5_446x198.jpeg" width="446" height="198" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7ad50de3-3a11-496a-acdd-5648c18821a5_446x198.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:198,&quot;width&quot;:446,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gdpb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ad50de3-3a11-496a-acdd-5648c18821a5_446x198.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gdpb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ad50de3-3a11-496a-acdd-5648c18821a5_446x198.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gdpb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ad50de3-3a11-496a-acdd-5648c18821a5_446x198.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gdpb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ad50de3-3a11-496a-acdd-5648c18821a5_446x198.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>This is exactly the state I need to solve the problem. For example, I can now show on our dashboard that the door is open. This means we can see this directly before we leave the house or go to bed. I also send a message to my cell phone if the door is still open while no one is at home.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ituE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7faeb12-2751-4ba8-83fd-0a9ec589bae6_446x237.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ituE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7faeb12-2751-4ba8-83fd-0a9ec589bae6_446x237.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ituE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7faeb12-2751-4ba8-83fd-0a9ec589bae6_446x237.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ituE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7faeb12-2751-4ba8-83fd-0a9ec589bae6_446x237.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ituE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7faeb12-2751-4ba8-83fd-0a9ec589bae6_446x237.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ituE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7faeb12-2751-4ba8-83fd-0a9ec589bae6_446x237.jpeg" width="446" height="237" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d7faeb12-2751-4ba8-83fd-0a9ec589bae6_446x237.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:237,&quot;width&quot;:446,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ituE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7faeb12-2751-4ba8-83fd-0a9ec589bae6_446x237.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ituE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7faeb12-2751-4ba8-83fd-0a9ec589bae6_446x237.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ituE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7faeb12-2751-4ba8-83fd-0a9ec589bae6_446x237.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ituE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7faeb12-2751-4ba8-83fd-0a9ec589bae6_446x237.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>But now to our guests' favorite automation:</p><h2><strong>The guest's favorite</strong></h2><p>The door also has a blind. If the blind is down but I need to go out into the garden (to get a beer, cough), now all I have to do is turn the door handle and the blind goes up automatically. No need to press a button on the blind switch. As soon as I'm back in the house and turn the door handle to the closed position, the blinds go down again.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>The whole thing really isn't rocket science. I can recognize the door handle as described above via the door handle sensor and I can control the blinds via the <strong><a href="https://amzn.to/407MsXa">built-in smart relay</a></strong>. Linking the two in home assistant is trivial.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W2oY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa6f7fe5-87df-45b7-b97e-1caf346b42f1_1243x964.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W2oY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa6f7fe5-87df-45b7-b97e-1caf346b42f1_1243x964.jpeg 424w, https://substackcdn.com/image/fetch/$s_!W2oY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa6f7fe5-87df-45b7-b97e-1caf346b42f1_1243x964.jpeg 848w, https://substackcdn.com/image/fetch/$s_!W2oY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa6f7fe5-87df-45b7-b97e-1caf346b42f1_1243x964.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!W2oY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa6f7fe5-87df-45b7-b97e-1caf346b42f1_1243x964.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W2oY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa6f7fe5-87df-45b7-b97e-1caf346b42f1_1243x964.jpeg" width="1243" height="964" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa6f7fe5-87df-45b7-b97e-1caf346b42f1_1243x964.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:964,&quot;width&quot;:1243,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!W2oY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa6f7fe5-87df-45b7-b97e-1caf346b42f1_1243x964.jpeg 424w, https://substackcdn.com/image/fetch/$s_!W2oY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa6f7fe5-87df-45b7-b97e-1caf346b42f1_1243x964.jpeg 848w, https://substackcdn.com/image/fetch/$s_!W2oY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa6f7fe5-87df-45b7-b97e-1caf346b42f1_1243x964.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!W2oY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa6f7fe5-87df-45b7-b97e-1caf346b42f1_1243x964.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Nevertheless, every guest wants to try it out for themselves and has a grin on their face. I guess it seems like magic when a door handle controls the blinds...</p>]]></content:encoded></item><item><title><![CDATA[Smart HDMI Switching with Home Assistant]]></title><description><![CDATA[The Problem]]></description><link>https://www.cellos.blog/p/smart-hdmi-switching-with-home-assistant</link><guid isPermaLink="false">https://www.cellos.blog/p/smart-hdmi-switching-with-home-assistant</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Thu, 24 Jul 2025 11:40:38 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1653998582106-0509104928d9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxoZG1pfGVufDB8fHx8MTc1MzM1NzE4N3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1653998582106-0509104928d9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxoZG1pfGVufDB8fHx8MTc1MzM1NzE4N3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1653998582106-0509104928d9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxoZG1pfGVufDB8fHx8MTc1MzM1NzE4N3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1653998582106-0509104928d9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxoZG1pfGVufDB8fHx8MTc1MzM1NzE4N3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1653998582106-0509104928d9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxoZG1pfGVufDB8fHx8MTc1MzM1NzE4N3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1653998582106-0509104928d9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxoZG1pfGVufDB8fHx8MTc1MzM1NzE4N3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1653998582106-0509104928d9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxoZG1pfGVufDB8fHx8MTc1MzM1NzE4N3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="6000" height="3376" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1653998582106-0509104928d9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxoZG1pfGVufDB8fHx8MTc1MzM1NzE4N3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3376,&quot;width&quot;:6000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;a close up view of a computer keyboard&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="a close up view of a computer keyboard" title="a close up view of a computer keyboard" srcset="https://images.unsplash.com/photo-1653998582106-0509104928d9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxoZG1pfGVufDB8fHx8MTc1MzM1NzE4N3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1653998582106-0509104928d9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxoZG1pfGVufDB8fHx8MTc1MzM1NzE4N3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1653998582106-0509104928d9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxoZG1pfGVufDB8fHx8MTc1MzM1NzE4N3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1653998582106-0509104928d9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxoZG1pfGVufDB8fHx8MTc1MzM1NzE4N3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="true">TheRegisti</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><h2><strong>The Problem</strong></h2><p>I recently became the proud owner of a <strong><a href="https://www.steamdeck.com/de">Steam Deck</a></strong>. Most of the time I play comfortably on the couch in handheld mode, but every now and then I want to throw a game onto the screen via my <strong><a href="https://amzn.to/3BYzdQQ">projector</a></strong>. To do this, I ordered a <strong><a href="https://amzn.to/3DIsDhH">dock</a></strong> that connects the Steam Deck to my projector via HDMI.</p><p>I now have two input sources for my projector. One is the <strong><a href="https://amzn.to/40jx9w3">Fire TV cube</a></strong> for watching series and the other is the Steam Deck for gaming. I have connected both with a cheap <strong><a href="https://amzn.to/4a2SYmR">HDMI switcher</a></strong>, so that I don't have to change the HDMI cable every time. It automatically recognizes which input has an HDMI signal and activates that route to display on the screen.</p><p>However, this only works half well. For example, if I send the Steam Deck to standby, the picture from the Fire TV cube doesn't come up. Or if I played games the day before and start the cinema today, the picture occasionally stays black because the Steam Deck is still blocking the HDMI input. Then I either have to remove the Steam Deck from the docking station (and get up from the couch, yikes!) or switch the source of the HDMI switcher via IR remote control. Neither option is a solution, of course.</p><h2><strong>Home Assistant to the Rescue</strong></h2><p>The only device that needs to be made smart here is the HDMI switcher. It is already half smart, as it can be operated via IR remote control. The only thing we need to teach Home Assistant the IR protocol is an inexpensive little helper: an <strong><a href="https://amzn.to/4a2T6Tn">IR blaster</a></strong>. In other words, a device that is able to learn IR commands and send them back itself. A smart universal remote control, so to speak. I still had a <strong><a href="https://amzn.to/4a2T6Tn">Broadlink RM4</a></strong> in my cable box for this purpose.</p><p>I connected it and placed it right next to the HDMI switcher. Learning the commands, i.e. the buttons that switch to input 1 or 2, is now super easy in Home Assistant. It's just an action that needs to be executed via the Developer tools:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!z4IW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa9f6a-9fd8-4447-ad41-700e5240c67b_1423x999.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!z4IW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa9f6a-9fd8-4447-ad41-700e5240c67b_1423x999.jpeg 424w, https://substackcdn.com/image/fetch/$s_!z4IW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa9f6a-9fd8-4447-ad41-700e5240c67b_1423x999.jpeg 848w, https://substackcdn.com/image/fetch/$s_!z4IW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa9f6a-9fd8-4447-ad41-700e5240c67b_1423x999.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!z4IW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa9f6a-9fd8-4447-ad41-700e5240c67b_1423x999.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!z4IW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa9f6a-9fd8-4447-ad41-700e5240c67b_1423x999.jpeg" width="1423" height="999" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/70fa9f6a-9fd8-4447-ad41-700e5240c67b_1423x999.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:999,&quot;width&quot;:1423,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!z4IW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa9f6a-9fd8-4447-ad41-700e5240c67b_1423x999.jpeg 424w, https://substackcdn.com/image/fetch/$s_!z4IW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa9f6a-9fd8-4447-ad41-700e5240c67b_1423x999.jpeg 848w, https://substackcdn.com/image/fetch/$s_!z4IW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa9f6a-9fd8-4447-ad41-700e5240c67b_1423x999.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!z4IW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa9f6a-9fd8-4447-ad41-700e5240c67b_1423x999.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I give the commands a name, i.e. <code>goto-hdmi-one</code> or <code>go-to-hdmi-two</code>, and say which remote control this command belongs to, in this case <code>hdmi-switcher</code>. I then click on perform and press the button on the remote control in the direction of the IR blaster. Done.</p><p>Now this command can be re-fired via actions, i.e. the Developer Tools. If necessary, this can be done x times in succession if the connection is not robust enough:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YUI7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fc744a-26c0-4dd9-8948-485a955d38dd_1423x999.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YUI7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fc744a-26c0-4dd9-8948-485a955d38dd_1423x999.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YUI7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fc744a-26c0-4dd9-8948-485a955d38dd_1423x999.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YUI7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fc744a-26c0-4dd9-8948-485a955d38dd_1423x999.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YUI7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fc744a-26c0-4dd9-8948-485a955d38dd_1423x999.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YUI7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fc744a-26c0-4dd9-8948-485a955d38dd_1423x999.jpeg" width="1423" height="999" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3fc744a-26c0-4dd9-8948-485a955d38dd_1423x999.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:999,&quot;width&quot;:1423,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YUI7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fc744a-26c0-4dd9-8948-485a955d38dd_1423x999.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YUI7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fc744a-26c0-4dd9-8948-485a955d38dd_1423x999.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YUI7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fc744a-26c0-4dd9-8948-485a955d38dd_1423x999.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YUI7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3fc744a-26c0-4dd9-8948-485a955d38dd_1423x999.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Top. So now I am able to select the input via Home Assistant. So, how does this solve my original problem?</p><h2><strong>Fixing the Issue</strong></h2><p>First of all, I want to have the Fire TV as the default HDMI input for my projector. So when I start my home cinema, I now explicitly set this input. This means that it doesn't matter whether I played games the night before or not.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tTOV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb669ae91-122f-4c8f-aa33-72f7b982ddcc_1230x1042.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tTOV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb669ae91-122f-4c8f-aa33-72f7b982ddcc_1230x1042.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tTOV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb669ae91-122f-4c8f-aa33-72f7b982ddcc_1230x1042.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tTOV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb669ae91-122f-4c8f-aa33-72f7b982ddcc_1230x1042.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tTOV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb669ae91-122f-4c8f-aa33-72f7b982ddcc_1230x1042.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tTOV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb669ae91-122f-4c8f-aa33-72f7b982ddcc_1230x1042.jpeg" width="1230" height="1042" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b669ae91-122f-4c8f-aa33-72f7b982ddcc_1230x1042.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1042,&quot;width&quot;:1230,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tTOV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb669ae91-122f-4c8f-aa33-72f7b982ddcc_1230x1042.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tTOV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb669ae91-122f-4c8f-aa33-72f7b982ddcc_1230x1042.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tTOV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb669ae91-122f-4c8f-aa33-72f7b982ddcc_1230x1042.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tTOV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb669ae91-122f-4c8f-aa33-72f7b982ddcc_1230x1042.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I have also put the HDMI selection on my dashboard so that I can change the mode from the couch.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>To do this, I simply added two new tile buttons to the dashboard, which are only visible when the cinema is active. When clicked, the buttons simply execute the corresponding remote command.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!okSP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9604523-91a7-4245-a225-ee0cadc257d6_419x225.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!okSP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9604523-91a7-4245-a225-ee0cadc257d6_419x225.jpeg 424w, https://substackcdn.com/image/fetch/$s_!okSP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9604523-91a7-4245-a225-ee0cadc257d6_419x225.jpeg 848w, https://substackcdn.com/image/fetch/$s_!okSP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9604523-91a7-4245-a225-ee0cadc257d6_419x225.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!okSP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9604523-91a7-4245-a225-ee0cadc257d6_419x225.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!okSP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9604523-91a7-4245-a225-ee0cadc257d6_419x225.jpeg" width="419" height="225" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9604523-91a7-4245-a225-ee0cadc257d6_419x225.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:225,&quot;width&quot;:419,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8382,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/169129980?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9604523-91a7-4245-a225-ee0cadc257d6_419x225.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!okSP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9604523-91a7-4245-a225-ee0cadc257d6_419x225.jpeg 424w, https://substackcdn.com/image/fetch/$s_!okSP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9604523-91a7-4245-a225-ee0cadc257d6_419x225.jpeg 848w, https://substackcdn.com/image/fetch/$s_!okSP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9604523-91a7-4245-a225-ee0cadc257d6_419x225.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!okSP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9604523-91a7-4245-a225-ee0cadc257d6_419x225.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b4hE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb805f5-8d52-434d-a7bd-bc87c917c62b_958x436.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b4hE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb805f5-8d52-434d-a7bd-bc87c917c62b_958x436.jpeg 424w, https://substackcdn.com/image/fetch/$s_!b4hE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb805f5-8d52-434d-a7bd-bc87c917c62b_958x436.jpeg 848w, https://substackcdn.com/image/fetch/$s_!b4hE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb805f5-8d52-434d-a7bd-bc87c917c62b_958x436.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!b4hE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb805f5-8d52-434d-a7bd-bc87c917c62b_958x436.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b4hE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb805f5-8d52-434d-a7bd-bc87c917c62b_958x436.jpeg" width="958" height="436" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/acb805f5-8d52-434d-a7bd-bc87c917c62b_958x436.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:436,&quot;width&quot;:958,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!b4hE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb805f5-8d52-434d-a7bd-bc87c917c62b_958x436.jpeg 424w, https://substackcdn.com/image/fetch/$s_!b4hE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb805f5-8d52-434d-a7bd-bc87c917c62b_958x436.jpeg 848w, https://substackcdn.com/image/fetch/$s_!b4hE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb805f5-8d52-434d-a7bd-bc87c917c62b_958x436.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!b4hE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facb805f5-8d52-434d-a7bd-bc87c917c62b_958x436.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>And that's it. A tiny little problem that was solved super easily with Home Assistant. My suggestion: If you are still using old IR remotes, just make them smart!</p>]]></content:encoded></item><item><title><![CDATA[I have nothing to hide - A dangerous mindset in the age of OSINT]]></title><description><![CDATA[I often hear the argument "I have nothing to hide" when talking about data privacy.]]></description><link>https://www.cellos.blog/p/i-have-nothing-to-hide-a-dangerous-mindset-in-the-age-of-osint</link><guid isPermaLink="false">https://www.cellos.blog/p/i-have-nothing-to-hide-a-dangerous-mindset-in-the-age-of-osint</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Thu, 24 Jul 2025 11:39:17 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1580582932707-520aed937b7b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzY2hvb2x8ZW58MHx8fHwxNzUzMjk4MzYwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1580582932707-520aed937b7b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzY2hvb2x8ZW58MHx8fHwxNzUzMjk4MzYwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1580582932707-520aed937b7b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzY2hvb2x8ZW58MHx8fHwxNzUzMjk4MzYwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1580582932707-520aed937b7b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzY2hvb2x8ZW58MHx8fHwxNzUzMjk4MzYwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1580582932707-520aed937b7b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzY2hvb2x8ZW58MHx8fHwxNzUzMjk4MzYwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1580582932707-520aed937b7b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzY2hvb2x8ZW58MHx8fHwxNzUzMjk4MzYwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1580582932707-520aed937b7b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzY2hvb2x8ZW58MHx8fHwxNzUzMjk4MzYwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="4668" height="2626" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1580582932707-520aed937b7b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzY2hvb2x8ZW58MHx8fHwxNzUzMjk4MzYwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2626,&quot;width&quot;:4668,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;brown wooden table and chairs&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="brown wooden table and chairs" title="brown wooden table and chairs" srcset="https://images.unsplash.com/photo-1580582932707-520aed937b7b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzY2hvb2x8ZW58MHx8fHwxNzUzMjk4MzYwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1580582932707-520aed937b7b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzY2hvb2x8ZW58MHx8fHwxNzUzMjk4MzYwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1580582932707-520aed937b7b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzY2hvb2x8ZW58MHx8fHwxNzUzMjk4MzYwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1580582932707-520aed937b7b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzY2hvb2x8ZW58MHx8fHwxNzUzMjk4MzYwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="true">Ivan Aleksic</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p></p><p>I often hear the argument "I have nothing to hide" when talking about data privacy. This argument, of course, is a little naive. Some time ago I came across a story that shows how easy it is to find enough private information about a person in publicly available sources (also called OSINT - Open Source Intelligence) to perform a scary phishing attack.</p><p>No matter if the story actually happened or is just made up, I want to rethink the steps of that attack from the role of the attacker to show how trivial it actually is. After reading it, be honest with yourself&#8212;would you have fallen for it?</p><h3><strong>Finding the Target</strong></h3><p>The first step is to find a company we want to attack. After some Googling, we find a promising company called <em>Generic Company</em>. We defined that company as interesting because of two facts:</p><ol><li><p>The company has a high revenue every year. A high revenue also means a high potential bounty. This data is publicly available since the company is legally bound to publish a report periodically. There are multiple websites we can use to see the numbers, i.e., <strong><a href="http://annualreports.com/">annualreports.com</a></strong>.</p></li><li><p>The company has to have an impressum on its website. The impressum lists the email address of the secretary: <strong><a href="mailto:flobdop.jenny@generic-company.com">flobdop.jenny@generic-company.com</a></strong>. We noticed that <em>Flobdop</em> is a pretty uncommon last name. This is promising for further investigations.</p></li></ol><h3><strong>Finding the Weak Point</strong></h3><p>Now we start researching <em>Flobdop</em> with some additional information, like the city of the company. We find an article from <em>Generic School</em> that says that Sarah Flobdop (14) won the school's art competition. We also find a death notice stating that Jenny, Mike, and Sarah are mourning the loss of their beloved Marge Flobdop. It's not rocket science to figure out that Sarah seems to be the daughter of our secretary Jenny from <em>Generic Company</em>.</p><h3><strong>Setting the Scene</strong></h3><p>Now we open up Google Maps and take a look at <em>Generic School</em>. We look for the nearest hospital and find <em>Generic Hospital</em>. The website shows us that there is an emergency ambulance. There is also a "Meet the Team" section. We now even know the name of the emergency doctor at the hospital, <em>Doctor Generic</em>. We could even take a little walk, visit the hospital, and take a photo of the shift schedule to know who will work next week.</p><h3><strong>Preparing to Phish</strong></h3><p>We go back to the website of the school and download some of the available documents. They all have a nice-looking school letterhead. We simply copy that for our own document we are about to write. We also note down the name of the school counselor.</p><h3><strong>The Attack</strong></h3><p>Let's swap roles again! We are now Jenny Flobdop.</p><p>It's a Tuesday morning. Kids are in school, and we are back at <em>Generic Company</em> doing work. Then an email pops up. You immediately recognize the design of your daughter's school. It says that they are sorry to inform you that your daughter Sarah had a school accident and was sent to <em>Generic Hospital</em>. Attached you'll find the admission report from Doctor Generic, signed by <em>Generic School Counselor</em>.</p><p>Of course the attachment was opened. The secretary was under emotional stress. <strong>Boom</strong>. As soon as the .pdf is opened, the ransomware starts...</p><p>According to the speaker this click cost <em>Generic Company</em> <strong><a href="https://www.youtube.com/watch?v=Zn-vOGp-e4c">over 4 million bucks</a></strong>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3><strong>Conclusion</strong></h3><p>This attack is powered solely by publicly available information. There is no Matrix-style hacking involved; it's just a well-crafted phishing email that was created using the information we gathered through OSINT. So please reconsider your "I have nothing to hide" mentality.</p>]]></content:encoded></item><item><title><![CDATA[Cookie Nudging]]></title><description><![CDATA[Recently, I heard the term cookie nudging for the first time in a podcast and, to be honest, I had to research what that means exactly.]]></description><link>https://www.cellos.blog/p/cookie-nudging</link><guid isPermaLink="false">https://www.cellos.blog/p/cookie-nudging</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Thu, 24 Jul 2025 11:38:19 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1597733153203-a54d0fbc47de?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb29raWV8ZW58MHx8fHwxNzUzMzU3MDYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1597733153203-a54d0fbc47de?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb29raWV8ZW58MHx8fHwxNzUzMzU3MDYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1597733153203-a54d0fbc47de?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb29raWV8ZW58MHx8fHwxNzUzMzU3MDYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1597733153203-a54d0fbc47de?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb29raWV8ZW58MHx8fHwxNzUzMzU3MDYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1597733153203-a54d0fbc47de?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb29raWV8ZW58MHx8fHwxNzUzMzU3MDYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1597733153203-a54d0fbc47de?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb29raWV8ZW58MHx8fHwxNzUzMzU3MDYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1597733153203-a54d0fbc47de?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb29raWV8ZW58MHx8fHwxNzUzMzU3MDYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="4322" height="3176" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1597733153203-a54d0fbc47de?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb29raWV8ZW58MHx8fHwxNzUzMzU3MDYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3176,&quot;width&quot;:4322,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;brown round cookie on white surface&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="brown round cookie on white surface" title="brown round cookie on white surface" srcset="https://images.unsplash.com/photo-1597733153203-a54d0fbc47de?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb29raWV8ZW58MHx8fHwxNzUzMzU3MDYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1597733153203-a54d0fbc47de?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb29raWV8ZW58MHx8fHwxNzUzMzU3MDYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1597733153203-a54d0fbc47de?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb29raWV8ZW58MHx8fHwxNzUzMzU3MDYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1597733153203-a54d0fbc47de?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb29raWV8ZW58MHx8fHwxNzUzMzU3MDYyfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="true">Vyshnavi Bisani</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p></p><p>Recently, I heard the term <em>cookie nudging</em> for the first time in a podcast and, to be honest, I had to research what that means exactly.</p><h2><strong>Nudging</strong></h2><p><em>Nudging</em> means influencing a person in a desired direction. And not through guidelines or bans, but through psychological methods. The classic example of such a <em>nudge</em> is the fly in a urinal.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1oBg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a9a35-df2a-43fb-823e-50615d8197a0_800x731.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1oBg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a9a35-df2a-43fb-823e-50615d8197a0_800x731.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1oBg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a9a35-df2a-43fb-823e-50615d8197a0_800x731.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1oBg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a9a35-df2a-43fb-823e-50615d8197a0_800x731.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1oBg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a9a35-df2a-43fb-823e-50615d8197a0_800x731.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1oBg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a9a35-df2a-43fb-823e-50615d8197a0_800x731.jpeg" width="800" height="731" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a8a9a35-df2a-43fb-823e-50615d8197a0_800x731.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:731,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1oBg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a9a35-df2a-43fb-823e-50615d8197a0_800x731.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1oBg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a9a35-df2a-43fb-823e-50615d8197a0_800x731.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1oBg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a9a35-df2a-43fb-823e-50615d8197a0_800x731.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1oBg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a8a9a35-df2a-43fb-823e-50615d8197a0_800x731.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It seems that the image of the fly alone leads to significantly less splashing outside the urinal. There is no <em>don't-urinate-on-the-floor</em> sign. There is no drill instructor explaining how to hit the bowl's center.</p><blockquote><p><em><strong>The image alone is enough to make men aim for the correct spot.</strong></em></p></blockquote><h2><strong>Cookie Nudging</strong></h2><p>Almost every website we visit directly shows us a cookie banner. We are given the choice of whether to generally accept or reject all cookies, or to make fine-grained adjustments to the cookie settings.</p><p>The owners of these sites naturally wish for as many cookies as possible to be accepted, as they need them for certain functionalities, targeted advertising, or user analysis.</p><p>Therefore they often use a <em>nudge</em>, as well: The <em>accept</em> button usually has bold text and is colored green, while the reject button is unflashy or not displayed at all.</p><p>Subconsciously, we immediately press the green button because we want to quickly get to the actual website. A small but subtle psychological trick that pushes us in the desired direction of the website operator. A cookie nudge.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IaR4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5d072c-0f42-4aa5-a3dd-b4a39d2fb57b_705x447.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IaR4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5d072c-0f42-4aa5-a3dd-b4a39d2fb57b_705x447.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IaR4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5d072c-0f42-4aa5-a3dd-b4a39d2fb57b_705x447.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IaR4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5d072c-0f42-4aa5-a3dd-b4a39d2fb57b_705x447.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IaR4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5d072c-0f42-4aa5-a3dd-b4a39d2fb57b_705x447.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IaR4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5d072c-0f42-4aa5-a3dd-b4a39d2fb57b_705x447.jpeg" width="705" height="447" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1e5d072c-0f42-4aa5-a3dd-b4a39d2fb57b_705x447.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:447,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IaR4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5d072c-0f42-4aa5-a3dd-b4a39d2fb57b_705x447.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IaR4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5d072c-0f42-4aa5-a3dd-b4a39d2fb57b_705x447.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IaR4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5d072c-0f42-4aa5-a3dd-b4a39d2fb57b_705x447.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IaR4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e5d072c-0f42-4aa5-a3dd-b4a39d2fb57b_705x447.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Social Engineering</strong></h2><p>Even though this is a trivial use case, it shows how susceptible we are to such small tricks. Cookie nudging is a form of social engineering. We should condition ourselves better not to accept everything out of convenience that stands between us and the content we want to see. Data is becoming increasingly important.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>By the way, in the same context, I learned about the browser extension <em>I don't care about cookies</em>. This automatically closes the cookie banner with <em>reject all</em> when opening a page. This protects privacy and saves nerves. Highly recommended.</p>]]></content:encoded></item><item><title><![CDATA[Key Safe Overkill: Better Safe than Sorry]]></title><description><![CDATA[I bet you have a spare key for your home hidden somewhere on your property!]]></description><link>https://www.cellos.blog/p/key-safe-overkill-better-safe-than-sorry</link><guid isPermaLink="false">https://www.cellos.blog/p/key-safe-overkill-better-safe-than-sorry</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Thu, 24 Jul 2025 11:36:49 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1503792243040-7ce7f5f06085?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxrZXl8ZW58MHx8fHwxNzUzMzU2OTc2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1503792243040-7ce7f5f06085?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxrZXl8ZW58MHx8fHwxNzUzMzU2OTc2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1503792243040-7ce7f5f06085?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxrZXl8ZW58MHx8fHwxNzUzMzU2OTc2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1503792243040-7ce7f5f06085?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxrZXl8ZW58MHx8fHwxNzUzMzU2OTc2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1503792243040-7ce7f5f06085?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxrZXl8ZW58MHx8fHwxNzUzMzU2OTc2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1503792243040-7ce7f5f06085?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxrZXl8ZW58MHx8fHwxNzUzMzU2OTc2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1503792243040-7ce7f5f06085?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxrZXl8ZW58MHx8fHwxNzUzMzU2OTc2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="3137" height="2194" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1503792243040-7ce7f5f06085?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxrZXl8ZW58MHx8fHwxNzUzMzU2OTc2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2194,&quot;width&quot;:3137,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;photo of key against black background&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="photo of key against black background" title="photo of key against black background" srcset="https://images.unsplash.com/photo-1503792243040-7ce7f5f06085?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxrZXl8ZW58MHx8fHwxNzUzMzU2OTc2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1503792243040-7ce7f5f06085?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxrZXl8ZW58MHx8fHwxNzUzMzU2OTc2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1503792243040-7ce7f5f06085?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxrZXl8ZW58MHx8fHwxNzUzMzU2OTc2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1503792243040-7ce7f5f06085?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxrZXl8ZW58MHx8fHwxNzUzMzU2OTc2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="true">Matt Artz</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>I bet you have a spare key for your home hidden somewhere on your property!</p><ul><li><p>Is it in the garden? Maybe disguised as a rock?</p></li><li><p>Is it right under the doormat?</p></li><li><p>Do your neighbors have it?</p></li></ul><p>No matter where it is, it is important to have one! It sucks to come home after a long day, only to realize that you've forgotten your keys. I know that from experience because until recently we didn&#8217;t have a spare key.</p><p>Why? Because we didn&#8217;t know where to hide it. What if the hiding place isn't good enough? What if our neighbors were on vacation right when we need the key?</p><p>Thanks to Home Assistant I was able to implement an <strong>overkill-bullet-proof</strong>&#8482; solution for that problem.</p><blockquote><p><em><strong>I introduce to you: The Fort Knox Key Safe.</strong></em></p></blockquote><h2><strong>Security Level 1: The Safe</strong></h2><p>My solution is based on a <strong><a href="https://amzn.to/4gR6NYG">key safe</a></strong>. It&#8217;s pretty convenient for us since it works with a numerical code. Still this safe should scare of casual thiefs that just happened to find the key by accident.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nDYC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83d92119-db93-4ae0-97c4-cd48bda64cf8_1400x1867.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nDYC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83d92119-db93-4ae0-97c4-cd48bda64cf8_1400x1867.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nDYC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83d92119-db93-4ae0-97c4-cd48bda64cf8_1400x1867.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nDYC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83d92119-db93-4ae0-97c4-cd48bda64cf8_1400x1867.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nDYC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83d92119-db93-4ae0-97c4-cd48bda64cf8_1400x1867.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nDYC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83d92119-db93-4ae0-97c4-cd48bda64cf8_1400x1867.jpeg" width="1400" height="1867" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/83d92119-db93-4ae0-97c4-cd48bda64cf8_1400x1867.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1867,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nDYC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83d92119-db93-4ae0-97c4-cd48bda64cf8_1400x1867.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nDYC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83d92119-db93-4ae0-97c4-cd48bda64cf8_1400x1867.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nDYC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83d92119-db93-4ae0-97c4-cd48bda64cf8_1400x1867.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nDYC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83d92119-db93-4ae0-97c4-cd48bda64cf8_1400x1867.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Security Level 2: The Location</strong></h2><p>Of course I did not mount the safe right next to the main door. That would be an invitation. It&#8217;s somewhere in the backyard, not directly visible since it is hidden by some flowerpots.</p><h2><strong>Security Level 3: The Camera</strong></h2><p>One of my <strong><a href="https://amzn.to/3Nb7FcS">cameras</a></strong> monitors the location of the safe. That is deterrence. But also I will have visual proof of anyone trying to mess with the safe.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Aggp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14429c1-53cf-41d4-9ab3-8047e876e338_1400x1050.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Aggp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14429c1-53cf-41d4-9ab3-8047e876e338_1400x1050.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Aggp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14429c1-53cf-41d4-9ab3-8047e876e338_1400x1050.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Aggp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14429c1-53cf-41d4-9ab3-8047e876e338_1400x1050.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Aggp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14429c1-53cf-41d4-9ab3-8047e876e338_1400x1050.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Aggp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14429c1-53cf-41d4-9ab3-8047e876e338_1400x1050.jpeg" width="1400" height="1050" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d14429c1-53cf-41d4-9ab3-8047e876e338_1400x1050.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1050,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Aggp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14429c1-53cf-41d4-9ab3-8047e876e338_1400x1050.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Aggp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14429c1-53cf-41d4-9ab3-8047e876e338_1400x1050.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Aggp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14429c1-53cf-41d4-9ab3-8047e876e338_1400x1050.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Aggp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd14429c1-53cf-41d4-9ab3-8047e876e338_1400x1050.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Security Level 4: The Vibration Sensor</strong></h2><p>Inside the key safe I attached a <strong><a href="https://amzn.to/47MCDl3">vibration sensor</a></strong>. That way I will be alerted if someone opens the safe or even tries to remove it from the wall. Spinning one of the number wheels is already enough for the sensor to detect a vibration.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CTHc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ee226e-6edc-4a09-bc52-983b90ec0a3a_786x1048.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CTHc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ee226e-6edc-4a09-bc52-983b90ec0a3a_786x1048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CTHc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ee226e-6edc-4a09-bc52-983b90ec0a3a_786x1048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CTHc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ee226e-6edc-4a09-bc52-983b90ec0a3a_786x1048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CTHc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ee226e-6edc-4a09-bc52-983b90ec0a3a_786x1048.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CTHc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ee226e-6edc-4a09-bc52-983b90ec0a3a_786x1048.jpeg" width="786" height="1048" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4ee226e-6edc-4a09-bc52-983b90ec0a3a_786x1048.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1048,&quot;width&quot;:786,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CTHc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ee226e-6edc-4a09-bc52-983b90ec0a3a_786x1048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CTHc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ee226e-6edc-4a09-bc52-983b90ec0a3a_786x1048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CTHc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ee226e-6edc-4a09-bc52-983b90ec0a3a_786x1048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CTHc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ee226e-6edc-4a09-bc52-983b90ec0a3a_786x1048.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>The Bulls**t Heist</strong></h2><p>Someone sneaks in my backyard. It takes him 30 minutes to find the key safe. He tries to guess the combination. No success after 15 minutes. He takes out the jimmy and tries to rip the safe from the wall. The police arrive.</p><p>What happend? I received a notification on my phone because the camera detected a person in the backyard. I also received a notification that someone tried to open the safe due to the vibration sensor. Plenty of time to check the camera stream and call the cops.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Honest Summary</strong></h2><p>This solution is total overkill. I guess hiding a key somewhere in flowerpot is safe enough. But this solution is so much fun. And it gives me a false sense of safety. If you are a burgular: Please don&#8217;t take that as a challenge.</p><p>To be honest: A thief would probably just break a window with a rock instead of looking for a hidden key. But that&#8217;s no reason for skipping the fun of Home Automation. Your home just needs to be more secure than your neighbor&#8217;s.</p>]]></content:encoded></item><item><title><![CDATA[Reclaiming Privacy: How I Got Rid of Google Photos]]></title><description><![CDATA[I am a privacy nerd in many areas.]]></description><link>https://www.cellos.blog/p/reclaiming-privacy-how-i-got-rid-of-google-photos</link><guid isPermaLink="false">https://www.cellos.blog/p/reclaiming-privacy-how-i-got-rid-of-google-photos</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Thu, 24 Jul 2025 11:35:54 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1459682687441-7761439a709d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkdWNrfGVufDB8fHx8MTc1MzM1NjkxM3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1459682687441-7761439a709d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkdWNrfGVufDB8fHx8MTc1MzM1NjkxM3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1459682687441-7761439a709d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkdWNrfGVufDB8fHx8MTc1MzM1NjkxM3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1459682687441-7761439a709d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkdWNrfGVufDB8fHx8MTc1MzM1NjkxM3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1459682687441-7761439a709d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkdWNrfGVufDB8fHx8MTc1MzM1NjkxM3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1459682687441-7761439a709d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkdWNrfGVufDB8fHx8MTc1MzM1NjkxM3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1459682687441-7761439a709d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkdWNrfGVufDB8fHx8MTc1MzM1NjkxM3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="4234" height="2614" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1459682687441-7761439a709d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkdWNrfGVufDB8fHx8MTc1MzM1NjkxM3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2614,&quot;width&quot;:4234,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;green, gray, and brown mallard duck in body of water&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="green, gray, and brown mallard duck in body of water" title="green, gray, and brown mallard duck in body of water" srcset="https://images.unsplash.com/photo-1459682687441-7761439a709d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkdWNrfGVufDB8fHx8MTc1MzM1NjkxM3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1459682687441-7761439a709d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkdWNrfGVufDB8fHx8MTc1MzM1NjkxM3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1459682687441-7761439a709d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkdWNrfGVufDB8fHx8MTc1MzM1NjkxM3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1459682687441-7761439a709d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxkdWNrfGVufDB8fHx8MTc1MzM1NjkxM3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="true">Ravi Singh</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>I am a privacy nerd in many areas. Since discovering <strong><a href="http://privacytools.io/">privacytools.io</a></strong>, I have been on a mission to replace all Google services I use.</p><p>One big skeleton that I had in my closet until recently is Google Photos. But that's finally over!</p><h2><strong>Why I Decided to Stop Using Google Photos</strong></h2><p>My wife and I have consistently stored all photos taken on our phones directly with Google. It was just super convenient. It's quickly set up and works flawlessly.</p><p>The decisive factor in finally getting rid of this Google service, is mainly the current AI hype: Google uses all the photos to train their AI models.</p><blockquote><p><em><strong>In plain language, this means: All photos of my wife, all photos of my children and all photos of me might be the training basis of a future AI model.</strong></em></p><p><em><strong>And this also means that this AI can then generate photos of my wife, my children and me at will. And the more I think about it, the creepier I find this idea.</strong></em></p></blockquote><h2><strong>The Perfect Alternative</strong></h2><p>So a good alternative had to be found quickly. In our case, it became <strong><a href="http://ente.io/">ente.io</a></strong>.</p><p><strong><a href="http://ente.io/">Ente.io</a></strong> is almost a clone of Google Photos, but with one crucial difference: All photos are <strong>end-to-end-encrypted</strong>. This means that while our pictures are secured on <strong><a href="http://ente.io/">ente.io</a></strong>'s servers, they were already encrypted on our phones.</p><p>Even a shady system admin from <strong><a href="http://ente.io/">ente.io</a></strong> would have no benefit from looking into the database; because there he only finds encrypted data. And the key to these data is only on our phones.</p><ul><li><p>Synchronization works flawlessly via the <strong><a href="http://ente.io/">ente.io</a></strong> app.</p></li><li><p>You can create folders for collectively collecting event photos into which other people can upload photos without having to create an account.</p></li><li><p>There is also a search for photo content. However, this must first be activated and the index built up. This, of course, runs locally, without the cloud.</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Conclusion</strong></h2><p>Often, you have to accept a few disadvantages when you detach yourself from Google, because objectively speaking, Google services are very good and convenient. In this case, however, we notice no difference in everyday life from before. But we have regained a large part of our privacy.</p>]]></content:encoded></item><item><title><![CDATA[Spotify made my Daughter cry. Home Assistant made her smile again.]]></title><description><![CDATA[Building a DIY Music Box powered by Home Assistant]]></description><link>https://www.cellos.blog/p/spotify-made-my-daughter-cry-home-assistant-made-her-smile-again</link><guid isPermaLink="false">https://www.cellos.blog/p/spotify-made-my-daughter-cry-home-assistant-made-her-smile-again</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Thu, 24 Jul 2025 11:31:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1iFF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42f288bb-96d0-4935-ba84-45e62271f6e1_786x590.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1iFF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42f288bb-96d0-4935-ba84-45e62271f6e1_786x590.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1iFF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42f288bb-96d0-4935-ba84-45e62271f6e1_786x590.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1iFF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42f288bb-96d0-4935-ba84-45e62271f6e1_786x590.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1iFF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42f288bb-96d0-4935-ba84-45e62271f6e1_786x590.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1iFF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42f288bb-96d0-4935-ba84-45e62271f6e1_786x590.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1iFF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42f288bb-96d0-4935-ba84-45e62271f6e1_786x590.jpeg" width="786" height="590" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/42f288bb-96d0-4935-ba84-45e62271f6e1_786x590.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:590,&quot;width&quot;:786,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:78900,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.cellos.blog/i/169128618?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42f288bb-96d0-4935-ba84-45e62271f6e1_786x590.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1iFF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42f288bb-96d0-4935-ba84-45e62271f6e1_786x590.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1iFF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42f288bb-96d0-4935-ba84-45e62271f6e1_786x590.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1iFF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42f288bb-96d0-4935-ba84-45e62271f6e1_786x590.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1iFF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42f288bb-96d0-4935-ba84-45e62271f6e1_786x590.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Everybody knows the famous <strong><a href="https://amzn.to/3WRLnjE">Toniebox</a></strong>. It's a wonderful device which lets kids start music or an audio book just by putting a little figure on top of it. Every friend of our daughter got one on their second birthday. So the pressure was high.</p><blockquote><p><em><strong>My daughter looked at me with her big eyes &#8212; She wants one, as well!</strong></em></p></blockquote><p>But that cute little cube is not cheap. Especially the costs for the <strong><a href="https://amzn.to/3Zh2OLT">Tonie figures</a></strong> stack up fast&#8230; 15&#8364; per figure times ten audio books: That's 150 bucks &#8212; for audio books that are already available with my Spotify subscription.</p><p>That's when I heard about and fell in love with the <strong><a href="https://phoniebox.de/index.html">Phoniebox</a></strong> project. Building a DIY Toniebox for my daughter sounded like a really cool gift for her birthday.</p><p>I studied <strong><a href="https://splittscheid.de/phoniebox-bauanleitung-toniebox-alternative/">this excellent blog post</a></strong> and managed to build a fancy little box without any prior soldering experience:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NM3q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cba14a8-f363-434e-940a-2fb2cb17e850_786x442.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NM3q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cba14a8-f363-434e-940a-2fb2cb17e850_786x442.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NM3q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cba14a8-f363-434e-940a-2fb2cb17e850_786x442.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NM3q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cba14a8-f363-434e-940a-2fb2cb17e850_786x442.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NM3q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cba14a8-f363-434e-940a-2fb2cb17e850_786x442.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NM3q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cba14a8-f363-434e-940a-2fb2cb17e850_786x442.jpeg" width="786" height="442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5cba14a8-f363-434e-940a-2fb2cb17e850_786x442.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:442,&quot;width&quot;:786,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Previous DIY music box with NFC cards powered by Phoniebox depending on Spotify&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Previous DIY music box with NFC cards powered by Phoniebox depending on Spotify" title="Previous DIY music box with NFC cards powered by Phoniebox depending on Spotify" srcset="https://substackcdn.com/image/fetch/$s_!NM3q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cba14a8-f363-434e-940a-2fb2cb17e850_786x442.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NM3q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cba14a8-f363-434e-940a-2fb2cb17e850_786x442.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NM3q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cba14a8-f363-434e-940a-2fb2cb17e850_786x442.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NM3q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cba14a8-f363-434e-940a-2fb2cb17e850_786x442.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>And the best part: I was able to add as many audio books as I want without further costs! All content came directly from Spotify.</p><blockquote><p><em><strong>My daughter was happy. I was proud. Success.</strong></em></p></blockquote><h2><strong>The Catastrophe</strong></h2><p>Then it happened. My wife called me at work:</p><blockquote><p><em><strong>The box is not working. Did you tinker around again?</strong></em></p></blockquote><p>I did nothing. But Spotify did. <strong><a href="https://developer.spotify.com/community/news/2022/04/12/libspotify-sunset/">The library libspotify got discontinued</a></strong>. A library the Phoniebox project heavily relied on. From one day to the next, thousands of Phonieboxes in the Spotify version stopped working.</p><p>My daughter was sad, even cried a little. I guess she was not the only one. I promised myself that this will not happen again!</p><p>That's why I built my own music box. A music box powered by Home Assistant. A music box I have full control over.</p><h2><strong>Step 1: The tag reader</strong></h2><p>My box will need to register NFC cards. So I have to include an NFC reader. The Home Assistant tags documentation references a <strong><a href="https://github.com/adonno/tagreader">cool project on Github</a></strong> for a standalone tag reader.</p><p>Exactly what I needed! All material needed are a <strong><a href="https://amzn.to/3GNm78F">wemos D1 mini</a></strong>, a <strong><a href="https://amzn.to/3IpgVJf">NFC reader</a></strong> and a <strong><a href="https://amzn.to/3Qmm0DT">buzzer</a></strong>. That's it.</p><p>I ditched the LED since I don't wanted to integrate one in my box. Following the readme I was able to solder everything together and flash the firmware on the wemos D1 mini.</p><h2><strong>Step 2: Buttons</strong></h2><p>The Home Assistant docs really have a lot of information about the <strong><a href="https://www.home-assistant.io/integrations/tag/">tags feature</a></strong>. Especially the chapter <strong><a href="https://www.home-assistant.io/integrations/tag/">Building an RFID jukebox</a></strong> is nearly all I wanted.</p><p>But I want to have actual <strong><a href="https://amzn.to/3vMdPaJ">physical buttons</a></strong>. My daughter needs some buttons for play, pause, next, previous, volume up/down. So I bought some.</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6bc1d6ec-167a-427a-b25b-2ec75ac3e5f1_786x1397.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/caa57f1b-f1dd-4554-87d7-3003e83bd23f_786x1397.jpeg&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab88e3bd-dddd-42ae-9477-a9dd444c2360_1456x720.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p></p><h2><strong>Step 3: Building the box</strong></h2><p>I bought a <strong><a href="https://www.ikea.com/de/de/p/dragan-badezimmer-set-4-tlg-bambus-40222607/">small bambus box</a></strong> from IKEA. I drilled some holes in it with <strong><a href="https://amzn.to/3VRJu51">these guys</a></strong>. Then I attached everything into the box with some hot glue.</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5dd3c4c2-de61-4c54-a5e4-78529511561a_640x480.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/245799e1-7a29-412d-ae64-ac68266f61e1_640x480.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1e840ddb-49d9-461c-bd38-a0fe07bea56c_640x480.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ca875601-aa27-4da9-9240-bc13743e96da_640x480.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a509155-25c3-4552-ad7f-9bb6021fb341_640x480.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ba5a1e4f-6d94-4001-8d5a-980a2441f3dd_640x480.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4296ae6-8d41-4aca-ac3c-9e210f943991_720x540.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92139ff4-5621-42c8-ade2-5574e88a2d00_853x640.jpeg&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e6ab858-c1bc-4915-beab-92a03842d997_1456x1700.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p></p><p>I really learned a lot this time. This was the first time I soldered <strong><a href="https://amzn.to/3WXSg2N">screw mounts</a></strong> on the board. The benefit, in contrast to hard-soldering the cables to the board, is that you are able to detach them if needed. This comes in really handy if you need to debug something.</p><p>I also used <strong><a href="https://amzn.to/3GlFXX0">cable end crimps</a></strong> for the first time. No more wire fibers! And they can be easily attached into the screw mounts.</p><p>This was the first time I am actually proud of my cable management &#8212; although I guess any professional would puke looking at this. If so, please give me some tips! I'm eager to learn. Thanks!</p><p>The whole box is powered by a <strong><a href="https://amzn.to/3VQYsYZ">5V power supply</a></strong>. The ESP gets powered directly over its 5V pin. Don't use the usb port for powering. I ran into all kind of issues like the NFC reader not working.</p><p>I integrated a <strong><a href="https://amzn.to/3GPs9Fw">coaxial power connector</a></strong> into the box, and it works like a charm. However, make sure you buy a connector that matches the size of your power supply. If they don't match, you will have a loose connection. There are two or three common sizes &#8212; just check the datasheets once and you should be fine.</p><h2><strong>Step 4: Tweaking the firmware to support the buttons</strong></h2><p>To add the different buttons to the firmware and Home Assistant I had to add some binary_sensors to the ESPHome yml file of my music box.</p><pre><code><code>binary_sensor:
  - platform: gpio
    name: "liasbox_playplause"

    pin:
      number: D4
      inverted: true
      mode:
        input: true
        pullup: true
    filters:
      - delayed_off: 10ms

  - platform: gpio
    name: "liasbox_next"
    pin:
      number: TX
      inverted: true
      mode:
        input: true
        pullup: true
    filters:
      - delayed_off: 10ms

  - platform: gpio
    name: "liasbox_previous"
    pin:
      number: D3
      inverted: true
      mode:
        input: true
        pullup: true
    filters:
      - delayed_off: 10ms

  - platform: gpio
    name: "liasbox_volume_down"
    pin:
      number: D5
      inverted: true
      mode:
        input: true
        pullup: true
    filters:
      - delayed_off: 10ms 

  - platform: gpio
    name: "liasbox_volume_up"
    pin:
      number: D6
      inverted: true
      mode:
        input: true
        pullup: true
    filters:
      - delayed_off: 10ms 

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

substitutions:
  name: "liasbox"
packages:
  adonno.tag_reader: github://adonno/tagreader/tagreader.yaml
esphome:
  name: ${name}
  name_add_mac_suffix: false
</code></code></pre><p>Now I have all buttons available as entities in Home Assistant, yay!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!P0iy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35e01ea-f484-4d1a-834b-f11c7b893463_346x371.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P0iy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35e01ea-f484-4d1a-834b-f11c7b893463_346x371.jpeg 424w, https://substackcdn.com/image/fetch/$s_!P0iy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35e01ea-f484-4d1a-834b-f11c7b893463_346x371.jpeg 848w, https://substackcdn.com/image/fetch/$s_!P0iy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35e01ea-f484-4d1a-834b-f11c7b893463_346x371.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!P0iy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35e01ea-f484-4d1a-834b-f11c7b893463_346x371.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P0iy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35e01ea-f484-4d1a-834b-f11c7b893463_346x371.jpeg" width="346" height="371" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a35e01ea-f484-4d1a-834b-f11c7b893463_346x371.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:371,&quot;width&quot;:346,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!P0iy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35e01ea-f484-4d1a-834b-f11c7b893463_346x371.jpeg 424w, https://substackcdn.com/image/fetch/$s_!P0iy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35e01ea-f484-4d1a-834b-f11c7b893463_346x371.jpeg 848w, https://substackcdn.com/image/fetch/$s_!P0iy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35e01ea-f484-4d1a-834b-f11c7b893463_346x371.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!P0iy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35e01ea-f484-4d1a-834b-f11c7b893463_346x371.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Step 5: Let the buttons execute automations</strong></h2><p>Play/Pause, next, previous and volume up/down are all standard services of media_player entities. So all I had to do was trigger all those services when a button gets pressed. Here is an example for skipping to the next song:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fjZ8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa013bd21-1cd4-4180-b5a7-768c9f90d465_786x463.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fjZ8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa013bd21-1cd4-4180-b5a7-768c9f90d465_786x463.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fjZ8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa013bd21-1cd4-4180-b5a7-768c9f90d465_786x463.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fjZ8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa013bd21-1cd4-4180-b5a7-768c9f90d465_786x463.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fjZ8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa013bd21-1cd4-4180-b5a7-768c9f90d465_786x463.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fjZ8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa013bd21-1cd4-4180-b5a7-768c9f90d465_786x463.jpeg" width="786" height="463" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a013bd21-1cd4-4180-b5a7-768c9f90d465_786x463.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:463,&quot;width&quot;:786,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fjZ8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa013bd21-1cd4-4180-b5a7-768c9f90d465_786x463.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fjZ8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa013bd21-1cd4-4180-b5a7-768c9f90d465_786x463.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fjZ8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa013bd21-1cd4-4180-b5a7-768c9f90d465_786x463.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fjZ8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa013bd21-1cd4-4180-b5a7-768c9f90d465_786x463.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I made similar automations for the other buttons, as well.</p><p>As you can see I capsuled the media player I want to use for my box as a helper entity. I did this because currently the music will start on our <strong><a href="https://amzn.to/3ZmPZzH">Sonos bar</a></strong> in the living room. That's where the box is located. But in a few years the box will move to my daughter's room. She will get her own little Sonos box (maybe the next good birthday present!?). And then I will be able to switch the media player very fast without needing to adjust all automations.</p><p>The helper is a group with a single entity.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fZGr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df11962-7f68-4a50-980d-ee014a094f2a_551x592.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fZGr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df11962-7f68-4a50-980d-ee014a094f2a_551x592.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fZGr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df11962-7f68-4a50-980d-ee014a094f2a_551x592.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fZGr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df11962-7f68-4a50-980d-ee014a094f2a_551x592.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fZGr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df11962-7f68-4a50-980d-ee014a094f2a_551x592.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fZGr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df11962-7f68-4a50-980d-ee014a094f2a_551x592.jpeg" width="551" height="592" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5df11962-7f68-4a50-980d-ee014a094f2a_551x592.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:592,&quot;width&quot;:551,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fZGr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df11962-7f68-4a50-980d-ee014a094f2a_551x592.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fZGr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df11962-7f68-4a50-980d-ee014a094f2a_551x592.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fZGr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df11962-7f68-4a50-980d-ee014a094f2a_551x592.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fZGr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5df11962-7f68-4a50-980d-ee014a094f2a_551x592.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Step 6: Creating the cards</strong></h2><p>The cards are simple <strong><a href="https://amzn.to/3vOT3Hu">NFC cards</a></strong>, but of course, they have to look good; I can't just write the title on the card with an Edding. My daughter can't read.</p><p>So my way is to print the audio books cover on a sticker. <strong><a href="https://amzn.to/3Gq7mXO">I use these</a></strong> because they come with an online software where I can upload the covers and resize them easily.</p><p>The result looks okay. It would definitely look cooler with a <strong><a href="https://amzn.to/3ikt5IT">card printer</a></strong>. But that's just too expensive for me.</p><h2><strong>Step 7: Adding and triggering tags</strong></h2><p>After the NFC reader was added to Home Assistant (which is really easy if you followed the documentation from Github, since it is discovered automatically), you are able to add new tags. This can be done in the tags menu. When swiping an NFC card over the box, a new tag appears. It has a GUID as name. I immediately rename the tag to the content it should contain.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I2GP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F553afb42-87f4-4772-baea-0aeb480f9976_786x389.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I2GP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F553afb42-87f4-4772-baea-0aeb480f9976_786x389.jpeg 424w, https://substackcdn.com/image/fetch/$s_!I2GP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F553afb42-87f4-4772-baea-0aeb480f9976_786x389.jpeg 848w, https://substackcdn.com/image/fetch/$s_!I2GP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F553afb42-87f4-4772-baea-0aeb480f9976_786x389.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!I2GP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F553afb42-87f4-4772-baea-0aeb480f9976_786x389.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I2GP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F553afb42-87f4-4772-baea-0aeb480f9976_786x389.jpeg" width="786" height="389" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/553afb42-87f4-4772-baea-0aeb480f9976_786x389.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:389,&quot;width&quot;:786,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I2GP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F553afb42-87f4-4772-baea-0aeb480f9976_786x389.jpeg 424w, https://substackcdn.com/image/fetch/$s_!I2GP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F553afb42-87f4-4772-baea-0aeb480f9976_786x389.jpeg 848w, https://substackcdn.com/image/fetch/$s_!I2GP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F553afb42-87f4-4772-baea-0aeb480f9976_786x389.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!I2GP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F553afb42-87f4-4772-baea-0aeb480f9976_786x389.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The automation that is triggered by the tag scan and actually starts the music is just a tweaked version of the example from the <strong><a href="https://www.home-assistant.io/integrations/tag/#building-an-rfid-jukebox">tag documentation</a></strong>. This is how it looks: </p><pre><code>alias: Handle Tag Scan
description: ""
trigger:
  - platform: event
    event_type: tag_scanned
condition:
  - "{{ trigger.event.data.tag_id in tags }}"
action:
  - variables:
      media_player_entity_id: media_player.liasbox_mediaplayer
      media_content_id: "{{ tags[trigger.event.data.tag_id].media_content_id }}"
      media_content_type: "{{ tags[trigger.event.data.tag_id].media_content_type }}"
  - service: media_player.play_media
    target:
      entity_id: media_player.liasbox_mediaplayer
    data:
      media_content_id: "{{ media_content_id }}"
      media_content_type: "{{ media_content_type }}"
  - service: script.liasbox_setmediaplayersettings
    data: {}
  - delay: 2
mode: single
max_exceeded: silent
variables:
  tags:
    04-6E-DA-67-10-02-89:
      media_content_id: &gt;-
        https://open.sp0tify.com/playlist/1u0bu4ezkj4QHDkfjXwKsW?si=76e77a3055134782
      media_content_type: playlist
    04-1C-E4-67-10-02-89:
      media_content_id: &gt;-
        https://open.sp0tify.com/album/33Ss311uVWQViCaipw2laT?si=EfWjPNX4SieRiID3GbpnDA
      media_content_type: album
    04-A3-7A-67-10-02-89:
      media_content_id: &gt;-
        https://open.sp0tify.com/album/0FHpjWlnUmplF5ciL84Wpa?si=9DLx-nzTS7uVkoH9YsEvvA
      media_content_type: album
    04-75-8C-67-10-02-89:
      media_content_id: &gt;-
        https://open.sp0tify.com/album/3qAjGnHFbafzKWbntBjKb9?si=AeKRaR1eQ7S2RjLf41_aMA
      media_content_type: album
    04-4A-90-67-10-02-89:
      media_content_id: &gt;-
        https://open.sp0tify.com/album/6LQALkZO2BD7UJW5Rbe7AQ?si=-BrXCB_2T0ihqJKTxigefg
      media_content_type: album
    04-31-8F-67-10-02-89:
      media_content_id: &gt;-
        https://open.sp0tify.com/playlist/5AkNkdpGiTUT1Z1usDdiey?si=8723fd4d8fc5464f
      media_content_type: playlist
    04-83-98-67-10-02-89:
      media_content_id: &gt;-
        https://open.sp0tify.com/album/5ju4E5z2e8haWhNVI6jvah?si=sbeJ0sWhTBq2fcYT3WKCSg
      media_content_type: album
    04-2B-82-67-10-02-89:
      media_content_id: &gt;-
        https://open.sp0tify.com/playlist/6cKzIXYEkC2TtuTt07lOZe?si=86b2176eec0649e0
      media_content_type: playlist
    04-84-AA-67-10-02-89:
      media_content_id: &gt;-
        https://open.sp0tify.com/album/3XOuj8bXBsPPJ5hmdtcGCd?si=sjuLO1LjTqut3501iOp_AA
      media_content_type: album
    04-04-7A-67-10-02-89:
      media_content_id: &gt;-
        https://open.sp0tify.com/album/3MJtb4tIcyxbd7PIm5ASJ9?si=spXJG6INSbSI8szm6SgN_g
      media_content_type: album
    04-22-B8-63-10-02-89:
      media_content_id: &gt;-
        https://open.sp0tify.com/album/12TT6OcOHRaM9HfWlfppxN?si=VzwdAKyWT7u9bVpA9L7LeA
      media_content_type: album
    04-EC-BA-63-10-02-89:
      media_content_id: &gt;-
        https://open.sp0tify.com/album/1BDF8UTWY6wpxLzF6um2xQ?si=xX_ocM5NT5uFapCuuL7JKA
      media_content_type: album</code></pre><p>As you can see, it's really not that complicated. You just modify the media_player you want to use and add each content as a new row. You get the ID from the tags menu and the link by using Spotifys &#8220;Share&#8221; button on the album you'd like to use.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uiRt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39e0b869-e9f9-400a-aee5-52e11eebf069_786x590.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uiRt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39e0b869-e9f9-400a-aee5-52e11eebf069_786x590.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uiRt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39e0b869-e9f9-400a-aee5-52e11eebf069_786x590.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uiRt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39e0b869-e9f9-400a-aee5-52e11eebf069_786x590.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uiRt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39e0b869-e9f9-400a-aee5-52e11eebf069_786x590.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uiRt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39e0b869-e9f9-400a-aee5-52e11eebf069_786x590.jpeg" width="786" height="590" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/39e0b869-e9f9-400a-aee5-52e11eebf069_786x590.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:590,&quot;width&quot;:786,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uiRt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39e0b869-e9f9-400a-aee5-52e11eebf069_786x590.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uiRt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39e0b869-e9f9-400a-aee5-52e11eebf069_786x590.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uiRt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39e0b869-e9f9-400a-aee5-52e11eebf069_786x590.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uiRt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39e0b869-e9f9-400a-aee5-52e11eebf069_786x590.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I really like the new box. My daughter loves it and uses it every day. My wife hates it, because she has to listen to the same audio books every day.</p><p>I learned so much doing this project. And I know that if something breaks, it's my fault and I will be able to fix it.</p><p>My daughter is happy again and so am I! Thanks, Home Assistant.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Update 2024</strong></h2><p>I built a further improved version of the box as a birthday present. But maybe this is content for another post&#8230;</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c4abe6d7-9f29-4415-a591-697ba4085333_2048x1536.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce0b836f-2e95-4320-b1de-7209949ecc8c_2048x1536.jpeg&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c2cd2533-5013-422a-aef6-f53b9a933aa7_1456x720.png&quot;}},&quot;isEditorNode&quot;:true}"></div>]]></content:encoded></item><item><title><![CDATA[Home Assistant saves my Daughter from Nightmares]]></title><description><![CDATA[How to know if your Kids are Sneaking on you]]></description><link>https://www.cellos.blog/p/home-assistant-saves-my-daughter-from-nightmares</link><guid isPermaLink="false">https://www.cellos.blog/p/home-assistant-saves-my-daughter-from-nightmares</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Thu, 24 Jul 2025 11:14:49 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1580920790557-43158492adb5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxuaWdodG1hcmV8ZW58MHx8fHwxNzUzMzEyOTM2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1580920790557-43158492adb5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxuaWdodG1hcmV8ZW58MHx8fHwxNzUzMzEyOTM2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1580920790557-43158492adb5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxuaWdodG1hcmV8ZW58MHx8fHwxNzUzMzEyOTM2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1580920790557-43158492adb5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxuaWdodG1hcmV8ZW58MHx8fHwxNzUzMzEyOTM2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1580920790557-43158492adb5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxuaWdodG1hcmV8ZW58MHx8fHwxNzUzMzEyOTM2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1580920790557-43158492adb5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxuaWdodG1hcmV8ZW58MHx8fHwxNzUzMzEyOTM2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1580920790557-43158492adb5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxuaWdodG1hcmV8ZW58MHx8fHwxNzUzMzEyOTM2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="6048" height="4032" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1580920790557-43158492adb5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxuaWdodG1hcmV8ZW58MHx8fHwxNzUzMzEyOTM2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:4032,&quot;width&quot;:6048,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;silhouette of man standing in front of window&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="silhouette of man standing in front of window" title="silhouette of man standing in front of window" srcset="https://images.unsplash.com/photo-1580920790557-43158492adb5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxuaWdodG1hcmV8ZW58MHx8fHwxNzUzMzEyOTM2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1580920790557-43158492adb5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxuaWdodG1hcmV8ZW58MHx8fHwxNzUzMzEyOTM2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1580920790557-43158492adb5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxuaWdodG1hcmV8ZW58MHx8fHwxNzUzMzEyOTM2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1580920790557-43158492adb5?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHxuaWdodG1hcmV8ZW58MHx8fHwxNzUzMzEyOTM2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="true">ALEXANDRE LALLEMAND</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><h2><strong>The Problem</strong></h2><p>When our daughter is (finally) asleep, we like to watch a few more series to wind down. Currently, we are into relatively violent stuff like <strong><a href="https://amzn.to/3XyVo7U">The Boys</a></strong>. My wife likes to tell the anecdote that she used to crawl out of bed as a child, then secretly sit on the stairs and listen to her parents or the television. Once, she even had nightmares because her parents were watching a horror movie and she couldn't get the horrifying screams out of her head.</p><p>But back to the present:</p><blockquote><p><em><strong>I don't want my child to see exploding heads or dismembered people, let alone dream about them.</strong></em></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zERA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27c907d-0b87-4907-bc3a-600f8ade5376_480x272.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zERA!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27c907d-0b87-4907-bc3a-600f8ade5376_480x272.gif 424w, https://substackcdn.com/image/fetch/$s_!zERA!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27c907d-0b87-4907-bc3a-600f8ade5376_480x272.gif 848w, https://substackcdn.com/image/fetch/$s_!zERA!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27c907d-0b87-4907-bc3a-600f8ade5376_480x272.gif 1272w, https://substackcdn.com/image/fetch/$s_!zERA!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27c907d-0b87-4907-bc3a-600f8ade5376_480x272.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zERA!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27c907d-0b87-4907-bc3a-600f8ade5376_480x272.gif" width="480" height="272" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c27c907d-0b87-4907-bc3a-600f8ade5376_480x272.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:272,&quot;width&quot;:480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zERA!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27c907d-0b87-4907-bc3a-600f8ade5376_480x272.gif 424w, https://substackcdn.com/image/fetch/$s_!zERA!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27c907d-0b87-4907-bc3a-600f8ade5376_480x272.gif 848w, https://substackcdn.com/image/fetch/$s_!zERA!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27c907d-0b87-4907-bc3a-600f8ade5376_480x272.gif 1272w, https://substackcdn.com/image/fetch/$s_!zERA!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27c907d-0b87-4907-bc3a-600f8ade5376_480x272.gif 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Home Assistant to the rescue!</strong></h2><p>The first challenge was to figure out how to detect my daughter's escape attempts in time. The solution is super simple:</p><p>I installed a <strong><a href="https://amzn.to/3ZfLBF6">cheap little door contact</a></strong> on the door to her nursery. <em>Installed</em> is an exaggeration, these things are just stuck on.</p><p>I then integrated it into Home Assistant. When integrating new sensors, it's best to remember to tidy up right away: give them a sensible name and disable any entities you don't need.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6vdb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8197916-acdf-4ca2-85c5-0c78a89ad622_1309x951.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6vdb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8197916-acdf-4ca2-85c5-0c78a89ad622_1309x951.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6vdb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8197916-acdf-4ca2-85c5-0c78a89ad622_1309x951.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6vdb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8197916-acdf-4ca2-85c5-0c78a89ad622_1309x951.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6vdb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8197916-acdf-4ca2-85c5-0c78a89ad622_1309x951.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6vdb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8197916-acdf-4ca2-85c5-0c78a89ad622_1309x951.jpeg" width="1309" height="951" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8197916-acdf-4ca2-85c5-0c78a89ad622_1309x951.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:951,&quot;width&quot;:1309,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6vdb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8197916-acdf-4ca2-85c5-0c78a89ad622_1309x951.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6vdb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8197916-acdf-4ca2-85c5-0c78a89ad622_1309x951.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6vdb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8197916-acdf-4ca2-85c5-0c78a89ad622_1309x951.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6vdb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8197916-acdf-4ca2-85c5-0c78a89ad622_1309x951.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now I can notice my little runaway as soon as she opens the door!</p><p>The opening of the door is the trigger of my automation. When this trigger occurs, I pause the playback on my <strong><a href="https://amzn.to/47gcJ99">Fire TV Cube</a></strong> and let my <strong><a href="https://amzn.to/3Xeq657">speakers</a></strong> make a little warning announcement.</p><p>Of course, this only happens when the cinema is currently enabled and it's our daughter's sleeping time. Otherwise, we would hear the announcement all day long&#8230;</p><pre><code><code>alias: Notify at Fire TV Cube when Lia opens her door
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.liasroom_door
    from: "off"
    to: "on"
condition:
  - condition: state
    entity_id: binary_sensor.lia_sleeping
    state: "on"
action:
  - condition: state
    entity_id: input_boolean.livingroom_cinema_enabled
    state: "on"
  - target:
      entity_id: tts.home_assistant_cloud
    data:
      cache: true
      message: Lia is awake!
      media_player_entity_id: media_player.wohnzimmer
    action: tts.speak
mode: single
</code></code></pre><h2><strong>An authentic evening on the couch</strong></h2><ul><li><p>My wife and I are watching a gore-slasher-nightmare-horror movie</p></li><li><p>Our little escapee sneaks out of her bed and opens the door.</p></li><li><p>The movie pauses immediately; there are no scary noises or destructive images.</p></li><li><p>The announcement confirms that our daughter seems to be awake.</p></li><li><p>One of us can quickly go upstairs and put our daughter back into bed before she even has a chance to look at the screen.</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Conclusion</strong></h2><p>That's why I love Home Assistant! Such a little automation adds so much value. Sweet dreams!</p>]]></content:encoded></item><item><title><![CDATA[Lost in Translation]]></title><description><![CDATA[The Problem]]></description><link>https://www.cellos.blog/p/lost-in-translation</link><guid isPermaLink="false">https://www.cellos.blog/p/lost-in-translation</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Thu, 24 Jul 2025 11:13:14 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1673515335152-f2589ba8bb7a?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8dHJhbnNsYXRlfGVufDB8fHx8MTc1MzM1NTUzNXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1673515335152-f2589ba8bb7a?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8dHJhbnNsYXRlfGVufDB8fHx8MTc1MzM1NTUzNXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1673515335152-f2589ba8bb7a?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8dHJhbnNsYXRlfGVufDB8fHx8MTc1MzM1NTUzNXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1673515335152-f2589ba8bb7a?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8dHJhbnNsYXRlfGVufDB8fHx8MTc1MzM1NTUzNXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1673515335152-f2589ba8bb7a?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8dHJhbnNsYXRlfGVufDB8fHx8MTc1MzM1NTUzNXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1673515335152-f2589ba8bb7a?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8dHJhbnNsYXRlfGVufDB8fHx8MTc1MzM1NTUzNXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1673515335152-f2589ba8bb7a?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8dHJhbnNsYXRlfGVufDB8fHx8MTc1MzM1NTUzNXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="1080" height="720" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1673515335152-f2589ba8bb7a?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8dHJhbnNsYXRlfGVufDB8fHx8MTc1MzM1NTUzNXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;a wooden block that says translation on it&quot;,&quot;title&quot;:&quot;a wooden block that says translation on it&quot;,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="a wooden block that says translation on it" title="a wooden block that says translation on it" srcset="https://images.unsplash.com/photo-1673515335152-f2589ba8bb7a?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8dHJhbnNsYXRlfGVufDB8fHx8MTc1MzM1NTUzNXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1673515335152-f2589ba8bb7a?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8dHJhbnNsYXRlfGVufDB8fHx8MTc1MzM1NTUzNXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1673515335152-f2589ba8bb7a?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8dHJhbnNsYXRlfGVufDB8fHx8MTc1MzM1NTUzNXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1673515335152-f2589ba8bb7a?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyOHx8dHJhbnNsYXRlfGVufDB8fHx8MTc1MzM1NTUzNXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>The Problem</strong></h2><p>The other day I picked up a phrase that still bounces around in my head from time to time.</p><p>If you don't write in your native language, there's always a risk that details will get lost.</p><p>I've been blogging in English so far in order to reach more people. But my mother tongue is German. Do I still manage to express what I want to convey?</p><p>I think so&#8482;. But even though I think I write good English, it takes me a lot more time and energy to write a post in a foreign language.</p><h2><strong>The Idea</strong></h2><p>So I had the idea to try the best of both worlds:</p><p>Why not write in my native language, where I have a deep understanding of subtle differences in meaning, idioms and vocabulary, and then simply have everything translated into the target foreign language?</p><h2><strong>The Test</strong></h2><p>And in fact, what you are reading here is already the result of that experiment.</p><p>I had this text translated from German to English by deepL. It took me barely 10 minutes to write this blog post.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>The Question</strong></h2><p>But does it still sound like me? Or are the little mistakes I make in my posts due to the foreign language the soul of my blog? Philosophical deep talk today...</p>]]></content:encoded></item><item><title><![CDATA[Fixing Connection Issues by Flashing ESPHome on Shellys OTA]]></title><description><![CDATA[The Problem]]></description><link>https://www.cellos.blog/p/fixing-connection-issues-by-flashing-esphome-on-shellys-ota</link><guid isPermaLink="false">https://www.cellos.blog/p/fixing-connection-issues-by-flashing-esphome-on-shellys-ota</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Thu, 24 Jul 2025 11:10:41 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1564771784795-aebf524ac5e4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8c3RhaXJzJTIwbGlnaHR8ZW58MHx8fHwxNzUzMzU1MzcwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1564771784795-aebf524ac5e4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8c3RhaXJzJTIwbGlnaHR8ZW58MHx8fHwxNzUzMzU1MzcwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1564771784795-aebf524ac5e4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8c3RhaXJzJTIwbGlnaHR8ZW58MHx8fHwxNzUzMzU1MzcwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1564771784795-aebf524ac5e4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8c3RhaXJzJTIwbGlnaHR8ZW58MHx8fHwxNzUzMzU1MzcwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1564771784795-aebf524ac5e4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8c3RhaXJzJTIwbGlnaHR8ZW58MHx8fHwxNzUzMzU1MzcwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1564771784795-aebf524ac5e4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8c3RhaXJzJTIwbGlnaHR8ZW58MHx8fHwxNzUzMzU1MzcwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1564771784795-aebf524ac5e4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8c3RhaXJzJTIwbGlnaHR8ZW58MHx8fHwxNzUzMzU1MzcwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="3043" height="4565" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1564771784795-aebf524ac5e4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8c3RhaXJzJTIwbGlnaHR8ZW58MHx8fHwxNzUzMzU1MzcwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:4565,&quot;width&quot;:3043,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;brown wooden stair&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="brown wooden stair" title="brown wooden stair" srcset="https://images.unsplash.com/photo-1564771784795-aebf524ac5e4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8c3RhaXJzJTIwbGlnaHR8ZW58MHx8fHwxNzUzMzU1MzcwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1564771784795-aebf524ac5e4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8c3RhaXJzJTIwbGlnaHR8ZW58MHx8fHwxNzUzMzU1MzcwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1564771784795-aebf524ac5e4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8c3RhaXJzJTIwbGlnaHR8ZW58MHx8fHwxNzUzMzU1MzcwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1564771784795-aebf524ac5e4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8c3RhaXJzJTIwbGlnaHR8ZW58MHx8fHwxNzUzMzU1MzcwfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="true">Robert Katzki</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><h2><strong>The Problem</strong></h2><p>My house is flooded with smart relays from Shelly.</p><ul><li><p>I use multiple <strong><a href="https://amzn.to/3LJYm2f">Shelly 2.5</a></strong> to control all the covers in my house</p></li><li><p>I use a <strong><a href="https://amzn.to/3LKJiSg">Shelly 1PM</a></strong> to keep track of the production of my <strong><a href="https://amzn.to/4cQXyV1">balcony power plant</a></strong></p></li><li><p>I use many <strong><a href="https://amzn.to/4e69Rhd">Shelly 1</a></strong> to automate my light switches</p></li></ul><p>I have at least 30 smart relays around my house/garden and they work flawlessly! But then there are one or two relays that give me headaches. Especially the one controlling the lights at my stairs. These lights are motion-controlled and I expect them to go off 3 minutes after all motion cleared. But over the last couple of weeks, this has not been happening.. This is very annoying since I had to get out of bed and switch them off manually.</p><p>So I checked the Home Assistant logs regularly to find the root cause. But all I found was the generic error <code>DeviceConnectionError()</code>.</p><p>Then I stumbled on something interesting in the <strong><a href="https://esphome.io/components/api.html">ESPHome docs</a></strong>:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!C_jN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc8088b-8817-45e0-bbb1-da0be3244a3b_697x481.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C_jN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc8088b-8817-45e0-bbb1-da0be3244a3b_697x481.jpeg 424w, https://substackcdn.com/image/fetch/$s_!C_jN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc8088b-8817-45e0-bbb1-da0be3244a3b_697x481.jpeg 848w, https://substackcdn.com/image/fetch/$s_!C_jN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc8088b-8817-45e0-bbb1-da0be3244a3b_697x481.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!C_jN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc8088b-8817-45e0-bbb1-da0be3244a3b_697x481.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C_jN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc8088b-8817-45e0-bbb1-da0be3244a3b_697x481.jpeg" width="697" height="481" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/abc8088b-8817-45e0-bbb1-da0be3244a3b_697x481.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:481,&quot;width&quot;:697,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!C_jN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc8088b-8817-45e0-bbb1-da0be3244a3b_697x481.jpeg 424w, https://substackcdn.com/image/fetch/$s_!C_jN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc8088b-8817-45e0-bbb1-da0be3244a3b_697x481.jpeg 848w, https://substackcdn.com/image/fetch/$s_!C_jN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc8088b-8817-45e0-bbb1-da0be3244a3b_697x481.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!C_jN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc8088b-8817-45e0-bbb1-da0be3244a3b_697x481.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That&#8217;s why I decided to give ESPHome a try and looked for a way to flash ESPHome onto my Shelly. Maybe this might finally fix the connection errors! Let&#8217;s get going!</p><h2><strong>Creating the ESPHome firmware</strong></h2><p>Go to ESPHome and add a new device. We do <strong>not</strong> need to connect our Shelly to the computer since we can do everything <em>OTA</em> (over-the-air).</p><p>Click on edit and insert and tweak the following configuration to fit your needs:</p><pre><code><code># Basic Config
esphome:
  name: stairs_light_shelly
  platform: ESP8266
  board: esp01_1m

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

logger:
api:
ota:

# Device Specific Config
output:
  - platform: gpio
    pin: GPIO4
    id: relayid

light:
  - platform: binary
    name: "stairs_light"
    output: relayid
    id: lightid

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO5
    name: "stairs_light_button"
    id: switchid
</code></code></pre><p>Hit save, click the 3 dots and select install. Choose <em>Manual download</em> and download the firmware file in <em>modern format</em>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Juql!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2918d-52be-4027-8c66-73f6836d5f46_551x423.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Juql!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2918d-52be-4027-8c66-73f6836d5f46_551x423.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Juql!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2918d-52be-4027-8c66-73f6836d5f46_551x423.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Juql!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2918d-52be-4027-8c66-73f6836d5f46_551x423.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Juql!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2918d-52be-4027-8c66-73f6836d5f46_551x423.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Juql!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2918d-52be-4027-8c66-73f6836d5f46_551x423.jpeg" width="551" height="423" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aba2918d-52be-4027-8c66-73f6836d5f46_551x423.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:423,&quot;width&quot;:551,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Juql!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2918d-52be-4027-8c66-73f6836d5f46_551x423.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Juql!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2918d-52be-4027-8c66-73f6836d5f46_551x423.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Juql!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2918d-52be-4027-8c66-73f6836d5f46_551x423.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Juql!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba2918d-52be-4027-8c66-73f6836d5f46_551x423.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>After the file was created and downloaded, we have to zip it since the file would be too big to upload it onto the Shelly 1. I use <strong><a href="https://www.7-zip.org/">7-Zip</a></strong> for that. Simply right-click the file and compress it to <strong>gzip</strong>!</p><p>You should now have a Shelly 1 ESPHome firmware with extension <code>.bin.gz</code> on your drive.</p><h2><strong>Flashing Tasmota as intermediate firmware</strong></h2><p>Check which IP is assigned to the Shelly you want to flash. You can see this in your <strong><a href="https://amzn.to/3NNV40z">router</a></strong> or by clicking <em>Visit</em> from inside Home Assistant.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JbBF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b2918f7-a062-484b-83fd-596a37f9e78c_366x332.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JbBF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b2918f7-a062-484b-83fd-596a37f9e78c_366x332.jpeg 424w, https://substackcdn.com/image/fetch/$s_!JbBF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b2918f7-a062-484b-83fd-596a37f9e78c_366x332.jpeg 848w, https://substackcdn.com/image/fetch/$s_!JbBF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b2918f7-a062-484b-83fd-596a37f9e78c_366x332.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!JbBF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b2918f7-a062-484b-83fd-596a37f9e78c_366x332.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JbBF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b2918f7-a062-484b-83fd-596a37f9e78c_366x332.jpeg" width="366" height="332" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b2918f7-a062-484b-83fd-596a37f9e78c_366x332.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:332,&quot;width&quot;:366,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JbBF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b2918f7-a062-484b-83fd-596a37f9e78c_366x332.jpeg 424w, https://substackcdn.com/image/fetch/$s_!JbBF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b2918f7-a062-484b-83fd-596a37f9e78c_366x332.jpeg 848w, https://substackcdn.com/image/fetch/$s_!JbBF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b2918f7-a062-484b-83fd-596a37f9e78c_366x332.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!JbBF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b2918f7-a062-484b-83fd-596a37f9e78c_366x332.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Check the table in <strong><a href="https://github.com/alexdelprete/mgos-to-tasmota">this repository</a></strong>. In case of a Shelly 1 you&#8217;d have to enter the following URL into the browser:</p><pre><code><code>http://YOURIPADDRESS/ota?url=http://ota.tasmota.com/tasmota/shelly/mg2tasmota-Shelly1.zip
</code></code></pre><p>This will flash Tasmota onto your Shelly.</p><p>After 2 minutes you should see a new WiFi network with a name like <code>tasmota-XXXXX</code>. Connect to it and head over to </p><p>http://192.168.4.1</p><p>Here you can enter your WiFi credentials and hit save. Tasmota will now connect to your WiFi.</p><h2><strong>Flashing our ESPHome firmware</strong></h2><p>Go back to the IP address of your Shelly. You should see the default page of Tasmota.</p><p>Now it&#8217;s important to click on Console and enter</p><pre><code><code>SetOption78 1
</code></code></pre><p>The console should confirm that you enabled the option 78. This enables us to flash firmware files that are not Tasmota builds.</p><p>Now head back to the main menu, select <em>Firmware Upgrade</em> and upload the firmware file we created previously. Start the upgrade! If everything worked out you should get a success message.</p><h2><strong>Integration into Home Assistant</strong></h2><p>After a short time (or a forced restart of Home Assistant), you will receive a notification that a new ESPHome device has been discovered &#8212; automatically!</p><p>That was easy.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xWE7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9afdb8d-2b04-4871-8d99-026d49862158_1064x839.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xWE7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9afdb8d-2b04-4871-8d99-026d49862158_1064x839.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xWE7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9afdb8d-2b04-4871-8d99-026d49862158_1064x839.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xWE7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9afdb8d-2b04-4871-8d99-026d49862158_1064x839.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xWE7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9afdb8d-2b04-4871-8d99-026d49862158_1064x839.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xWE7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9afdb8d-2b04-4871-8d99-026d49862158_1064x839.jpeg" width="1064" height="839" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b9afdb8d-2b04-4871-8d99-026d49862158_1064x839.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:839,&quot;width&quot;:1064,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xWE7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9afdb8d-2b04-4871-8d99-026d49862158_1064x839.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xWE7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9afdb8d-2b04-4871-8d99-026d49862158_1064x839.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xWE7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9afdb8d-2b04-4871-8d99-026d49862158_1064x839.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xWE7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9afdb8d-2b04-4871-8d99-026d49862158_1064x839.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Summary</strong></h2><p>It is possible to flash ESPHome onto many kinds of <strong><a href="https://amzn.to/4dQAKG4">Shelly smart relays</a></strong> simply over-the-air. For me this fixed the connection issues I had with a specific Shelly 1.</p><p>This tutorial might help you if you are trying to solve the same problem!</p>]]></content:encoded></item><item><title><![CDATA[My Journey to Pain-Free Typing]]></title><description><![CDATA[As software developers, we type a lot.]]></description><link>https://www.cellos.blog/p/my-journey-to-pain-free-typing</link><guid isPermaLink="false">https://www.cellos.blog/p/my-journey-to-pain-free-typing</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Thu, 24 Jul 2025 10:39:57 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1627738641656-aebd944716cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYW5kJTIwcGFpbnxlbnwwfHx8fDE3NTMzNTM1NjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1627738641656-aebd944716cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYW5kJTIwcGFpbnxlbnwwfHx8fDE3NTMzNTM1NjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1627738641656-aebd944716cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYW5kJTIwcGFpbnxlbnwwfHx8fDE3NTMzNTM1NjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1627738641656-aebd944716cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYW5kJTIwcGFpbnxlbnwwfHx8fDE3NTMzNTM1NjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1627738641656-aebd944716cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYW5kJTIwcGFpbnxlbnwwfHx8fDE3NTMzNTM1NjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1627738641656-aebd944716cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYW5kJTIwcGFpbnxlbnwwfHx8fDE3NTMzNTM1NjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1627738641656-aebd944716cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYW5kJTIwcGFpbnxlbnwwfHx8fDE3NTMzNTM1NjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="4592" height="3064" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1627738641656-aebd944716cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYW5kJTIwcGFpbnxlbnwwfHx8fDE3NTMzNTM1NjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3064,&quot;width&quot;:4592,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;person holding hands of another person&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="person holding hands of another person" title="person holding hands of another person" srcset="https://images.unsplash.com/photo-1627738641656-aebd944716cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYW5kJTIwcGFpbnxlbnwwfHx8fDE3NTMzNTM1NjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1627738641656-aebd944716cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYW5kJTIwcGFpbnxlbnwwfHx8fDE3NTMzNTM1NjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1627738641656-aebd944716cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYW5kJTIwcGFpbnxlbnwwfHx8fDE3NTMzNTM1NjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1627738641656-aebd944716cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxoYW5kJTIwcGFpbnxlbnwwfHx8fDE3NTMzNTM1NjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="true">Towfiqu barbhuiya</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>As software developers, we type a lot. And we type very fast&#8230; This results in quite some keystrokes over the years. Sadly we don't get younger. Due to that load most of us will feel some signs of wear and tear at some point in their career. For some it's the neck, for others it's a pain in the fingers.</p><p>When I reached that point a few years ago, I decided to do something against it. I still have many, many full days of typing ahead of me and if I keep going like that, the pain might get worse. I decided to learn more ergonomic typing!</p><h2><strong>Problems with the </strong><code>QWERTY</code><strong> layout</strong></h2><p>Next time you are in the office, take a minute and observe a colleague while typing an email. You'll notice that his hands and fingers are moving like crazy, stretching, wrenching and twisting over the keyboard. Even an amateur will see that this arrangement of keys seems to be not very effective. It seems like two keys are always on the exact opposite side of the keyboard making the hands and fingers travelling the maximum distance possible.</p><p>And why is that? Because this actually was a design goal of Christopher Sholes when he developed the <code>QWERTY</code> layout that we use on our keyboards today.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ayPj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc157810a-42f8-485f-8389-795096a0dcb0_330x211.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ayPj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc157810a-42f8-485f-8389-795096a0dcb0_330x211.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ayPj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc157810a-42f8-485f-8389-795096a0dcb0_330x211.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ayPj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc157810a-42f8-485f-8389-795096a0dcb0_330x211.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ayPj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc157810a-42f8-485f-8389-795096a0dcb0_330x211.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ayPj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc157810a-42f8-485f-8389-795096a0dcb0_330x211.jpeg" width="330" height="211" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c157810a-42f8-485f-8389-795096a0dcb0_330x211.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:211,&quot;width&quot;:330,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ayPj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc157810a-42f8-485f-8389-795096a0dcb0_330x211.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ayPj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc157810a-42f8-485f-8389-795096a0dcb0_330x211.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ayPj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc157810a-42f8-485f-8389-795096a0dcb0_330x211.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ayPj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc157810a-42f8-485f-8389-795096a0dcb0_330x211.jpeg 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>He had no keyboard, he had a typewriter. When you pressed a key, a metal bar struck the paper to print each character with ink. And if two neighboring metal bars hammered at the same time they could potentially collide and got stuck.</p><p>That's why Christopher looked at the frequency of common words and letters of the english language and placed the most used letters as far apart as possible. The <code>QWERTY</code> layout was born.</p><h2><strong>Discovering </strong><code>Noted</code></h2><p>Keyboards got rid of metal bars. So lots of smart people used this chance to create alternative layouts not optimize for an outdated goal like <em>less collisions of metal bars</em> but for a really helpful goal like <em>ergonomy</em>! All of them are magnitudes better than <code>QWERTY</code> and I don't want to judge which arguably is the best, but the one I went with is <code>Noted</code>.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!s5wj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa559092-98c2-4f41-972c-06f26cb0d7cb_535x183.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!s5wj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa559092-98c2-4f41-972c-06f26cb0d7cb_535x183.jpeg 424w, https://substackcdn.com/image/fetch/$s_!s5wj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa559092-98c2-4f41-972c-06f26cb0d7cb_535x183.jpeg 848w, https://substackcdn.com/image/fetch/$s_!s5wj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa559092-98c2-4f41-972c-06f26cb0d7cb_535x183.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!s5wj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa559092-98c2-4f41-972c-06f26cb0d7cb_535x183.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!s5wj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa559092-98c2-4f41-972c-06f26cb0d7cb_535x183.jpeg" width="535" height="183" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa559092-98c2-4f41-972c-06f26cb0d7cb_535x183.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:183,&quot;width&quot;:535,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!s5wj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa559092-98c2-4f41-972c-06f26cb0d7cb_535x183.jpeg 424w, https://substackcdn.com/image/fetch/$s_!s5wj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa559092-98c2-4f41-972c-06f26cb0d7cb_535x183.jpeg 848w, https://substackcdn.com/image/fetch/$s_!s5wj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa559092-98c2-4f41-972c-06f26cb0d7cb_535x183.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!s5wj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa559092-98c2-4f41-972c-06f26cb0d7cb_535x183.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>I was extremely hyped, thinking I might have found a solution to save my fingers. But that feeling changed soon...</p><h2><strong>My learning journey</strong></h2><p>I found this <strong><a href="https://monkeytype.com/">beautiful website</a></strong> that gives you exercises to type and tracks your progress over time. I changed my layout to <code>Noted</code> and started... After one to two days I knew where all the keys were.</p><p>I decided to go cold turkey. From one day to the next, I changed my layout to <code>Noted</code> on all my machines. I printed the layout as a cheat sheet and put it next to my keyboard to get started.</p><p>Now began the hard part. This next two weeks were crushing. I typed around 6 words per minute. It felt like I had a stroke.</p><p>Chatting with colleagues became a chore, writing software was nearly impossible, and everything felt clumsy and slow, which was quite frustrating.</p><p>I think this is the first stage where people might give up. And I can totally relate. But with some motivation from a friend of mine who went that road years ago, I kept going.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YoPs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ef89533-ae19-438e-a3d3-e1045bf83a33_1579x413.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YoPs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ef89533-ae19-438e-a3d3-e1045bf83a33_1579x413.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YoPs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ef89533-ae19-438e-a3d3-e1045bf83a33_1579x413.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YoPs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ef89533-ae19-438e-a3d3-e1045bf83a33_1579x413.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YoPs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ef89533-ae19-438e-a3d3-e1045bf83a33_1579x413.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YoPs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ef89533-ae19-438e-a3d3-e1045bf83a33_1579x413.jpeg" width="1456" height="381" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ef89533-ae19-438e-a3d3-e1045bf83a33_1579x413.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:381,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YoPs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ef89533-ae19-438e-a3d3-e1045bf83a33_1579x413.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YoPs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ef89533-ae19-438e-a3d3-e1045bf83a33_1579x413.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YoPs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ef89533-ae19-438e-a3d3-e1045bf83a33_1579x413.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YoPs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ef89533-ae19-438e-a3d3-e1045bf83a33_1579x413.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>After 4-5 weeks consistently writing <code>Noted</code> only and exercising with monkey type multiple times a day, I slowly came back to a okayish typing speed. And by that I don't mean fast, I mean I could get some work done. Slowly.</p><p>It took me around 3 months until it made click. After that time I reached around 30 words per minute, which is not totally embarrassing anymore.</p><p>Today, nearly a year later, I can type at a speed of around 50-60 words per minute. But I am drifting up only talking about speeds while my initial goal was ergonomy. So how does it feel?</p><h2><strong>Benefits I've experienced</strong></h2><p>This is the first time in my life I can actually type blindly. I always was fast and peaked seldomly, but this is another level. I now never look at the keyboard. I even use a keyboard that only has <strong><a href="https://amzn.to/4cLLDHO">blank key caps</a></strong>. This feels good. And nerdy.</p><p>Additionally, your fingers seem to naturally rest at the home row. Colleagues say it looks really relaxing when I type. And this is true. Your hand is still while your fingers only make minor movements. You actually can see that when looking at the finger heatmap.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ff0o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d29a419-f9b9-4b26-a35a-c2425ad29784_1354x641.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ff0o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d29a419-f9b9-4b26-a35a-c2425ad29784_1354x641.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Ff0o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d29a419-f9b9-4b26-a35a-c2425ad29784_1354x641.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Ff0o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d29a419-f9b9-4b26-a35a-c2425ad29784_1354x641.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Ff0o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d29a419-f9b9-4b26-a35a-c2425ad29784_1354x641.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ff0o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d29a419-f9b9-4b26-a35a-c2425ad29784_1354x641.jpeg" width="1354" height="641" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4d29a419-f9b9-4b26-a35a-c2425ad29784_1354x641.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:641,&quot;width&quot;:1354,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ff0o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d29a419-f9b9-4b26-a35a-c2425ad29784_1354x641.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Ff0o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d29a419-f9b9-4b26-a35a-c2425ad29784_1354x641.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Ff0o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d29a419-f9b9-4b26-a35a-c2425ad29784_1354x641.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Ff0o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d29a419-f9b9-4b26-a35a-c2425ad29784_1354x641.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In addition to that your fingers seem to roll the words. That might read strange but often you do 2 strokes on the home row with the left hand and then 2 key strokes on the home row with the right hand. This feels natural and almost like playing the piano.</p><p>And most important: My pain is gone.</p><p><code>Noted</code> also has layers. Just like <code>QWERTY</code> changes from minor to capital letters when holding the shift key, <code>Noted</code> changes to another layer.</p><p>The first layer contains all the special characters. This is super cool especially for programmers since important keys like the brackets are all on the home row. So even this can be typed without hand movements.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!X5pp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a16f922-226e-4e1a-baba-6bc44935e4bf_690x183.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X5pp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a16f922-226e-4e1a-baba-6bc44935e4bf_690x183.jpeg 424w, https://substackcdn.com/image/fetch/$s_!X5pp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a16f922-226e-4e1a-baba-6bc44935e4bf_690x183.jpeg 848w, https://substackcdn.com/image/fetch/$s_!X5pp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a16f922-226e-4e1a-baba-6bc44935e4bf_690x183.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!X5pp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a16f922-226e-4e1a-baba-6bc44935e4bf_690x183.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X5pp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a16f922-226e-4e1a-baba-6bc44935e4bf_690x183.jpeg" width="690" height="183" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a16f922-226e-4e1a-baba-6bc44935e4bf_690x183.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:183,&quot;width&quot;:690,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!X5pp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a16f922-226e-4e1a-baba-6bc44935e4bf_690x183.jpeg 424w, https://substackcdn.com/image/fetch/$s_!X5pp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a16f922-226e-4e1a-baba-6bc44935e4bf_690x183.jpeg 848w, https://substackcdn.com/image/fetch/$s_!X5pp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a16f922-226e-4e1a-baba-6bc44935e4bf_690x183.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!X5pp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a16f922-226e-4e1a-baba-6bc44935e4bf_690x183.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>My favorite is the second layer because you immediately have the arrow keys under your left hand and a number block under the right hand. This helps for navigating code and drastically reduced my mouse usage.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0-xh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f3b027-e811-484c-8ec4-15d54f912a14_690x183.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0-xh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f3b027-e811-484c-8ec4-15d54f912a14_690x183.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0-xh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f3b027-e811-484c-8ec4-15d54f912a14_690x183.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0-xh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f3b027-e811-484c-8ec4-15d54f912a14_690x183.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0-xh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f3b027-e811-484c-8ec4-15d54f912a14_690x183.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0-xh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f3b027-e811-484c-8ec4-15d54f912a14_690x183.jpeg" width="690" height="183" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1f3b027-e811-484c-8ec4-15d54f912a14_690x183.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:183,&quot;width&quot;:690,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0-xh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f3b027-e811-484c-8ec4-15d54f912a14_690x183.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0-xh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f3b027-e811-484c-8ec4-15d54f912a14_690x183.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0-xh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f3b027-e811-484c-8ec4-15d54f912a14_690x183.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0-xh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f3b027-e811-484c-8ec4-15d54f912a14_690x183.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>I could go more into detail but I need to wrap it up here:</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Conclusion</strong></h2><p>I spent 3 months learning something that will benefit me for the rest of my life. That's a no-brainer. If you experience a strain in the fingers or the neck, give it a try for its ergonomic effects! If you work as a developer, give it a try - you will learn to love its layers while coding. If you, like me, do both, what the hell are you still waiting for?</p>]]></content:encoded></item><item><title><![CDATA[How I explained IoC and DI to our Senior Software Engineer]]></title><description><![CDATA[A Step-by-Step Guide to Understanding Inversion of Control and Dependency Injection]]></description><link>https://www.cellos.blog/p/how-i-explained-ioc-and-di-to-our-senior-software-engineer</link><guid isPermaLink="false">https://www.cellos.blog/p/how-i-explained-ioc-and-di-to-our-senior-software-engineer</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Thu, 24 Jul 2025 10:39:04 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1431499012454-31a9601150c9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdG9wd2F0Y2h8ZW58MHx8fHwxNzUzMzUzNDg2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1431499012454-31a9601150c9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdG9wd2F0Y2h8ZW58MHx8fHwxNzUzMzUzNDg2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1431499012454-31a9601150c9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdG9wd2F0Y2h8ZW58MHx8fHwxNzUzMzUzNDg2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1431499012454-31a9601150c9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdG9wd2F0Y2h8ZW58MHx8fHwxNzUzMzUzNDg2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1431499012454-31a9601150c9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdG9wd2F0Y2h8ZW58MHx8fHwxNzUzMzUzNDg2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1431499012454-31a9601150c9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdG9wd2F0Y2h8ZW58MHx8fHwxNzUzMzUzNDg2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1431499012454-31a9601150c9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdG9wd2F0Y2h8ZW58MHx8fHwxNzUzMzUzNDg2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="4272" height="2848" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1431499012454-31a9601150c9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdG9wd2F0Y2h8ZW58MHx8fHwxNzUzMzUzNDg2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2848,&quot;width&quot;:4272,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;person holding white and silver-colored pocket watch&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="person holding white and silver-colored pocket watch" title="person holding white and silver-colored pocket watch" srcset="https://images.unsplash.com/photo-1431499012454-31a9601150c9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdG9wd2F0Y2h8ZW58MHx8fHwxNzUzMzUzNDg2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1431499012454-31a9601150c9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdG9wd2F0Y2h8ZW58MHx8fHwxNzUzMzUzNDg2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1431499012454-31a9601150c9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdG9wd2F0Y2h8ZW58MHx8fHwxNzUzMzUzNDg2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1431499012454-31a9601150c9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzdG9wd2F0Y2h8ZW58MHx8fHwxNzUzMzUzNDg2fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="true">Veri Ivanova</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>Inversion of Control and Dependency Injection are two of these big buzz words you always hear when talking about modern software development. At least they were when I started going professional. That&#8217;s why I invested quite some time to research that topic. I was surprised that our Senior Software Engineer did not&#8230;</p><p>I had to explain it to him while reviewing some of my code. I still remember his reaction:</p><blockquote><p><em><strong>That&#8217;s it? That easy? I was completely mystified by that stuff for years and you just explained it to me in a short call?</strong></em></p></blockquote><p>If even my valued colleague, who was my mentor for the past few years, still didn&#8217;t get that concept, I thought it might be worth writing yet another explanation:</p><blockquote><p><em><strong>Inversion of Control and Dependency Injection for Dummies!</strong></em></p></blockquote><h2><strong>Dependency Injection</strong></h2><p>Let&#8217;s say you want to write a piece of code that tracks how much time you spend in front of your computer. You might come up with a simple API like this:</p><pre><code><code>using System;

namespace ComputerTimeTracker
{
    public interface IComputerTimeTracker
    {
        void StartTracking();
        void StopTracking();
        TimeSpan GetTimeSpendInFrontOfComputer();
    }
}
</code></code></pre><p>If my colleague implemented that interface a few years back it would have looked somehow like that:</p><pre><code><code>using System;
using System.Diagnostics;

namespace ComputerTimeTracker
{
    public class ComputerTimeTracker : IComputerTimeTracker
    {
        private readonly Stopwatch _stopWatch;

        public ComputerTimeTracker()
        {
            _stopWatch = new Stopwatch();
        }

        public void StartTracking()
        {
            _stopWatch.Start();
        }

        public void StopTracking()
        {
            _stopWatch.Stop();
        }

        public TimeSpan GetTimeSpendInFrontOfComputer()
        {
            return _stopWatch.Elapsed;
        }
    }
}
</code></code></pre><p>Simple and straight-forward. The only thing this class needs to do its work is a <code>Stopwatch</code> instance.</p><blockquote><p><em><strong>The class needs an instance of </strong></em><code>Stopwatch</code><em><strong>.</strong></em></p><p><em><strong>The class is dependent on a </strong></em><code>Stopwatch</code><em><strong>.</strong></em></p><p><em><strong>The </strong></em><code>Stopwatch</code><em><strong> is a dependency of the class </strong></em><code>ComputerTimeTracker</code><em><strong>.</strong></em></p></blockquote><p>So far, so good. Now let&#8217;s just do a little modification to that code:</p><pre><code><code>using System;
using System.Diagnostics;

namespace ComputerTimeTracker
{
    public class ComputerTimeTracker : IComputerTimeTracker
    {
        private readonly Stopwatch _stopWatch;

        public ComputerTimeTracker(Stopwatch stopWatch)
        {
            _stopWatch = stopWatch;
        }

        public void StartTracking()
        {
            _stopWatch.Start();
        }

        public void StopTracking()
        {
            _stopWatch.Stop();
        }

        public TimeSpan GetTimeSpendInFrontOfComputer()
        {
            return _stopWatch.Elapsed;
        }
    }
}
</code></code></pre><p>The only thing that changed is the constructor.</p><p>Instead of <em>creating</em> the instance of <code>Stopwatch</code> inside the constructor we <em>inject</em> it into the constructor.</p><blockquote><p><em><strong>We inject the </strong></em><code>Stopwatch</code><em><strong> into the constructor.</strong></em></p><p><em><strong>We inject the dependency </strong></em><code>Stopwatch</code><em><strong> into the constructor.</strong></em></p><p><em><strong>We just did a dependency injection.</strong></em></p></blockquote><p>And I just want to make it clear: That is really all! Dependency injection means nothing more and nothing less than providing a dependency to someone who needs it instead of letting the someone create the dependency itself.</p><p>It does not matter whether you inject the dependency via the class constructor, via a property, or via a setter-method. All you do is injecting a dependency.</p><h2><strong>Inversion of Control</strong></h2><p>To quote my colleague again:</p><blockquote><p><em><strong>I think we have to discuss this. Now I need to create the </strong></em><code>Stopwatch</code><em><strong> instance before I can even create an instance of </strong></em><code>ComputerTimeTracker</code><em><strong>. That sucks. Isn&#8217;t that a code smell? Object oriented programming always praises information hiding, but now I have to know about a </strong></em><code>Stopwatch</code><em><strong>? When I create the instance inside the constructor I just have to create my </strong></em><code>ComputerTimeTracker</code><em><strong>and it will handle the rest for me. I don&#8217;t want to know the implementation details, I just want to use the class. In summary: The </strong></em><code>Stopwatch</code><em><strong> should be controlled by the </strong></em><code>ComputerTimeTracker</code><em><strong>.</strong></em></p></blockquote><p>Notice how he already used the word <em>controlled</em>. I&#8217;m just gonna think that thought a little bit further:</p><p>In the approach of my colleague we have clear <em>order of control:</em></p><blockquote><p><em><strong>The class </strong></em><code>ComputerTimeTracker</code><em><strong>is controlling the </strong></em><code>Stopwatch</code><em><strong>.</strong></em></p><p><em><strong>It&#8217;s the responsibility of the </strong></em><code>ComputerTimeTracker</code><em><strong>to control the </strong></em><code>Stopwatch</code><em><strong>.</strong></em></p></blockquote><p>Now notice what changed when looking at the approach where we injected the <code>Stopwatch</code>:</p><blockquote><p><em><strong>We, the users of </strong></em><code>ComputerTimeTracker</code><em><strong>, are controlling the </strong></em><code>Stopwatch</code><em><strong>.</strong></em></p><p><em><strong>It&#8217;s the user&#8217;s responsibility to control the </strong></em><code>Stopwatch</code><em><strong>.</strong></em></p></blockquote><p>You might have already noticed it. By injecting the dependency we inverted the order of control. We moved the responsibility to control the <code>Stopwatch</code> from the class away to the user of the class. That is inversion of control. And again: That is really all!</p><h2><strong>Loose Coupling</strong></h2><p>Now that the buzz words are de-mystified we can talk about why we might prefer the approach with dependency injection. Let's enhance our sample code a little further:</p><pre><code><code>using System;

namespace ComputerTimeTracker
{
    public interface IStopwatch
    {
        void Start();
        void Stop();
        TimeSpan Elapsed { get; }
    }

    public class ComputerTimeTracker : IComputerTimeTracker
    {
        private readonly IStopwatch _stopWatch;

        public ComputerTimeTracker(IStopwatch stopWatch)
        {
            _stopWatch = stopWatch;
        }

        public void StartTracking()
        {
            _stopWatch.Start();
        }

        public void StopTracking()
        {
            _stopWatch.Stop();
        }

        public TimeSpan GetTimeSpendInFrontOfComputer()
        {
            return _stopWatch.Elapsed;
        }
    }
}
</code></code></pre><p>All I changed is swapping the class dependency <code>Stopwatch</code> for an interface dependency <code>IStopwatch</code>. That way the class <code>ComputerTimeTracker</code>is not depending on the class <code>Stopwatch</code> of the .NET framework but loosely coupled to any instance that implements the interface <code>IStopwatch</code>. Now to our biggest benefit:</p><h2><strong>Unit tests</strong></h2><p>All dependencies we inject into a class via an interface can be <em>mocked</em>. That is super convenient. Consider the following use case:</p><ul><li><p>You start the tracking</p></li><li><p>You spend 42 hours before the computer</p></li><li><p>You stop the tracking</p></li><li><p>You check the spend time</p></li></ul><p>Writing a unit test for that use case is hard when the <code>Stopwatch</code> instance gets created inside the constructor of <code>ComputerTimeTracker</code>. You can&#8217;t really replace it. And when you can&#8217;t replace it you can&#8217;t control the <code>Stopwatch</code> . So you would have to wait real 42 hours. With dependency injection you can simply inject a mocked <code>Stopwatch</code> into the class, just for the test.</p><pre><code><code>[TestClass]
public class ComputerTimeTrackerTests
{
    [TestMethod]
    public void Spend42HoursBeforeTheComputer()
    {
        var stopwatch = new Mock&lt;IStopwatch&gt;();
        stopwatch.Setup(x =&gt; x.Elapsed).Returns(TimeSpan.FromHours(42));

        var systemUnderTest = new ComputerTimeTracker(stopwatch.Object);
        systemUnderTest.StartTracking();

        stopwatch.Verify(x =&gt; x.Start(), Times.Once);

        systemUnderTest.StopTracking();

        stopwatch.Verify(x =&gt; x.Stop(), Times.Once);

        Assert.AreEqual(TimeSpan.FromHours(42), systemUnderTest.GetTimeSpendInFrontOfComputer());
    }
}
</code></code></pre><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Conclusion</strong></h2><p>Dependency injection and inversion of control are important concepts every developer should know. They are a little hyped and often misunderstood. But if you invest some time to really dig into it you see how dumb easy they actually are.</p><p>Why are they so hyped at all? For me, it's simply because they enable me to write readable unit tests for my code. That alone sells it for me.</p><p>But there are more benefits I did not cover here: <em>Dynamic replacement</em> of dependencies or usage of an <em>IoC-Container</em>. But these are topics for a separate post&#8230;</p>]]></content:encoded></item><item><title><![CDATA[Embarrassment-Driven-Testing]]></title><description><![CDATA[A new perspective]]></description><link>https://www.cellos.blog/p/embarrassment-driven-testing</link><guid isPermaLink="false">https://www.cellos.blog/p/embarrassment-driven-testing</guid><dc:creator><![CDATA[Marcel Neumann]]></dc:creator><pubDate>Thu, 24 Jul 2025 10:37:04 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1483193722442-5422d99849bc?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzMHx8ZW1iYXJyYXNzbWVudHxlbnwwfHx8fDE3NTMzNTMzNzR8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1483193722442-5422d99849bc?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzMHx8ZW1iYXJyYXNzbWVudHxlbnwwfHx8fDE3NTMzNTMzNzR8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1483193722442-5422d99849bc?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzMHx8ZW1iYXJyYXNzbWVudHxlbnwwfHx8fDE3NTMzNTMzNzR8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1483193722442-5422d99849bc?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzMHx8ZW1iYXJyYXNzbWVudHxlbnwwfHx8fDE3NTMzNTMzNzR8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1483193722442-5422d99849bc?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzMHx8ZW1iYXJyYXNzbWVudHxlbnwwfHx8fDE3NTMzNTMzNzR8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1483193722442-5422d99849bc?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzMHx8ZW1iYXJyYXNzbWVudHxlbnwwfHx8fDE3NTMzNTMzNzR8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1483193722442-5422d99849bc?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzMHx8ZW1iYXJyYXNzbWVudHxlbnwwfHx8fDE3NTMzNTMzNzR8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="4242" height="2828" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1483193722442-5422d99849bc?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzMHx8ZW1iYXJyYXNzbWVudHxlbnwwfHx8fDE3NTMzNTMzNzR8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2828,&quot;width&quot;:4242,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;girl covering her face with both hands&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="girl covering her face with both hands" title="girl covering her face with both hands" srcset="https://images.unsplash.com/photo-1483193722442-5422d99849bc?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzMHx8ZW1iYXJyYXNzbWVudHxlbnwwfHx8fDE3NTMzNTMzNzR8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1483193722442-5422d99849bc?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzMHx8ZW1iYXJyYXNzbWVudHxlbnwwfHx8fDE3NTMzNTMzNzR8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1483193722442-5422d99849bc?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzMHx8ZW1iYXJyYXNzbWVudHxlbnwwfHx8fDE3NTMzNTMzNzR8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1483193722442-5422d99849bc?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzMHx8ZW1iYXJyYXNzbWVudHxlbnwwfHx8fDE3NTMzNTMzNzR8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="true">Caleb Woods</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><h2><strong>A new perspective</strong></h2><p>There are lots of links in my head when thinking about testing in software:</p><ul><li><p>a good test suite indicates good software quality</p></li><li><p>a good test suite is a safety net for developers</p></li><li><p>a good test suite saves time in the long run</p></li><li><p>&#8230;</p></li></ul><p>A talk from <strong><a href="https://www.linkedin.com/in/raneland/">Daniel Raniz Raneland</a></strong> just added another surprising perspective:</p><blockquote><p><em><strong>A good test suite prevents you from embarrassment.</strong></em></p></blockquote><h2><strong>The </strong><code>one thing</code></h2><p>I think this provides us with valuable insights on the minimun requirements of what to test:</p><blockquote><p><em><strong>It's the </strong></em><code>one thing</code><em><strong> your team/software is responsible for. The </strong></em><code>one thing</code><em><strong> that would be totally embarrassing if it didn't function correctly.</strong></em></p></blockquote><ul><li><p>if you develop the software for a snack vending machine, make sure that the doors open correctly.</p></li><li><p>if you develop a to-do web app, make sure that to-dos can be ticked</p></li><li><p>if you develop a mobile camera app, make sure you can actually take a picture</p></li><li><p>&#8230;</p></li></ul><p>If the Excel export of your to-do list generates an incorrect file name, users might tolerate it for a while. But if they can't tick their to-dos, they will definitely unsubscribe from your service.</p><p>Ticking to-dos is your <code>one thing</code>. Make sure to have that covered completely by the test suite. If starting from scratch, this should be one of the first E2E-tests.</p><h2><strong>Return of Investments of tests</strong></h2><p>I like this idea of embarrassment-driven-testing because it relates so well to another new link I noted from a talk by <strong><a href="https://www.linkedin.com/in/yohstern/">Johannes Stern</a></strong>.</p><blockquote><p><em><strong>Every single test needs a return of investment (</strong></em><code>ROI</code><em><strong>).</strong></em></p></blockquote><p>You would not invest your valuable money in a project that does not earn you money in the long run, would you? The same is correct for software tests.</p><p>We write unit tests because they are cheap and give us a fast response to our changes. This is an instant <code>ROI</code>!</p><p>Integration-, API-, and E2E-tests are more expensive. Depending on the quality of the existing code they can be very expensive. But no matter the price, testing your <code>one thing</code> is a necessary investment, not just to prevent embarrassment, but to save your business.</p><p>This same thought can also be true from the opposite perspective: Tests can be a bad investment. If your feature is covered by a great E2E-test, do you really need an API-test <em>and</em> integration-test <em>and</em> unit-tests? Or are they just redundant?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.cellos.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Cello's Blog is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Don't get me wrong, I am an advocate for testing and support every test that is written. But testing is about quality and not quantity. Having the <code>ROI</code> in mind, maybe it's time to delete those flaky tests that you spend so much time on debugging every week, while not giving you any confidence when they are finally green.</p>]]></content:encoded></item></channel></rss>