<?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[The Caffeinated Engineer: Letters & notes]]></title><description><![CDATA[Loose reflections, small stories, and quiet thoughts. Often addressed to fictional friends — mentors I never met, engineers from another time, or just the version of me who needed to hear it.]]></description><link>https://newsletter.caffeinatedengineer.dev/s/letters-and-notes</link><image><url>https://substackcdn.com/image/fetch/$s_!Kht0!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8cb5c8b-26a9-4724-99f5-f93dfe5f1e31_282x282.png</url><title>The Caffeinated Engineer: Letters &amp; notes</title><link>https://newsletter.caffeinatedengineer.dev/s/letters-and-notes</link></image><generator>Substack</generator><lastBuildDate>Wed, 08 Apr 2026 16:04:43 GMT</lastBuildDate><atom:link href="https://newsletter.caffeinatedengineer.dev/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Alessandro Lamberti]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[caffeinatedengineer@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[caffeinatedengineer@substack.com]]></itunes:email><itunes:name><![CDATA[Alessandro Lamberti]]></itunes:name></itunes:owner><itunes:author><![CDATA[Alessandro Lamberti]]></itunes:author><googleplay:owner><![CDATA[caffeinatedengineer@substack.com]]></googleplay:owner><googleplay:email><![CDATA[caffeinatedengineer@substack.com]]></googleplay:email><googleplay:author><![CDATA[Alessandro Lamberti]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Stop Copying - Start Building Reusable Knowledge]]></title><description><![CDATA[An argument against shallow tutorial hopping and in favor of reified personal understanding.]]></description><link>https://newsletter.caffeinatedengineer.dev/p/stop-copying-start-building-reusable</link><guid isPermaLink="false">https://newsletter.caffeinatedengineer.dev/p/stop-copying-start-building-reusable</guid><dc:creator><![CDATA[Alessandro Lamberti]]></dc:creator><pubDate>Sat, 12 Jul 2025 08:01:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!hwNI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71674237-90f8-4ff6-b00c-add599846dbb_2752x3480.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey, A.</p><p>I know the loop too well. Half a dozen Colab notebooks open, each walking you through yet another &#8220;state-of-the-art&#8221; model. A new framework tutorial bookmarked. Today it&#8217;s LangChain, last week it was BentoML. Another architecture diagram promising to &#8220;simplify production ML.&#8221; It feels like learning, but more often it&#8217;s inertia disguised as progress.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hwNI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71674237-90f8-4ff6-b00c-add599846dbb_2752x3480.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hwNI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71674237-90f8-4ff6-b00c-add599846dbb_2752x3480.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hwNI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71674237-90f8-4ff6-b00c-add599846dbb_2752x3480.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hwNI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71674237-90f8-4ff6-b00c-add599846dbb_2752x3480.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hwNI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71674237-90f8-4ff6-b00c-add599846dbb_2752x3480.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hwNI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71674237-90f8-4ff6-b00c-add599846dbb_2752x3480.jpeg" width="2752" height="3480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/71674237-90f8-4ff6-b00c-add599846dbb_2752x3480.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3480,&quot;width&quot;:2752,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1507288,&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://newsletter.caffeinatedengineer.dev/i/168067765?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F859dc116-9f5d-4c76-b1e0-5d50bc4353e7_3072x4096.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_!hwNI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71674237-90f8-4ff6-b00c-add599846dbb_2752x3480.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hwNI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71674237-90f8-4ff6-b00c-add599846dbb_2752x3480.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hwNI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71674237-90f8-4ff6-b00c-add599846dbb_2752x3480.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hwNI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71674237-90f8-4ff6-b00c-add599846dbb_2752x3480.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></p><p>Each new tab gives you a quick dopamine hit. A clean example, a pretrained model, an end-to-end pipeline that runs &#8212; until it doesn&#8217;t. Until you need to adapt it. Until the shape of your real-world problem no longer fits the neat assumptions of the demo.</p><p>That&#8217;s when it becomes clear: you didn&#8217;t learn the system. You borrowed it. You replicated someone else&#8217;s solution without internalizing the tradeoffs, the context, or the constraints it was designed for.</p><p>The truth is: copying from tutorials is not the same as learning. At best, you&#8217;re borrowing someone else&#8217;s context. At worst, you&#8217;re training yourself to assemble systems you don&#8217;t understand.</p><p>Real knowledge &#8212; the kind that stays with you and grows over time &#8212; doesn&#8217;t come from passively following along. It comes from building, breaking, debugging, and asking hard questions. From getting stuck and learning why. That&#8217;s what I mean by reusable knowledge: insight you&#8217;ve earned through friction, not just absorbed through repetition.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9SUM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea969365-d631-4052-9a8a-79b85dfcb338_3072x4096.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9SUM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea969365-d631-4052-9a8a-79b85dfcb338_3072x4096.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9SUM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea969365-d631-4052-9a8a-79b85dfcb338_3072x4096.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9SUM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea969365-d631-4052-9a8a-79b85dfcb338_3072x4096.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9SUM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea969365-d631-4052-9a8a-79b85dfcb338_3072x4096.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9SUM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea969365-d631-4052-9a8a-79b85dfcb338_3072x4096.jpeg" width="1456" height="1941" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ea969365-d631-4052-9a8a-79b85dfcb338_3072x4096.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;:2788460,&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://newsletter.caffeinatedengineer.dev/i/168067765?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea969365-d631-4052-9a8a-79b85dfcb338_3072x4096.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_!9SUM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea969365-d631-4052-9a8a-79b85dfcb338_3072x4096.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9SUM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea969365-d631-4052-9a8a-79b85dfcb338_3072x4096.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9SUM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea969365-d631-4052-9a8a-79b85dfcb338_3072x4096.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9SUM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea969365-d631-4052-9a8a-79b85dfcb338_3072x4096.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>A while ago, I was working on a vision pipeline for an edge device with limited memory. I followed the usual path: search the docs, skim some blog posts, run a few example scripts. The pipeline worked &#8212; barely &#8212; but I couldn&#8217;t explain how. It felt fragile. Every time it failed, I had to start over, guessing at causes.</p><p>So I paused. Stripped things down to basics. Measured memory usage, traced latency, re-implemented small pieces. Slowly, the whole system became clear. I stopped depending on tutorials because I had built a mental model that made sense &#8212; one I could use again in other projects. That&#8217;s the point. Knowledge that sticks isn&#8217;t tied to a single problem. It becomes part of how you think.</p><p>Reusable knowledge has three key traits:</p><ul><li><p>It helps you understand systems, not just tools.</p></li><li><p>It applies across projects and domains.</p></li><li><p>It gives you confidence in the face of complexity.</p></li></ul><p>Copying teaches you none of that. It&#8217;s like learning to cook by watching someone else stir the pot. You might know the steps, but not the reasons behind them.</p><p>What&#8217;s worse: tutorials can give a false sense of competence. You feel like you&#8217;ve learned something, but when it&#8217;s time to build from scratch, the gaps show up fast. And that&#8217;s the real cost: time spent re-learning instead of building forward.</p><p>So what should you do instead?</p><p>Go deeper, not wider. Pick one problem and work through it until you really understand what&#8217;s going on. Write things down. Break them apart and rebuild. Explain what you learned, even just to yourself. If you still need a tutorial, use it as a reference, not a guide.</p><p>Learning isn&#8217;t about covering more ground. It&#8217;s about building stronger foundations.<br>You&#8217;ll get there. You already did.</p><p>&#8212;Yours, a few years down the road.<br>The version of you that finally stopped copying, and started building for real.</p><div><hr></div>]]></content:encoded></item></channel></rss>