<?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[Icy Iterations]]></title><description><![CDATA[From my cozy office in Norway’s snowy mountains, I build opinionated dev tools that help Apple developers ship smoothly, from first commit to final release.]]></description><link>https://www.icyiterations.com</link><image><url>https://substackcdn.com/image/fetch/$s_!K4i8!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65733334-127d-4195-90ec-de402e25e539_1280x1280.png</url><title>Icy Iterations</title><link>https://www.icyiterations.com</link></image><generator>Substack</generator><lastBuildDate>Sun, 17 May 2026 08:18:07 GMT</lastBuildDate><atom:link href="https://www.icyiterations.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Steffen Finsland]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[steffenfinsland@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[steffenfinsland@substack.com]]></itunes:email><itunes:name><![CDATA[Steffen Finsland]]></itunes:name></itunes:owner><itunes:author><![CDATA[Steffen Finsland]]></itunes:author><googleplay:owner><![CDATA[steffenfinsland@substack.com]]></googleplay:owner><googleplay:email><![CDATA[steffenfinsland@substack.com]]></googleplay:email><googleplay:author><![CDATA[Steffen Finsland]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[If your release notes say “Bug fixes and minor improvements,” you’re doing it wrong.]]></title><description><![CDATA[The right release notes can boost morale, surface hidden wins, and make your product look alive. Here&#8217;s proof.]]></description><link>https://www.icyiterations.com/p/youre-doing-releasenotes-wrong</link><guid isPermaLink="false">https://www.icyiterations.com/p/youre-doing-releasenotes-wrong</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Sat, 09 Aug 2025 15:09:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!teOD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408ed114-9568-4a11-9a50-1f3e6c53dc65_2688x1792.heic" 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_!teOD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408ed114-9568-4a11-9a50-1f3e6c53dc65_2688x1792.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!teOD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408ed114-9568-4a11-9a50-1f3e6c53dc65_2688x1792.heic 424w, https://substackcdn.com/image/fetch/$s_!teOD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408ed114-9568-4a11-9a50-1f3e6c53dc65_2688x1792.heic 848w, https://substackcdn.com/image/fetch/$s_!teOD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408ed114-9568-4a11-9a50-1f3e6c53dc65_2688x1792.heic 1272w, https://substackcdn.com/image/fetch/$s_!teOD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408ed114-9568-4a11-9a50-1f3e6c53dc65_2688x1792.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!teOD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408ed114-9568-4a11-9a50-1f3e6c53dc65_2688x1792.heic" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/408ed114-9568-4a11-9a50-1f3e6c53dc65_2688x1792.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:642200,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.icyiterations.com/i/170464375?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408ed114-9568-4a11-9a50-1f3e6c53dc65_2688x1792.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!teOD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408ed114-9568-4a11-9a50-1f3e6c53dc65_2688x1792.heic 424w, https://substackcdn.com/image/fetch/$s_!teOD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408ed114-9568-4a11-9a50-1f3e6c53dc65_2688x1792.heic 848w, https://substackcdn.com/image/fetch/$s_!teOD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408ed114-9568-4a11-9a50-1f3e6c53dc65_2688x1792.heic 1272w, https://substackcdn.com/image/fetch/$s_!teOD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F408ed114-9568-4a11-9a50-1f3e6c53dc65_2688x1792.heic 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>The stand-up meeting was a sea of tired but triumphant faces. We&#8217;d done it. The last critical bugs squashed, the features merged, and the build was green. That beautiful, rare moment of calm before a release.</p><p>Then, the project manager cleared his throat. "<em>Great work, everyone. Just one last thing... who's on release notes?</em>"</p><p>Silence. I swear I saw one of our most senior developers pretend his connection froze.</p><p>It was housework nobody wanted to do. Like being asked to write documentation for code you didn't write. I wish I'd known sooner how valuable release notes can be, but I didn't. Not then.</p><p>For years, I treated release notes like a chore. A mandatory text field Apple forced me to fill. I&#8217;d cobble together a few lines from commit messages: &#8220;<em>Fixed a bug,</em>&#8221; &#8220;<em>Improved performance</em>&#8221;, and hit submit, convinced no one read them, anyway. In the age of silent, automatic updates, who even looks at the "<em>What's New</em>" field?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!12pl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4077a25-8284-4c62-a7e6-ea5e292cf3bc_1206x2238.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!12pl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4077a25-8284-4c62-a7e6-ea5e292cf3bc_1206x2238.heic 424w, https://substackcdn.com/image/fetch/$s_!12pl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4077a25-8284-4c62-a7e6-ea5e292cf3bc_1206x2238.heic 848w, https://substackcdn.com/image/fetch/$s_!12pl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4077a25-8284-4c62-a7e6-ea5e292cf3bc_1206x2238.heic 1272w, https://substackcdn.com/image/fetch/$s_!12pl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4077a25-8284-4c62-a7e6-ea5e292cf3bc_1206x2238.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!12pl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4077a25-8284-4c62-a7e6-ea5e292cf3bc_1206x2238.heic" width="1206" height="2238" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4077a25-8284-4c62-a7e6-ea5e292cf3bc_1206x2238.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2238,&quot;width&quot;:1206,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:126629,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.icyiterations.com/i/170464375?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4077a25-8284-4c62-a7e6-ea5e292cf3bc_1206x2238.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!12pl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4077a25-8284-4c62-a7e6-ea5e292cf3bc_1206x2238.heic 424w, https://substackcdn.com/image/fetch/$s_!12pl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4077a25-8284-4c62-a7e6-ea5e292cf3bc_1206x2238.heic 848w, https://substackcdn.com/image/fetch/$s_!12pl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4077a25-8284-4c62-a7e6-ea5e292cf3bc_1206x2238.heic 1272w, https://substackcdn.com/image/fetch/$s_!12pl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4077a25-8284-4c62-a7e6-ea5e292cf3bc_1206x2238.heic 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><figcaption class="image-caption">So much to be exited about!</figcaption></figure></div><p>Recently, I was helping out on a project, and just because I had the opportunity, I ran the repo through my release note generator, to analyze and generate notes for their latest version. The discovery was illuminating: not only did it reveal the latest new features with surprising clarity, but it also highlighted the many other unrelated changes happening silently in the code and identified those who had been diligently working on them. It even showed me developer collaborations, and unsung heroes who quietly excelled by cleaning up and paving the way.</p><p>It hit me that release notes can be so much more than a last-minute "<em>Bug fixes and minor improvements</em>". A good changelog is a team-building artifact, disguised as paperwork.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.icyiterations.com/subscribe?"><span>Subscribe now</span></a></p><p>Although I cannot share release notes from that project, let me paint a picture using <a href="https://signal.org">Signal</a>, an open-source project I&#8217;ve previously used as an example.</p><p>The reason I keep using <strong>Signal</strong> as an example is that it's close to my heart because it's an iOS app, and obviously, because anyone can look at its source code. <a href="https://github.com/signalapp/Signal-iOS">It's on GitHub</a>!</p><p>So, let's have at it. For their <a href="https://github.com/signalapp/Signal-iOS/releases/tag/7.71.0.932">latest release</a>, version 7.71, they wrote the following:</p><blockquote><p><code>Persistence pays off, but it's even better when things work on the first try. We fixed a bug that sometimes required multiple attempts in order to send a sticker from the iOS emoji keyboard. The same fix also works for Genmoji too, so we hope you Genjoy it.</code></p></blockquote><p>That&#8217;s a surprising amount of heart infused into their <em>what&#8217;s-new</em> compared to other projects, but I suspect they&#8217;ve accomplished even more between this and the previous release. Let's dig deeper.</p><p>I cloned the Signal repository, ran version 7.71's commits through&nbsp;<a href="https://releasethenotes.com">Release The Notes!</a>, and here&#8217;s just a taste of what popped out:</p><blockquote><ul><li><p><code>Fixed Voice Message Playback Crash with AirPlay. (Pete Walters)</code></p></li><li><p><code>Restored and ensured proper swipe gesture functionality on iOS 26 devices. (Elaine, Kate)</code></p></li><li><p><code>Reduced unnecessary UI updates during backup attachment downloads. (Max Radermacher)</code></p></li><li><p><code>..and 6 more.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> &#11013; See the footnote for for the full changelog.</code></p></li></ul></blockquote><p>That&#8217;s far more than a mere emoji fix. Pete, Harry, Max, Sasha, Elaine and Kate put in a ton of work. There's even a fix for the upcoming iOS 26 in there. </p><p>Keeping chronological release notes like this builds the team's collective memory. <em>When did we add the feature flag system?</em> It's right there.</p><p>Onboarding a new teammate? Point them at the last quarter's release notes. In twenty minutes they'll know what you actually ship (not just what the roadmap promises), who to ask about what, and the recurring themes. Patterns pop, gaps show up, and improvements follow. It&#8217;s a lot better than tossing someone a 40&#8209;page crusty dusty &#8220;architecture&#8221; doc.</p><p>A good release note makes the invisible visible. Refactors, cleanups, process tooling, performance work, this is real value no one hears about unless we take care to highlight it. Not only that, but it feels good to see your name show up. It proves you're contributing, that you're part of this joint effort. It's a morale booster. Kudos to Elaine and Kate for fixing swipe gestures. Shout-out to Pete for improving translations. Recognition isn't a perk; it's fuel. Share the release notes as widely as you can, and celebrate the achievements. </p><p>Release notes aren&#8217;t a chore after the work. They&#8217;re the story of the work. When you make the invisible visible, you not only boost morale, you also show customers that this product is alive, improving, and cared for.</p><p>You shipped. Tell the story.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/youre-doing-releasenotes-wrong?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Icy Iterations! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/youre-doing-releasenotes-wrong?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.icyiterations.com/p/youre-doing-releasenotes-wrong?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><p></p><p></p><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Signal version 7.72 release notes (generated)</p><p>Overview:</p><p>This release introduces a series of significant improvements aimed at enhancing application stability, performance, localization accuracy, and user experience. Key updates include the transition to production feature flags, localization enhancements, stability fixes for group call ICE candidate handling, voice message playback, and swipe gestures on iOS 26. Additionally, the release refines the backup restore UI, modernizes push registration with async/await, optimizes download progress updates, and cleans up legacy registration code.</p><p>---</p><p>Features</p><p>Transition to Production Feature Flags</p><p>- Implemented a robust feature flag system to switch the app's build configuration from beta to production.</p><p>- Contributors: Pete Walters</p><p>- Technical Approach: Modified generated Swift files and CI build scripts to set the current build environment to production, replacing beta-specific flags. This change ensures that production features and configurations are correctly enabled, improving stability and deployment confidence.</p><p>---</p><p>Improvements</p><p>Localization Updates for Multiple Languages</p><p>- Enhanced translation files (.strings) across various languages for better localization accuracy.</p><p>- Contributors: Pete Walters</p><p>- Technical Approach: Revised and expanded translation string resources to provide more comprehensive and precise localized content, improving user experience for non-English speakers.</p><p>Simplify Backup Restore UI Flow</p><p>- Streamlined the backup restore process to be more intuitive and less confusing.</p><p>- Contributors: Harry</p><p>- Technical Approach: Removed obsolete UI elements and comments in RegistrationChooseRestoreMethodViewController.swift, replacing the local restore method with a direct remote restore trigger to simplify user interaction.</p><p>Cleanup Registration Codebase</p><p>- Reduced code clutter and potential maintenance issues.</p><p>- Contributors: Max Radermacher</p><p>- Technical Approach: Deleted unused methods and comments in registration and push token handling modules, resulting in a cleaner, more maintainable codebase.</p><p>---</p><p>Bug Fixes</p><p>Prevent ICE Candidate Crash in Group Calls</p><p>- Fixed a crash caused by ICE candidate handling during non-1:1 calls.</p><p>- Contributors: Sasha Weiss</p><p>- Technical Approach: Added guard conditions in IndividualCallService.swift to verify call type before processing ICE candidates, preventing invalid operations.</p><p>Fix Voice Message Playback Crash with AirPlay</p><p>- Ensured reliable voice message playback during AirPlay sessions.</p><p>- Contributors: Pete Walters</p><p>- Technical Approach: Adjusted attachment playback logic in AVAsset+Attachment.swift to properly handle AirPlay scenarios, preventing crashes.</p><p>Fix Swipe Actions on iOS 26</p><p>- Restored and ensured proper swipe gesture functionality on iOS 26 devices.</p><p>- Contributors: Elaine, Kate</p><p>- Technical Approach: Updated ChatListViewController.swift and related UI components to correct gesture recognition issues, restoring expected swipe behavior.</p><p>---</p><p>Performance Enhancements</p><p>Modernize Push Registration with Async/Await</p><p>- Improved reliability and code maintainability of push token registration.</p><p>- Contributors: Max Radermacher</p><p>- Technical Approach: Refactored PushRegistrationManager.swift to utilize Swift's async/await syntax, replacing promise-based code and adding timeout handling for robustness.</p><p>Optimize Download Progress Updates</p><p>- Reduced unnecessary UI updates during backup attachment downloads.</p><p>- Contributors: Max Radermacher</p><p>- Technical Approach: Modified BackupAttachmentDownloadProgress.swift to update progress indicators only once per download session, enhancing performance and UI responsiveness.</p><p>---</p><p>This release reflects our ongoing commitment to delivering a stable, efficient, and user-friendly application. We appreciate the contributions of all team members involved in these enhancements.</p><p><strong>I hope you genjoyed it!</strong></p></div></div>]]></content:encoded></item><item><title><![CDATA[Now on the Mac App Store: AI that writes your release notes]]></title><description><![CDATA[The dreaded question: &#8220;What&#8217;s new in this release?&#8221; appears just as you&#8217;re ready to launch a new version. Your mind goes completely blank, as if someone flipped a switch and turned off the lights.]]></description><link>https://www.icyiterations.com/p/now-on-the-mac-app-store-ai-that</link><guid isPermaLink="false">https://www.icyiterations.com/p/now-on-the-mac-app-store-ai-that</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Thu, 15 May 2025 09:11:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!rLWq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e8761-4e04-475d-82c3-70cc47a314d6_1200x630.heic" 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_!rLWq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e8761-4e04-475d-82c3-70cc47a314d6_1200x630.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rLWq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e8761-4e04-475d-82c3-70cc47a314d6_1200x630.heic 424w, https://substackcdn.com/image/fetch/$s_!rLWq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e8761-4e04-475d-82c3-70cc47a314d6_1200x630.heic 848w, https://substackcdn.com/image/fetch/$s_!rLWq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e8761-4e04-475d-82c3-70cc47a314d6_1200x630.heic 1272w, https://substackcdn.com/image/fetch/$s_!rLWq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e8761-4e04-475d-82c3-70cc47a314d6_1200x630.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rLWq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e8761-4e04-475d-82c3-70cc47a314d6_1200x630.heic" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d2e8761-4e04-475d-82c3-70cc47a314d6_1200x630.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:42402,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://steffenfinsland.substack.com/i/163618460?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e8761-4e04-475d-82c3-70cc47a314d6_1200x630.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rLWq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e8761-4e04-475d-82c3-70cc47a314d6_1200x630.heic 424w, https://substackcdn.com/image/fetch/$s_!rLWq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e8761-4e04-475d-82c3-70cc47a314d6_1200x630.heic 848w, https://substackcdn.com/image/fetch/$s_!rLWq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e8761-4e04-475d-82c3-70cc47a314d6_1200x630.heic 1272w, https://substackcdn.com/image/fetch/$s_!rLWq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d2e8761-4e04-475d-82c3-70cc47a314d6_1200x630.heic 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>Dreaded questions:</strong></h2><ul><li><p>&#8220;What&#8217;s new in this release?&#8221; appears just as you&#8217;re ready to launch a new version.</p></li><li><p>Your boss asks you to summarize the changes in this release.</p></li></ul><p>Your mind goes completely blank, as if someone flipped a switch and turned off the lights.</p><p>&#8203;</p><h3><strong>That pain ends today.</strong></h3><p>Having polished every feature to perfection&#8212;because I truly enjoy this stuff, I&#8217;m thrilled to announce that <a href="https://releasethenotes.com">Release The Notes!</a> is now live on the Mac App Store.</p><p>&#8203;</p><h3><strong>What it does</strong></h3><p>You point it at your git repo, and tell it what commits to look at. It meticulously reviews each commit, transforming them into easily digestible, consolidated insights. Then it writes two types of release note - one for users, and another for stakeholders. Want a more technical, witty, or more concise version? Just one more click.</p><p>&#8203;</p><h3><strong>Why you&#8217;ll care</strong></h3><ul><li><p>No more git archaeology - let AI do the digging, you keep coding.</p></li><li><p>Flip between a user-friendly tone and an executive summary&#8212;effortless.</p></li><li><p>Less expensive than one developer hour, it pays for itself on the first day.</p></li></ul><p>&#8203;</p><h3><strong>Try it free</strong></h3><p>&#8203;<a href="https://releasethenotes.com">Download Release The Notes!</a> and test the trial. No strings attached.</p><p>&#8203;</p><h3><strong>A 90-second demo</strong></h3><p>Not sold yet? Watch me turn 86 commits from the open source <em>Signal</em> app&#8217;s latest release into publish-ready release notes before my coffee gets cold.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;bb9e7b3a-e9e2-4887-9941-ef5720225e65&quot;,&quot;duration&quot;:null}"></div><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/now-on-the-mac-app-store-ai-that?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Code and Beyond &#128301;! If you liked this, then please share it with a friend.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/now-on-the-mac-app-store-ai-that?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.icyiterations.com/p/now-on-the-mac-app-store-ai-that?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><p></p>]]></content:encoded></item><item><title><![CDATA[Commit Messages Should Say Why, Not What]]></title><description><![CDATA[The ChatGPT integration seemed brilliant when I first wired it into Gitonium's commit flow in early 2023. Automatic commit messages. Like finding cheat codes for developer productivity: no more paralysis facing that blinking cursor, no more "Fixed typo" cop-outs. My new AI companion would clinically dissect each diff and I'd commit with the smug assurance of someone who'd "solved" productivity.]]></description><link>https://www.icyiterations.com/p/commit-messages-should-say-why-not</link><guid isPermaLink="false">https://www.icyiterations.com/p/commit-messages-should-say-why-not</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Wed, 26 Mar 2025 10:58:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!W2Vb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98ead2c7-8ca4-48e3-a56f-b8d47a50b630_640x480.png" 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_!W2Vb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98ead2c7-8ca4-48e3-a56f-b8d47a50b630_640x480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W2Vb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98ead2c7-8ca4-48e3-a56f-b8d47a50b630_640x480.png 424w, https://substackcdn.com/image/fetch/$s_!W2Vb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98ead2c7-8ca4-48e3-a56f-b8d47a50b630_640x480.png 848w, https://substackcdn.com/image/fetch/$s_!W2Vb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98ead2c7-8ca4-48e3-a56f-b8d47a50b630_640x480.png 1272w, https://substackcdn.com/image/fetch/$s_!W2Vb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98ead2c7-8ca4-48e3-a56f-b8d47a50b630_640x480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W2Vb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98ead2c7-8ca4-48e3-a56f-b8d47a50b630_640x480.png" width="640" height="480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/98ead2c7-8ca4-48e3-a56f-b8d47a50b630_640x480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:480,&quot;width&quot;:640,&quot;resizeWidth&quot;:640,&quot;bytes&quot;:39990,&quot;alt&quot;:&quot;Staring at a blinking cursor&quot;,&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://steffenfinsland.substack.com/i/159898188?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98ead2c7-8ca4-48e3-a56f-b8d47a50b630_640x480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Staring at a blinking cursor" title="Staring at a blinking cursor" srcset="https://substackcdn.com/image/fetch/$s_!W2Vb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98ead2c7-8ca4-48e3-a56f-b8d47a50b630_640x480.png 424w, https://substackcdn.com/image/fetch/$s_!W2Vb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98ead2c7-8ca4-48e3-a56f-b8d47a50b630_640x480.png 848w, https://substackcdn.com/image/fetch/$s_!W2Vb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98ead2c7-8ca4-48e3-a56f-b8d47a50b630_640x480.png 1272w, https://substackcdn.com/image/fetch/$s_!W2Vb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98ead2c7-8ca4-48e3-a56f-b8d47a50b630_640x480.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><h2>When My AI Hammer Hit the Wrong Nail</h2><p>The ChatGPT integration seemed brilliant when I first wired it into <a href="https://apps.apple.com/us/app/git-commit-merge-gitonium/id1603003585">Gitonium's</a> commit flow in early 2023. Automatic commit messages. Like finding cheat codes for developer productivity: no more paralysis facing that blinking cursor, no more "Fixed typo" cop-outs. My new AI companion would clinically dissect each diff - <em>"Increase login button padding from 5pt to 10pt (ViewController.swift)"</em> - and I'd commit with the smug assurance of someone who'd "solved" productivity.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!THp3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479e4ead-8574-44ff-8f27-b6c87b088c3b_707x220.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!THp3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479e4ead-8574-44ff-8f27-b6c87b088c3b_707x220.png 424w, https://substackcdn.com/image/fetch/$s_!THp3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479e4ead-8574-44ff-8f27-b6c87b088c3b_707x220.png 848w, https://substackcdn.com/image/fetch/$s_!THp3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479e4ead-8574-44ff-8f27-b6c87b088c3b_707x220.png 1272w, https://substackcdn.com/image/fetch/$s_!THp3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479e4ead-8574-44ff-8f27-b6c87b088c3b_707x220.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!THp3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479e4ead-8574-44ff-8f27-b6c87b088c3b_707x220.png" width="707" height="220" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/479e4ead-8574-44ff-8f27-b6c87b088c3b_707x220.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:220,&quot;width&quot;:707,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:81914,&quot;alt&quot;:&quot;Tweet announcing automatic commit messages&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://steffenfinsland.substack.com/i/159898188?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479e4ead-8574-44ff-8f27-b6c87b088c3b_707x220.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Tweet announcing automatic commit messages" title="Tweet announcing automatic commit messages" srcset="https://substackcdn.com/image/fetch/$s_!THp3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479e4ead-8574-44ff-8f27-b6c87b088c3b_707x220.png 424w, https://substackcdn.com/image/fetch/$s_!THp3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479e4ead-8574-44ff-8f27-b6c87b088c3b_707x220.png 848w, https://substackcdn.com/image/fetch/$s_!THp3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479e4ead-8574-44ff-8f27-b6c87b088c3b_707x220.png 1272w, https://substackcdn.com/image/fetch/$s_!THp3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479e4ead-8574-44ff-8f27-b6c87b088c3b_707x220.png 1456w" sizes="100vw"></picture><div></div></div></a><figcaption class="image-caption">Pain Free!</figcaption></figure></div><p>But pretty soon, something didn't feel right. My shiny AI companion's notes felt shallow. Accurate? Sure. Helpful? Hardly.</p><p>The thrill wore off quickly. I found myself at first tweaking the commit messages and then rewriting them entirely. Eventually, I stopped using the feature altogether. Why? Because knowing "<em>what</em>" changed wasn't enough; I needed to know "<em>why</em>."</p><h3>The Problem with "What"</h3><p>Let's face it: commit messages describing only the "<em>what</em>" rarely offer any value. I can clearly see from the diff that padding was increased from 5 to 10, but WHY was it done? It's making the view look bad in some languages (hello, Germans!), and I want to know if I can just set it back to 5 or if we need to order new translations.</p><p>Aviv Ben-Yosef from <a href="https://www.codelord.net/2015/03/16/bad-commit-messages-hall-of-shame/">Codelord.net</a> put it best:</p><blockquote><p>&#8220;These mean nothing. You may as well supply no commit message. Why did you even bother to write it?&#8221;</p></blockquote><p>Then we have the developers who throw their hands up and just type something, anything! into the commit message field. We've all been there, groaning when navigating a git history filled with gems like "fixed," "make it work!", "minor changes," or even "blargh."</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FsFP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30aa654a-3a87-4296-a246-af0a154f2dae_600x787.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FsFP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30aa654a-3a87-4296-a246-af0a154f2dae_600x787.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FsFP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30aa654a-3a87-4296-a246-af0a154f2dae_600x787.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FsFP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30aa654a-3a87-4296-a246-af0a154f2dae_600x787.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FsFP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30aa654a-3a87-4296-a246-af0a154f2dae_600x787.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FsFP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30aa654a-3a87-4296-a246-af0a154f2dae_600x787.jpeg" width="300" height="393.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/30aa654a-3a87-4296-a246-af0a154f2dae_600x787.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:787,&quot;width&quot;:600,&quot;resizeWidth&quot;:300,&quot;bytes&quot;:72442,&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://steffenfinsland.substack.com/i/159898188?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30aa654a-3a87-4296-a246-af0a154f2dae_600x787.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_!FsFP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30aa654a-3a87-4296-a246-af0a154f2dae_600x787.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FsFP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30aa654a-3a87-4296-a246-af0a154f2dae_600x787.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FsFP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30aa654a-3a87-4296-a246-af0a154f2dae_600x787.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FsFP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30aa654a-3a87-4296-a246-af0a154f2dae_600x787.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 it's more common than you think. Redditor, <a href="https://www.reddit.com/r/ProgrammerHumor/comments/3q2bq5/comment/cwbpf1u/">nelmo44</a>, shared the pain:</p><blockquote><p>&#8220;One coworker commits everything with just 'mods'.&#8221;</p></blockquote><p>Ouch.</p><h3>Why "Why" Matters</h3><p>Code evolves rapidly in software development, but the intent behind decisions is timeless. Clear commit messages give context, reasoning, and crucial details for future debugging and refactoring. They're breadcrumbs for your future self, guiding you back through the maze you built months or years ago.</p><p>Contrast <strong>"</strong><em><strong>Updated padding from 5 to 10</strong></em><strong>" </strong>with <strong>"</strong><em><strong>Increased padding to improve touch accuracy on smaller screens.</strong></em><strong>"</strong> Now, that's something you can work with.</p><p>As Dgant from Hacker News <a href="https://news.ycombinator.com/item?id=34414210">reflected</a>:</p><blockquote><p>&#8220;Commit messages might be pointless. Bad commit messages certainly are. I do a fair amount of git blaming on my own code and I find that my years-old messages do help me understand the purpose of old code.&#8221;</p></blockquote><h3>Why Good Messages Mean Better Teams</h3><p>Clear, intention-driven commit messages don't just benefit individuals; they improve team communication and collaboration immensely. We always insist code should be readable for humans, not just machines. Yet we forget this principle when it comes to commit messages.</p><p>Ever spent hours tracing a bug through commit logs and blame, only to find unhelpful notes like "<em>updated class</em>"? Yeah, me too. Or perhaps you've worked in teams where every commit must have a Jira ticket number? A great idea in theory, right? Until a developer with writer's block decides to put ONLY the ticket number. Or until you click the ticket and find: "<em>Change padding from 5 to 10</em>" &#8211; the same shallow "<em>what</em>" in a different container. Zero intent, zero context. It turns out that ticket authors can be lazy, too.</p><p>Meaningful commit messages become indispensable when debugging or refactoring old code from long-lost colleagues, regardless of what other systems you use.</p><p>As Stephen Whitmore from DEV Community <a href="https://dev.to/bartzalewski/learn-git-good-practices-3jp3#comment-15173">puts it</a>:</p><blockquote><p>&#8220;I see lots of commit messages that are like "Added x" or "Removed y". It drives me nuts because I have to investigate further. Messages that give the reasoning behind the change saves time.&#8221;</p></blockquote><h3>Writing Better Commit Messages: A Quick Guide</h3><p>Want practical steps to improve your commit messages? It's simpler than you think. Before hitting commit, quickly answer these three questions:</p><ol><li><p><strong>Why was this change necessary?</strong></p></li><li><p><strong>What issue does it resolve or address?</strong></p></li><li><p><strong>What do future developers need to understand about this change?</strong></p></li></ol><p>Think of it as "<strong>Why Before What.</strong>" A simple mental checklist that ensures your commit messages remain meaningful.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/commit-messages-should-say-why-not?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Code and Beyond &#128301; If you like this post, please share it!</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/commit-messages-should-say-why-not?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.icyiterations.com/p/commit-messages-should-say-why-not?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><h3>Looking Ahead: Leave Yourself Better Clues</h3><p>Looking back, my journey from AI-driven excitement to a deeper appreciation for clear, human-centered communication taught me a lesson. Technology can simplify many things, but human clarity and intention remain irreplaceable.</p><p>Commit messages aren't just chores. They're opportunities to document your thought process clearly. They're "<em>our aid in times of great need</em>," as Aviv Ben-Yosef wisely notes. </p><p>So next time you're about to type "fixed stuff," pause and tell future-you why it matters. Six months from now, when you're knee-deep in a critical hotfix at 10 PM, you'll finally understand: commit messages aren't documentation. They're love letters to your future self.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5rh2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6110a2b-ce7b-415d-9b52-e9f48c1f8755_1000x545.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5rh2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6110a2b-ce7b-415d-9b52-e9f48c1f8755_1000x545.png 424w, https://substackcdn.com/image/fetch/$s_!5rh2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6110a2b-ce7b-415d-9b52-e9f48c1f8755_1000x545.png 848w, https://substackcdn.com/image/fetch/$s_!5rh2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6110a2b-ce7b-415d-9b52-e9f48c1f8755_1000x545.png 1272w, https://substackcdn.com/image/fetch/$s_!5rh2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6110a2b-ce7b-415d-9b52-e9f48c1f8755_1000x545.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5rh2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6110a2b-ce7b-415d-9b52-e9f48c1f8755_1000x545.png" width="592" height="322.64" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e6110a2b-ce7b-415d-9b52-e9f48c1f8755_1000x545.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:545,&quot;width&quot;:1000,&quot;resizeWidth&quot;:592,&quot;bytes&quot;:102094,&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://steffenfinsland.substack.com/i/159898188?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6110a2b-ce7b-415d-9b52-e9f48c1f8755_1000x545.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_!5rh2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6110a2b-ce7b-415d-9b52-e9f48c1f8755_1000x545.png 424w, https://substackcdn.com/image/fetch/$s_!5rh2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6110a2b-ce7b-415d-9b52-e9f48c1f8755_1000x545.png 848w, https://substackcdn.com/image/fetch/$s_!5rh2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6110a2b-ce7b-415d-9b52-e9f48c1f8755_1000x545.png 1272w, https://substackcdn.com/image/fetch/$s_!5rh2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6110a2b-ce7b-415d-9b52-e9f48c1f8755_1000x545.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="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/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">Thanks for reading Code and Beyond &#128301;! Subscribe for free to receive new posts and support my work.</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>]]></content:encoded></item><item><title><![CDATA[New Ideas and Freak Accidents]]></title><description><![CDATA[Recently, as I wrapped up a quality-of-life update for one of my apps, I once again faced the dreaded empty "What's New" field. I was ready to submit the app update and move on, but first, this tedious busywork stood in my way.]]></description><link>https://www.icyiterations.com/p/new-ideas-and-freak-accidents</link><guid isPermaLink="false">https://www.icyiterations.com/p/new-ideas-and-freak-accidents</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Fri, 14 Mar 2025 09:07:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc56e2ae-910c-4b5e-853a-4da4de5ad39e_756x567.png" 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_!n7iA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc56e2ae-910c-4b5e-853a-4da4de5ad39e_756x567.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n7iA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc56e2ae-910c-4b5e-853a-4da4de5ad39e_756x567.png 424w, https://substackcdn.com/image/fetch/$s_!n7iA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc56e2ae-910c-4b5e-853a-4da4de5ad39e_756x567.png 848w, https://substackcdn.com/image/fetch/$s_!n7iA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc56e2ae-910c-4b5e-853a-4da4de5ad39e_756x567.png 1272w, https://substackcdn.com/image/fetch/$s_!n7iA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc56e2ae-910c-4b5e-853a-4da4de5ad39e_756x567.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!n7iA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc56e2ae-910c-4b5e-853a-4da4de5ad39e_756x567.png" width="756" height="567" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc56e2ae-910c-4b5e-853a-4da4de5ad39e_756x567.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:567,&quot;width&quot;:756,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:388186,&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://steffenfinsland.substack.com/i/159050214?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc56e2ae-910c-4b5e-853a-4da4de5ad39e_756x567.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_!n7iA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc56e2ae-910c-4b5e-853a-4da4de5ad39e_756x567.png 424w, https://substackcdn.com/image/fetch/$s_!n7iA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc56e2ae-910c-4b5e-853a-4da4de5ad39e_756x567.png 848w, https://substackcdn.com/image/fetch/$s_!n7iA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc56e2ae-910c-4b5e-853a-4da4de5ad39e_756x567.png 1272w, https://substackcdn.com/image/fetch/$s_!n7iA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc56e2ae-910c-4b5e-853a-4da4de5ad39e_756x567.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>Hello everyone! This week has been crazy. Bone-breakingly crazy. I'll get back to that. First, I have a new app to announce.</p><h2>Release notes: loved when witty and honest; hated when it's your turn to write them.</h2><p>Recently, as I wrapped up a quality-of-life update for one of my apps, I once again faced the dreaded empty "<em>What's New</em>" field. I was ready to submit the app update and move on, but first, this tedious busywork stood in my way. Every update always has more changes than I remember, and sifting through commits to recall them is painfully mechanical and dull. Inevitably, I start seeing commit messages like "<em>make it work!</em>" or "<em>blargh</em>," which means I need to dig even deeper. Turning raw commit messages and diffs into clear, engaging summaries takes too much mental energy.</p><div class="pullquote"><p>Can't I just write <em>'bug fixes and minor improvements'</em> and be done with it?</p></div><p>But despite the dread, good release notes truly matter. Personally, I love reading them because:</p><ul><li><p>I'm curious to see what competitors or my favorite apps have improved.</p></li><li><p>I want confirmation that specific bugs or frustrations have been fixed.</p></li><li><p>I'm always on the lookout for hidden gems or amusing notes from fellow developers.</p></li><li><p>(Secretly, I'm also judging how creatively or transparently others handle this thankless task.)</p></li></ul><p>There had to be an easier way, but every existing solution I found was either a hardcore command-line tool with poor usability or a heavyweight online service that needed layers of corporate approval. Frustrated, I realized I was uniquely positioned to solve this problem myself. After all, I'd already built <a href="https://apps.apple.com/us/app/git-commit-merge-gitonium/id1603003585">&#8203;an entire Git client&#8203;</a> and had everything at my fingertips: code for repository interactions, diff computations, and even AI for interpreting code changes.</p><p>After a few quick tests, it became obvious I was onto something real. And so, <strong>Release The Notes!</strong> was born.</p><p><strong>Release The Notes!</strong> is a macOS app that transforms your commits, diffs, and branches into clear, natural-language summaries. Think instant, polished release notes without lifting a finger.</p><p>An early version is already in testing, and I'll soon invite more testers. If this sounds like something you'd love, visit <a href="https://releasethenotes.com">&#8203;releasethenotes.com&#8203;</a> and sign up now!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VBNw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b56dae7-207d-4207-b0e1-fde2470539a3_878x762.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VBNw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b56dae7-207d-4207-b0e1-fde2470539a3_878x762.png 424w, https://substackcdn.com/image/fetch/$s_!VBNw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b56dae7-207d-4207-b0e1-fde2470539a3_878x762.png 848w, https://substackcdn.com/image/fetch/$s_!VBNw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b56dae7-207d-4207-b0e1-fde2470539a3_878x762.png 1272w, https://substackcdn.com/image/fetch/$s_!VBNw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b56dae7-207d-4207-b0e1-fde2470539a3_878x762.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VBNw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b56dae7-207d-4207-b0e1-fde2470539a3_878x762.png" width="420" height="364.51025056947606" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b56dae7-207d-4207-b0e1-fde2470539a3_878x762.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:762,&quot;width&quot;:878,&quot;resizeWidth&quot;:420,&quot;bytes&quot;:216936,&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://steffenfinsland.substack.com/i/159050214?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b56dae7-207d-4207-b0e1-fde2470539a3_878x762.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_!VBNw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b56dae7-207d-4207-b0e1-fde2470539a3_878x762.png 424w, https://substackcdn.com/image/fetch/$s_!VBNw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b56dae7-207d-4207-b0e1-fde2470539a3_878x762.png 848w, https://substackcdn.com/image/fetch/$s_!VBNw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b56dae7-207d-4207-b0e1-fde2470539a3_878x762.png 1272w, https://substackcdn.com/image/fetch/$s_!VBNw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b56dae7-207d-4207-b0e1-fde2470539a3_878x762.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><h2></h2><div><hr></div><h2>When It Rains, It Pours</h2><p>This week, the universe decided to redefine "<em>improbable</em>" for our family. On Monday, both of my boys managed to break their wrists. Yes, both wrists, both boys, on the exact same day. And no, they weren't even together: one was snowboarding while the other was at football practice. Seriously, what are the odds? At this point, I'm torn between buying lottery tickets or investing in extra insurance.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t7SV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a2d39d-7eeb-40e8-a6e4-50f22f79dcbf_505x372.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t7SV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a2d39d-7eeb-40e8-a6e4-50f22f79dcbf_505x372.png 424w, https://substackcdn.com/image/fetch/$s_!t7SV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a2d39d-7eeb-40e8-a6e4-50f22f79dcbf_505x372.png 848w, https://substackcdn.com/image/fetch/$s_!t7SV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a2d39d-7eeb-40e8-a6e4-50f22f79dcbf_505x372.png 1272w, https://substackcdn.com/image/fetch/$s_!t7SV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a2d39d-7eeb-40e8-a6e4-50f22f79dcbf_505x372.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t7SV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a2d39d-7eeb-40e8-a6e4-50f22f79dcbf_505x372.png" width="433" height="318.96237623762374" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/21a2d39d-7eeb-40e8-a6e4-50f22f79dcbf_505x372.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:372,&quot;width&quot;:505,&quot;resizeWidth&quot;:433,&quot;bytes&quot;:383140,&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://steffenfinsland.substack.com/i/159050214?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a2d39d-7eeb-40e8-a6e4-50f22f79dcbf_505x372.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_!t7SV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a2d39d-7eeb-40e8-a6e4-50f22f79dcbf_505x372.png 424w, https://substackcdn.com/image/fetch/$s_!t7SV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a2d39d-7eeb-40e8-a6e4-50f22f79dcbf_505x372.png 848w, https://substackcdn.com/image/fetch/$s_!t7SV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a2d39d-7eeb-40e8-a6e4-50f22f79dcbf_505x372.png 1272w, https://substackcdn.com/image/fetch/$s_!t7SV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21a2d39d-7eeb-40e8-a6e4-50f22f79dcbf_505x372.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><figcaption class="image-caption">No Cap!</figcaption></figure></div><p>Fortunately, they're both healing well, spirits intact, and thankfully pain-free.</p><p>Have a great day!</p><p>Steffen.</p>]]></content:encoded></item><item><title><![CDATA[How Clean Code Silently Corrupts Your Git History ]]></title><description><![CDATA[And How to Fix It]]></description><link>https://www.icyiterations.com/p/how-clean-code-silently-corrupts</link><guid isPermaLink="false">https://www.icyiterations.com/p/how-clean-code-silently-corrupts</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Tue, 04 Mar 2025 13:41:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Cxr3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5aacef1-f24f-45cd-b818-aad117321e72_1000x563.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_!Cxr3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5aacef1-f24f-45cd-b818-aad117321e72_1000x563.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Cxr3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5aacef1-f24f-45cd-b818-aad117321e72_1000x563.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Cxr3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5aacef1-f24f-45cd-b818-aad117321e72_1000x563.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Cxr3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5aacef1-f24f-45cd-b818-aad117321e72_1000x563.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Cxr3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5aacef1-f24f-45cd-b818-aad117321e72_1000x563.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Cxr3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5aacef1-f24f-45cd-b818-aad117321e72_1000x563.jpeg" width="1000" height="563" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b5aacef1-f24f-45cd-b818-aad117321e72_1000x563.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:563,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:100001,&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://steffenfinsland.substack.com/i/158293283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5aacef1-f24f-45cd-b818-aad117321e72_1000x563.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_!Cxr3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5aacef1-f24f-45cd-b818-aad117321e72_1000x563.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Cxr3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5aacef1-f24f-45cd-b818-aad117321e72_1000x563.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Cxr3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5aacef1-f24f-45cd-b818-aad117321e72_1000x563.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Cxr3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5aacef1-f24f-45cd-b818-aad117321e72_1000x563.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><blockquote><p><em>"I've been blamed for code I've never even seen</em>.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> "</p></blockquote><blockquote><p><em>&#8220;All I did was format the entire repo one long time ago and now I'm getting blamed for everything...&#8221;</em><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p></blockquote><p>While Git is a powerful tool, its literal nature often leads to some unintended consequences. Here's why and how to stop these things from happening to you.</p><p><strong>POV</strong>: You've chased a hard-to-catch bug for hours only to find the offender in a cryptic code block. Who wrote this? Why? When was the bug introduced? Git has just the right tool for this situation: <em>git blame</em>!</p><p>Blame is the tool that tells you who changed any part of a file. It is a great way to understand why something was changed in a piece of code.</p><h2>Whitespace Commits: The Silent History Killers</h2><p>Eager to get to the bottom of this, you look up who's to blame for that fishy code line. To your surprise, the commit message says "<em>Fixed indentation</em>," and the author is... yourself!</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7i1w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c284ac-b5ed-4149-ab47-12ab20a6614a_260x194.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7i1w!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c284ac-b5ed-4149-ab47-12ab20a6614a_260x194.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7i1w!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c284ac-b5ed-4149-ab47-12ab20a6614a_260x194.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7i1w!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c284ac-b5ed-4149-ab47-12ab20a6614a_260x194.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7i1w!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c284ac-b5ed-4149-ab47-12ab20a6614a_260x194.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7i1w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c284ac-b5ed-4149-ab47-12ab20a6614a_260x194.jpeg" width="260" height="194" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e7c284ac-b5ed-4149-ab47-12ab20a6614a_260x194.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:194,&quot;width&quot;:260,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9747,&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://steffenfinsland.substack.com/i/158293283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c284ac-b5ed-4149-ab47-12ab20a6614a_260x194.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_!7i1w!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c284ac-b5ed-4149-ab47-12ab20a6614a_260x194.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7i1w!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c284ac-b5ed-4149-ab47-12ab20a6614a_260x194.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7i1w!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c284ac-b5ed-4149-ab47-12ab20a6614a_260x194.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7i1w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c284ac-b5ed-4149-ab47-12ab20a6614a_260x194.jpeg 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>Reformatting makes it hard to find the "real" author behind a code line. Even if all you did was replace some tabs with spaces, change the indentation level of a code block, or move the braces to a separate line, as far as Git is concerned, the original author is lost to time. You now own the blame for this because you were the last person who touched it.</p><p>Whenever we make a formatting commit, we lose critical context for why code exists, making it much harder to fix or improve. The code's original intent is gradually buried under a flood of cosmetic changes.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/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">Thanks for reading Code and Beyond &#128301;! </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>Squash Merges: Erasing Authorship</h2><p>Many teams prioritize maintaining a clean and linear Git history. Unfortunately, history-altering workflows can wreak havoc on git blame. A striking case is <strong>squash merging</strong>, where you combine all the changes in a branch into a single commit before merging it into a target branch. In this scenario, the last commit touching each line might just be the big merge commit, not the original contributor.</p><blockquote><p><em>&#8220;git blame shows ME as the perpetrator of every changed line in every changed file in the squashed commit. (...) This ruins git blame!&#8221;</em><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a></p></blockquote><p>I've <a href="https://steffenfinsland.substack.com/p/why-git-rebase-is-only-for-experts">previously</a> written about developers' tendency to overvalue a clean looking commit-graph. As one redditor vividly puts it:</p><blockquote><p><em>&#8220;[squashing] makes it more difficult to pinpoint why something was changed when everything is just 1 mega commit in the git blame. (...) it serves the same exact purpose as having separate functions/methods in code versus shoving everything into main; each commit (function) is for a specific unit of work.&#8221;<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a></em></p></blockquote><p>Squashing does look clean and neat, and some projects genuinely <strong>need</strong> to do it, but it often comes at the cost of losing the "<em>story</em>" behind why changes were made. This lost context can be critical when tracking down bugs or understanding the evolution of a complex piece of code.</p><h2><strong>Refactoring's Dark Side: When Moving Code Breaks Blame</strong></h2><p>You finally decide to clean up a messy codebase: renaming variables, splitting functions into smaller files, and fixing inconsistent naming. But <em>git blame</em> isn't impressed.</p><p>After moving a critical function to a new file, blame points squarely at your refactor commit. The original author? Lost in the shuffle.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w814!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bca132-f805-449b-b5e6-19f7f8055c3a_500x500.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w814!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bca132-f805-449b-b5e6-19f7f8055c3a_500x500.webp 424w, https://substackcdn.com/image/fetch/$s_!w814!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bca132-f805-449b-b5e6-19f7f8055c3a_500x500.webp 848w, https://substackcdn.com/image/fetch/$s_!w814!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bca132-f805-449b-b5e6-19f7f8055c3a_500x500.webp 1272w, https://substackcdn.com/image/fetch/$s_!w814!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bca132-f805-449b-b5e6-19f7f8055c3a_500x500.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w814!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bca132-f805-449b-b5e6-19f7f8055c3a_500x500.webp" width="328" height="328" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0bca132-f805-449b-b5e6-19f7f8055c3a_500x500.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:500,&quot;resizeWidth&quot;:328,&quot;bytes&quot;:18992,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://steffenfinsland.substack.com/i/158293283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bca132-f805-449b-b5e6-19f7f8055c3a_500x500.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!w814!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bca132-f805-449b-b5e6-19f7f8055c3a_500x500.webp 424w, https://substackcdn.com/image/fetch/$s_!w814!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bca132-f805-449b-b5e6-19f7f8055c3a_500x500.webp 848w, https://substackcdn.com/image/fetch/$s_!w814!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bca132-f805-449b-b5e6-19f7f8055c3a_500x500.webp 1272w, https://substackcdn.com/image/fetch/$s_!w814!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0bca132-f805-449b-b5e6-19f7f8055c3a_500x500.webp 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>These disruptions aren't just technical; they affect team behavior, too.</p><h2><strong>The Blame Preservation Paradox: Why Teams Avoid Clean Code</strong></h2><p>Here's the tragic irony: <em><strong>git blame</strong></em><strong>'s flaws punish developers for doing the right thing</strong>.</p><p>A developer shared their team's unspoken rule:</p><blockquote><p><em>"No, don't fix the formatting there&#8212;everything will assign blame to you!</em><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a><em>"</em></p></blockquote><p>The result? <em>"Way too many unreadable files accumulated over time."</em></p><p>This fear isn't theoretical:</p><ul><li><p>Developers disable IDE auto-formatting to avoid "stealing" blame.</p></li><li><p>Teams delay code cleanup for years, fearing history pollution.</p></li><li><p>Engineers waste hours manually tracing changes because they can't trust blame.</p></li></ul><p>As one engineer put it:</p><blockquote><p><em>"We want clean code&#8230; but not at the cost of losing our history. So we live with the mess."</em></p></blockquote><p>Having an accurate history isn't about assigning blame to developers<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a>; it's about preserving context to facilitate debugging and collaboration. Knowing why something was done and the intention behind the change can be hugely valuable for the one doing the debugging.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4hzZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08f775a-88b7-4cce-8fe6-97f8f7da2f72_832x468.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4hzZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08f775a-88b7-4cce-8fe6-97f8f7da2f72_832x468.png 424w, https://substackcdn.com/image/fetch/$s_!4hzZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08f775a-88b7-4cce-8fe6-97f8f7da2f72_832x468.png 848w, https://substackcdn.com/image/fetch/$s_!4hzZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08f775a-88b7-4cce-8fe6-97f8f7da2f72_832x468.png 1272w, https://substackcdn.com/image/fetch/$s_!4hzZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08f775a-88b7-4cce-8fe6-97f8f7da2f72_832x468.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4hzZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08f775a-88b7-4cce-8fe6-97f8f7da2f72_832x468.png" width="832" height="468" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f08f775a-88b7-4cce-8fe6-97f8f7da2f72_832x468.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:468,&quot;width&quot;:832,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:359678,&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://steffenfinsland.substack.com/i/158293283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08f775a-88b7-4cce-8fe6-97f8f7da2f72_832x468.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_!4hzZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08f775a-88b7-4cce-8fe6-97f8f7da2f72_832x468.png 424w, https://substackcdn.com/image/fetch/$s_!4hzZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08f775a-88b7-4cce-8fe6-97f8f7da2f72_832x468.png 848w, https://substackcdn.com/image/fetch/$s_!4hzZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08f775a-88b7-4cce-8fe6-97f8f7da2f72_832x468.png 1272w, https://substackcdn.com/image/fetch/$s_!4hzZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08f775a-88b7-4cce-8fe6-97f8f7da2f72_832x468.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>So why does this keep happening? The root cause lies in how Git tracks changes at the most basic level...</p><h2>Why Git Blame Can't "Just Work"</h2><p>Git's core philosophy is simple: <em>track changes, not meaning</em>. It doesn't matter if you're fixing a critical bug or adding a comma; every edit is a "change" to be recorded.</p><p>This makes Git brilliantly flexible&#8230; and infuriatingly literal.</p><p>But this isn't laziness; it's by design. Git was built to version <em>files</em>, not parse <em>logic</em>. It can&#8217;t tell a cosmetic change from a semantic one. When you refactor code, Git sees:</p><p>- <strong>Deletions</strong>: These lines vanished from the file.</p><p>- <strong>Additions</strong>: These new lines appeared in the file.</p><p>Git has no idea you <em>moved</em> code. Similarly, when you reformat, Git only sees lines rewritten, not preserved. Imagine rewriting a sentence in a book: Git only sees that a new sentence was written, not that it's the same idea moved to a new chapter.</p><p>The takeaway? Git blame isn't broken; it's just blind to context. But with a few tricks, we can give it glasses.</p><h2><strong>Fixing Git Blame Without Sacrificing Clean Code</strong></h2><p>If Git blame can't "<strong>just work,</strong>" does that mean we're stuck with unreliable history? </p><p>Not at all. Here's how to bend Git's rules to your advantage:</p><h3>Ignore the Noise</h3><ul><li><p><strong>Use </strong><em><strong>git blame -w</strong></em>: This skips whitespace changes to avoid blaming cosmetic fixes.</p></li><li><p>Make blame skip certain commits. Here&#8217;s how:</p></li></ul><ol><li><p>Create an ignore list for the <em>noisy</em> commits (like reformatting). </p></li></ol><pre><code># .git-blame-ignore-revs
123abc  # Commit: "Style: run Prettier"
456def  # Commit: "Fix whitespace"</code></pre><ol start="2"><li><p>Make your repo read that ignore file by updating your git configuration:</p><p><code>git config blame.ignoreRevsFile .git-blame-ignore-revs</code></p></li></ol><h3><strong>Track changes</strong></h3><ul><li><p><strong>Use </strong><em><strong>git blame -M</strong></em>: This parameter attempts to detect lines that moved within the same file</p></li><li><p><strong>Use </strong><em><strong>git blame -C</strong></em>: The C parameter tells Git to search and attempt to detect lines copied or moved from other files. </p></li><li><p><strong>Combine them all</strong>: <code>git blame -w -M -C &lt;filename&gt; </code>, and set up an alias for it.</p></li><li><p><strong>Alternatively: Pickaxe searching!</strong> <code>git log -S &lt;search string&gt;</code> lets you search for any string and find where it was introduced, removed or moved. Some developers prefer pickaxing over blame. (The term <em>pickaxe</em> comes from digging around in the repo, looking for the search term.)</p></li></ul><h3><strong>Commit Smarter</strong></h3><ul><li><p><strong>Isolate formatting changes</strong>: Run auto-formatters in dedicated commits (e.g., <code>[style] Run Prettier</code>). Tag commits for easy ignoring. You could even automate your CI system to automatically add commits marked with <em>[style]</em> to the ignore-revs file.</p></li><li><p><strong>Never mix refactors with fixes</strong>: A golden rule: <em>"One PR for formatting or cleanup, another for logic changes." </em>I know, it can be hard to resist, but it&#8217;s worth it.</p></li></ul><h3><strong>Educate Your Team</strong></h3><ul><li><p>Update your onboarding docs and make everyone use the ignore revs file.</p></li><li><p>Normalize using <em>git blame -w</em>, by setting up aliases or configuring IDEs.</p></li></ul><h2><strong>The Bigger Picture: Why This Battle Matters</strong></h2><p>Accurate blame isn't about finger-pointing. It's about <strong>context</strong>. When a code line's history is preserved, you can:</p><ul><li><p>Understand <em>why</em> code was written (via commit messages).</p></li><li><p>Ask the original author questions during debugging.</p></li><li><p>Avoid reintroducing old bugs.</p></li></ul><p>As one developer pleaded:</p><blockquote><p><em>"I just want git blame to work."</em></p></blockquote><p>With these fixes, it finally can.</p><h2><strong>Clean Code and Clean History: No Compromises</strong></h2><p>Git blame's flaws have forced developers into a false choice: <em>clean code or accurate history</em>. But it doesn't have to be this way.</p><p>By isolating noise, leveraging ignore files, and adopting smarter workflows, you can:</p><ul><li><p><strong>Reformat fearlessly</strong> (no more unreadable code!).</p></li><li><p><strong>Refactor aggressively</strong> (move code without breaking blame).</p></li><li><p><strong>Blame confidently</strong> (find the <em>real</em> author in seconds).</p></li></ul><p></p><p>So go ahead: embrace the auto formatter and let your code's true history shine through!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/how-clean-code-silently-corrupts?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Code and Beyond &#128301;! Share this post with a friend.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/how-clean-code-silently-corrupts?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.icyiterations.com/p/how-clean-code-silently-corrupts?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>https://stackoverflow.com/questions/4112410/git-change-styling-whitespace-without-changing-ownership-blame</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>https://www.reddit.com/r/ProgrammerHumor/comments/1i4z1wq/comment/m7zcdzt/</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>https://www.reddit.com/r/git/comments/yw70g1/release_branches_and_git_blame/</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>https://www.reddit.com/r/ExperiencedDevs/comments/175592x/comment/k4he62a/</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>https://www.reddit.com/r/programming/comments/o8jzsd/comment/h36iihu/</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>Despite the naming implies it does. Some IDE&#8217;s, notably Xcode, have recently renamed the term &#8220;<em>Blame</em>&#8221; to &#8220;<em>Authors</em>&#8221; in their UI.</p></div></div>]]></content:encoded></item><item><title><![CDATA[The Feature That Took Years]]></title><description><![CDATA[(and One Rainy Monday) to Build]]></description><link>https://www.icyiterations.com/p/the-feature-that-took-years</link><guid isPermaLink="false">https://www.icyiterations.com/p/the-feature-that-took-years</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Thu, 30 Jan 2025 20:47:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zi02!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff58871a-2a73-4917-b2dd-d1d3ae78eb58_760x570.png" 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_!zi02!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff58871a-2a73-4917-b2dd-d1d3ae78eb58_760x570.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zi02!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff58871a-2a73-4917-b2dd-d1d3ae78eb58_760x570.png 424w, https://substackcdn.com/image/fetch/$s_!zi02!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff58871a-2a73-4917-b2dd-d1d3ae78eb58_760x570.png 848w, https://substackcdn.com/image/fetch/$s_!zi02!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff58871a-2a73-4917-b2dd-d1d3ae78eb58_760x570.png 1272w, https://substackcdn.com/image/fetch/$s_!zi02!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff58871a-2a73-4917-b2dd-d1d3ae78eb58_760x570.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zi02!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff58871a-2a73-4917-b2dd-d1d3ae78eb58_760x570.png" width="760" height="570" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ff58871a-2a73-4917-b2dd-d1d3ae78eb58_760x570.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:570,&quot;width&quot;:760,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:25795,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zi02!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff58871a-2a73-4917-b2dd-d1d3ae78eb58_760x570.png 424w, https://substackcdn.com/image/fetch/$s_!zi02!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff58871a-2a73-4917-b2dd-d1d3ae78eb58_760x570.png 848w, https://substackcdn.com/image/fetch/$s_!zi02!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff58871a-2a73-4917-b2dd-d1d3ae78eb58_760x570.png 1272w, https://substackcdn.com/image/fetch/$s_!zi02!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff58871a-2a73-4917-b2dd-d1d3ae78eb58_760x570.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>You know those features that haunt the back of your mind? The ones you want to build but can't bring yourself to start on. For me, a big one was visualizing Git's branch relationships. I'd scribbled ideas in Obsidian for <em>years</em>&#8212;algorithm sketches, dead ends, "what ifs." Every time I opened that note, it whispered: <em>Too hard. Too messy. Maybe someday.</em></p><p>Then, last Monday happened.</p><p>Rain tapped the window. Kids off to school. Coffee in hand. I had planned to tweak Chinese translations on another one of my apps&#8212;mundane, safe work. But out of nowhere, clarity struck: <em>Today's the day.</em></p><p>I flung open Mission Control, spawned a pristine desktop (no clutter! pure possibility!), and summoned Xcode, Cursor, ChatGPT, and that infamous Obsidian note. For hours, I wrestled with half-baked AI-generated algorithms. They'd pass one unit test, then slowly crumble into spaghetti as AI tried to cheat, inserting hard-coded fixes. By afternoon, I'd scrapped it all.</p><p>For hours, I'd leaned on AI to brute-force solutions&#8212;and while it helped untangle smaller knots, this problem demanded something different. Not complexity, but simplicity. Not code, but clarity.</p><p>Then, in a moment of quiet defiance, I pared everything back. Deleted the noise. Wrote just 100 lines by hand, iterating on the AI's scaffolding.</p><p>And there it was: a grid of green&#8212;tests passing. No fanfare. No fireworks. Just steady, quiet proof that years of notes and one stubborn Monday could add up to something <strong>right</strong>.</p><h2>Introducing the Update Born From That Monday</h2><h3><strong>New:</strong></h3><h4>&#9989; <strong>Git Graph Lines</strong></h4><p>Those sleek branch visualizations I'd obsessed over? They're here. Trace commit relationships effortlessly&#8212;no more mental mapmaking.</p><h4>&#9989; <strong>Git References</strong></h4><p>See "main," "origin/feat/new-thing," or tags like "v2.0" right in your commit history. Context, instantly.</p><h3><strong>Improved:</strong></h3><h4>&#10024; <strong>Redesigned Commit List</strong></h4><p>Cleaner, faster, resizable. Shape it to your workflow.</p><h4>&#10024; <strong>Enhanced Commit View</strong></h4><ul><li><p>Gravatar author pics (put faces to commits)</p></li><li><p>Smarter rename highlights, no-noise deletions</p></li><li><p>Expandable messages, change counts, intuitive indicators</p></li></ul><p>This update isn't just features&#8212;it's a testament to small steps. For years, I added notes to that Obsidian doc, unsure if they'd ever matter. Then, one Monday, they did.</p><p><strong>To anyone nurturing their own "someday" project:</strong></p><p>Keep the faith. Clear the clutter. And when the spark lands? Follow it.</p><p><a href="https://apps.apple.com/us/app/git-commit-merge-gitonium/id1603003585">Try the new Gitonium</a>. Here's to quiet persistence.&#129346;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ky3r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c622db7-d70e-4a85-b4cf-035876ef29c4.tif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ky3r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c622db7-d70e-4a85-b4cf-035876ef29c4.tif 424w, https://substackcdn.com/image/fetch/$s_!ky3r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c622db7-d70e-4a85-b4cf-035876ef29c4.tif 848w, https://substackcdn.com/image/fetch/$s_!ky3r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c622db7-d70e-4a85-b4cf-035876ef29c4.tif 1272w, https://substackcdn.com/image/fetch/$s_!ky3r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c622db7-d70e-4a85-b4cf-035876ef29c4.tif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ky3r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c622db7-d70e-4a85-b4cf-035876ef29c4.tif" width="1440" height="847" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c622db7-d70e-4a85-b4cf-035876ef29c4.tif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:847,&quot;width&quot;:1440,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4882398,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/tiff&quot;,&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_!ky3r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c622db7-d70e-4a85-b4cf-035876ef29c4.tif 424w, https://substackcdn.com/image/fetch/$s_!ky3r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c622db7-d70e-4a85-b4cf-035876ef29c4.tif 848w, https://substackcdn.com/image/fetch/$s_!ky3r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c622db7-d70e-4a85-b4cf-035876ef29c4.tif 1272w, https://substackcdn.com/image/fetch/$s_!ky3r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c622db7-d70e-4a85-b4cf-035876ef29c4.tif 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>P.S. To the Obsidian note that haunted me for years: rest easy. You've earned your retirement.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/the-feature-that-took-years?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Code and Beyond &#128301;! Please share this post with a friend.&#128156;</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/the-feature-that-took-years?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.icyiterations.com/p/the-feature-that-took-years?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Have you been having a lot of headaches lately?]]></title><description><![CDATA[Have you been having a lot of headaches lately?I've had migraines my whole life. My mom has them, and so does my grandmother.]]></description><link>https://www.icyiterations.com/p/one-at-half-price-another-free-oh</link><guid isPermaLink="false">https://www.icyiterations.com/p/one-at-half-price-another-free-oh</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Fri, 29 Nov 2024 12:51:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6wFO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed62b3a4-4496-47ed-aa3c-aebc2cbe10b1_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>In this issue:</h1><ul><li><p>Gitonium Black Friday/Cyber Monday Sale</p></li><li><p>Have You Been Having a Lot of Headaches Lately?</p></li></ul><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6wFO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed62b3a4-4496-47ed-aa3c-aebc2cbe10b1_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6wFO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed62b3a4-4496-47ed-aa3c-aebc2cbe10b1_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!6wFO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed62b3a4-4496-47ed-aa3c-aebc2cbe10b1_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!6wFO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed62b3a4-4496-47ed-aa3c-aebc2cbe10b1_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!6wFO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed62b3a4-4496-47ed-aa3c-aebc2cbe10b1_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6wFO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed62b3a4-4496-47ed-aa3c-aebc2cbe10b1_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed62b3a4-4496-47ed-aa3c-aebc2cbe10b1_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:337197,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6wFO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed62b3a4-4496-47ed-aa3c-aebc2cbe10b1_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!6wFO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed62b3a4-4496-47ed-aa3c-aebc2cbe10b1_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!6wFO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed62b3a4-4496-47ed-aa3c-aebc2cbe10b1_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!6wFO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed62b3a4-4496-47ed-aa3c-aebc2cbe10b1_1024x1024.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><h2>Did you ever struggle with interpreting a cluttered diff?</h2><p>When you've made a code change that causes indenting to change over a large part of the file, it takes some effort to understand the diff. One of the newest features I've added to Gitonium lately is a keyboard shortcut to toggle the rendering of white space in diffs on and off. If you ignore all the changes to tabs and spaces, the diff becomes much simpler. See this video:</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;3476c962-4e1e-4c47-83ee-a8b3fc6fc588&quot;,&quot;duration&quot;:null}"></div><p>Gitonium is my Git app, and it is on a Black Friday &amp; Cyber Monday Special: <a href="https://apps.apple.com/us/app/git-merge-tool-gitonium/id1603003585?mt=12">&#8203;Get Gitonium&#8203;</a> at 50% off in the Mac App Store! The offer ends on Tuesday, December 3rd.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/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">Thanks for reading Code and Beyond &#128301;! Subscribe for free to receive new posts and support my work.</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><h2>Have you been having a lot of headaches lately?</h2><p>I've had migraines my whole life. My mom has them, and so does my grandmother. Mine aren't as debilitating as others can be, but they knock me out well enough anyway. A recurring theme at home is me having another migraine and my wife saying: "It feels like you've been having a lot of them lately?" followed by me shrugging and replying, "Yeah, maybe.." but I can't remember.</p><p>I decided to start keeping track, so I downloaded a headache tracker app to help me with that. I didn't like how it was designed, and I kept forgetting to reopen the app after my attacks had ended to tell it to stop tracking. I'd open the app because I got a headache, and it would say, "Hello, you've been having a migraine for 25 days!", still counting.</p><p>Then I would try to start logging a new attack, and it would require me to fill out a ton of details:</p><ul><li><p>Which of these 19 parts of your head does it hurt in?</p></li><li><p>Is it pounding pain, throbbing pain, or pulsating pain?</p></li></ul><p>It went on and on. I'd be like, STOP, I DON'T KNOW, MY HEAD HURTS! I can't be going through a survey on my phone during a migraine attack. I don't even want to look at the phone.</p><p>I decided to make my own headache tracker app, <strong>Headaches</strong>. It integrates with Siri, so I can tell Siri my head hurts and leave it at that. If I want to add symptoms, I can add them later when I feel better. I also integrated it with Live Activities and Apple Watch, so I can tell it's tracking right on the home screen, in Dynamic Island, or on my arm. It supports App Intents and Shortcuts, so you can create automations, like having it dim your lights when an attack starts.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://apps.apple.com/us/app/migraine-tracker-headaches/id6737767002" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UIue!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7251a757-9838-48dd-a793-9c2b41000bb7_854x602.png 424w, https://substackcdn.com/image/fetch/$s_!UIue!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7251a757-9838-48dd-a793-9c2b41000bb7_854x602.png 848w, https://substackcdn.com/image/fetch/$s_!UIue!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7251a757-9838-48dd-a793-9c2b41000bb7_854x602.png 1272w, https://substackcdn.com/image/fetch/$s_!UIue!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7251a757-9838-48dd-a793-9c2b41000bb7_854x602.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UIue!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7251a757-9838-48dd-a793-9c2b41000bb7_854x602.png" width="854" height="602" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7251a757-9838-48dd-a793-9c2b41000bb7_854x602.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:602,&quot;width&quot;:854,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:358701,&quot;alt&quot;:&quot;Screenshots of Headaches app&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://apps.apple.com/us/app/migraine-tracker-headaches/id6737767002&quot;,&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="Screenshots of Headaches app" title="Screenshots of Headaches app" srcset="https://substackcdn.com/image/fetch/$s_!UIue!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7251a757-9838-48dd-a793-9c2b41000bb7_854x602.png 424w, https://substackcdn.com/image/fetch/$s_!UIue!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7251a757-9838-48dd-a793-9c2b41000bb7_854x602.png 848w, https://substackcdn.com/image/fetch/$s_!UIue!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7251a757-9838-48dd-a793-9c2b41000bb7_854x602.png 1272w, https://substackcdn.com/image/fetch/$s_!UIue!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7251a757-9838-48dd-a793-9c2b41000bb7_854x602.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><strong>Headaches</strong> is <a href="https://apps.apple.com/us/app/migraine-tracker-headaches/id6737767002">on the iOS App Store</a> now, and it's <strong>free</strong>! If you've been having a lot of headaches lately, try this app. It won't bother you, I promise. If you like it and want to help me, leave a positive review. Reviews really help.&#10084;&#65039;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://apps.apple.com/us/app/migraine-tracker-headaches/id6737767002" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ydkn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F808328bd-382f-40e1-90f2-1e9e4d3dea18_730x848.png 424w, https://substackcdn.com/image/fetch/$s_!Ydkn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F808328bd-382f-40e1-90f2-1e9e4d3dea18_730x848.png 848w, https://substackcdn.com/image/fetch/$s_!Ydkn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F808328bd-382f-40e1-90f2-1e9e4d3dea18_730x848.png 1272w, https://substackcdn.com/image/fetch/$s_!Ydkn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F808328bd-382f-40e1-90f2-1e9e4d3dea18_730x848.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ydkn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F808328bd-382f-40e1-90f2-1e9e4d3dea18_730x848.png" width="730" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/808328bd-382f-40e1-90f2-1e9e4d3dea18_730x848.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:515572,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://apps.apple.com/us/app/migraine-tracker-headaches/id6737767002&quot;,&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_!Ydkn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F808328bd-382f-40e1-90f2-1e9e4d3dea18_730x848.png 424w, https://substackcdn.com/image/fetch/$s_!Ydkn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F808328bd-382f-40e1-90f2-1e9e4d3dea18_730x848.png 848w, https://substackcdn.com/image/fetch/$s_!Ydkn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F808328bd-382f-40e1-90f2-1e9e4d3dea18_730x848.png 1272w, https://substackcdn.com/image/fetch/$s_!Ydkn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F808328bd-382f-40e1-90f2-1e9e4d3dea18_730x848.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>Have a great day!</p><p>-Steffen</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/one-at-half-price-another-free-oh?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Code and Beyond &#128301;! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/one-at-half-price-another-free-oh?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.icyiterations.com/p/one-at-half-price-another-free-oh?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[How to Write a Good Ticket (and Stay Sane Doing It)]]></title><description><![CDATA[Trying to fix bugs without enough context is like searching for a contact lens at a Metallica concert&#8212;an exercise in futility.]]></description><link>https://www.icyiterations.com/p/how-to-create-good-jira-tickets</link><guid isPermaLink="false">https://www.icyiterations.com/p/how-to-create-good-jira-tickets</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Sat, 05 Oct 2024 06:16:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Iv0Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6c6b7a-d223-44fc-a052-ec8a1e6f8c60_703x515.webp" 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_!Iv0Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6c6b7a-d223-44fc-a052-ec8a1e6f8c60_703x515.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Iv0Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6c6b7a-d223-44fc-a052-ec8a1e6f8c60_703x515.webp 424w, https://substackcdn.com/image/fetch/$s_!Iv0Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6c6b7a-d223-44fc-a052-ec8a1e6f8c60_703x515.webp 848w, https://substackcdn.com/image/fetch/$s_!Iv0Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6c6b7a-d223-44fc-a052-ec8a1e6f8c60_703x515.webp 1272w, https://substackcdn.com/image/fetch/$s_!Iv0Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6c6b7a-d223-44fc-a052-ec8a1e6f8c60_703x515.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Iv0Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6c6b7a-d223-44fc-a052-ec8a1e6f8c60_703x515.webp" width="703" height="515" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c6c6b7a-d223-44fc-a052-ec8a1e6f8c60_703x515.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:515,&quot;width&quot;:703,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:36272,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&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="" srcset="https://substackcdn.com/image/fetch/$s_!Iv0Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6c6b7a-d223-44fc-a052-ec8a1e6f8c60_703x515.webp 424w, https://substackcdn.com/image/fetch/$s_!Iv0Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6c6b7a-d223-44fc-a052-ec8a1e6f8c60_703x515.webp 848w, https://substackcdn.com/image/fetch/$s_!Iv0Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6c6b7a-d223-44fc-a052-ec8a1e6f8c60_703x515.webp 1272w, https://substackcdn.com/image/fetch/$s_!Iv0Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6c6b7a-d223-44fc-a052-ec8a1e6f8c60_703x515.webp 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">caption...</figcaption></figure></div><h2>Chasing Ghosts</h2><p>I recently encountered a crash in one of my apps that I couldn't reproduce&#8212;it works perfectly on my machine, as we developers like to say.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zetR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57313fb6-c996-4b95-bff4-d23c17ab85d4_489x313.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zetR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57313fb6-c996-4b95-bff4-d23c17ab85d4_489x313.png 424w, https://substackcdn.com/image/fetch/$s_!zetR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57313fb6-c996-4b95-bff4-d23c17ab85d4_489x313.png 848w, https://substackcdn.com/image/fetch/$s_!zetR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57313fb6-c996-4b95-bff4-d23c17ab85d4_489x313.png 1272w, https://substackcdn.com/image/fetch/$s_!zetR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57313fb6-c996-4b95-bff4-d23c17ab85d4_489x313.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zetR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57313fb6-c996-4b95-bff4-d23c17ab85d4_489x313.png" width="489" height="313" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/57313fb6-c996-4b95-bff4-d23c17ab85d4_489x313.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:313,&quot;width&quot;:489,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:94538,&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;: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_!zetR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57313fb6-c996-4b95-bff4-d23c17ab85d4_489x313.png 424w, https://substackcdn.com/image/fetch/$s_!zetR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57313fb6-c996-4b95-bff4-d23c17ab85d4_489x313.png 848w, https://substackcdn.com/image/fetch/$s_!zetR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57313fb6-c996-4b95-bff4-d23c17ab85d4_489x313.png 1272w, https://substackcdn.com/image/fetch/$s_!zetR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57313fb6-c996-4b95-bff4-d23c17ab85d4_489x313.png 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>Trying to fix bugs without enough context is like searching for a contact lens at a Metallica concert&#8212;an exercise in futility. Before shelving the investigation, I documented the issue as a bug ticket for my future self, including as much information as possible. This frustrating experience got me thinking about how we handle defects and the tools we use to manage them.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://x.com/JacobyBrandon/status/1841837965586165767" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pFP7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1089bf4d-f793-4dc0-acac-7fe3f21c4517_631x235.png 424w, https://substackcdn.com/image/fetch/$s_!pFP7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1089bf4d-f793-4dc0-acac-7fe3f21c4517_631x235.png 848w, https://substackcdn.com/image/fetch/$s_!pFP7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1089bf4d-f793-4dc0-acac-7fe3f21c4517_631x235.png 1272w, https://substackcdn.com/image/fetch/$s_!pFP7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1089bf4d-f793-4dc0-acac-7fe3f21c4517_631x235.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pFP7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1089bf4d-f793-4dc0-acac-7fe3f21c4517_631x235.png" width="631" height="235" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1089bf4d-f793-4dc0-acac-7fe3f21c4517_631x235.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:235,&quot;width&quot;:631,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:141574,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://x.com/JacobyBrandon/status/1841837965586165767&quot;,&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_!pFP7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1089bf4d-f793-4dc0-acac-7fe3f21c4517_631x235.png 424w, https://substackcdn.com/image/fetch/$s_!pFP7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1089bf4d-f793-4dc0-acac-7fe3f21c4517_631x235.png 848w, https://substackcdn.com/image/fetch/$s_!pFP7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1089bf4d-f793-4dc0-acac-7fe3f21c4517_631x235.png 1272w, https://substackcdn.com/image/fetch/$s_!pFP7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1089bf4d-f793-4dc0-acac-7fe3f21c4517_631x235.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>Last night, I saw <a href="https://x.com/JacobyBrandon/status/1841837965586165767">this tweet</a> mentioning an ad for Atlassian, saying, "Happy teams start with Jira," and it made me smile. I've never liked Jira. The tweet made me think about this blog, "<a href="https://ifuckinghatejira.com/">I F***ing Hate Jira</a>" dot com, which is both hilarious and sad at the same time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://ifuckinghatejira.com/45/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZYaa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f4158-1d13-49b7-8f58-2fd083b0b8da_746x348.png 424w, https://substackcdn.com/image/fetch/$s_!ZYaa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f4158-1d13-49b7-8f58-2fd083b0b8da_746x348.png 848w, https://substackcdn.com/image/fetch/$s_!ZYaa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f4158-1d13-49b7-8f58-2fd083b0b8da_746x348.png 1272w, https://substackcdn.com/image/fetch/$s_!ZYaa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f4158-1d13-49b7-8f58-2fd083b0b8da_746x348.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZYaa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f4158-1d13-49b7-8f58-2fd083b0b8da_746x348.png" width="746" height="348" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a85f4158-1d13-49b7-8f58-2fd083b0b8da_746x348.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:348,&quot;width&quot;:746,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:174117,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://ifuckinghatejira.com/45/&quot;,&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_!ZYaa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f4158-1d13-49b7-8f58-2fd083b0b8da_746x348.png 424w, https://substackcdn.com/image/fetch/$s_!ZYaa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f4158-1d13-49b7-8f58-2fd083b0b8da_746x348.png 848w, https://substackcdn.com/image/fetch/$s_!ZYaa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f4158-1d13-49b7-8f58-2fd083b0b8da_746x348.png 1272w, https://substackcdn.com/image/fetch/$s_!ZYaa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f4158-1d13-49b7-8f58-2fd083b0b8da_746x348.png 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>How did Jira become so bad?</p><h2>Why Developers Hate Jira (and Other Issue Trackers)</h2><p>Issue trackers, by nature, focus on problems&#8212;bugs, tasks we haven't completed yet, that aren't good enough, or that aren't working at all. When you close a task, another one pops up.</p><p>Sometimes, seeing a bug in an app from a major player like Apple feels oddly reassuring. It reminds me that we are all human and everyone can make mistakes. It makes my own struggles feel less daunting.</p><p>Working on such a never-ending backlog understandably leads to a constant feeling of inadequacy. Even when you're competently closing issues, there's always one more waiting for you.</p><p>I worked on a successful and popular app for many years but struggled to appreciate it. My day began and ended with the task list in Jira. The constant stream of problems, bugs, and unresolved issues overshadowed my achievements. It was hard to see past the flaws&#8212;I saw nothing but bugs, bugs, bugs.</p><p>I've come to realize that many developers experience this tunnel vision. Are we all just ticket-closing automatons? When we fixate solely on problems, we lose sight of all the good things we've made. This constant problem-focused mindset keeps us from appreciating our achievements and hinders our ability to see the broader impact of our efforts. Eventually, this can contribute to burnout, as the joy and satisfaction in our work fade away.</p><p>It would help if we learned to celebrate our wins more. Tools like Jira should do a much better job of highlighting what we've achieved. Did you ever see an issue tracker system say, "Wow, look how much you've accomplished!"? It's more like, "<em>Okay, you finished that? Here's the next problem</em>."</p><p>Allegedly, Grace Hopper once said, "<em>A bug report's title is the first impression. Make it count.</em>" <a href="https://www.reddit.com/r/iiiiiiitttttttttttt/comments/13dnblv/giving_my_jira_tickets_clickbait_titles_just_to/">This Redditor</a> has the right idea:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.reddit.com/r/iiiiiiitttttttttttt/comments/13dnblv/giving_my_jira_tickets_clickbait_titles_just_to/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_95R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25d34198-aa93-4ad3-940b-4535f6bb4bf3_895x594.png 424w, https://substackcdn.com/image/fetch/$s_!_95R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25d34198-aa93-4ad3-940b-4535f6bb4bf3_895x594.png 848w, https://substackcdn.com/image/fetch/$s_!_95R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25d34198-aa93-4ad3-940b-4535f6bb4bf3_895x594.png 1272w, https://substackcdn.com/image/fetch/$s_!_95R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25d34198-aa93-4ad3-940b-4535f6bb4bf3_895x594.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_95R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25d34198-aa93-4ad3-940b-4535f6bb4bf3_895x594.png" width="895" height="594" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/25d34198-aa93-4ad3-940b-4535f6bb4bf3_895x594.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:594,&quot;width&quot;:895,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:272351,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.reddit.com/r/iiiiiiitttttttttttt/comments/13dnblv/giving_my_jira_tickets_clickbait_titles_just_to/&quot;,&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_!_95R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25d34198-aa93-4ad3-940b-4535f6bb4bf3_895x594.png 424w, https://substackcdn.com/image/fetch/$s_!_95R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25d34198-aa93-4ad3-940b-4535f6bb4bf3_895x594.png 848w, https://substackcdn.com/image/fetch/$s_!_95R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25d34198-aa93-4ad3-940b-4535f6bb4bf3_895x594.png 1272w, https://substackcdn.com/image/fetch/$s_!_95R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25d34198-aa93-4ad3-940b-4535f6bb4bf3_895x594.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><figcaption class="image-caption">10 screenshots that PROVE Mrs. Wright's laptop is HAUNTED (you won't BELIEVE #8)</figcaption></figure></div><h2>Finding the Positives: The Role of a Good Ticket</h2><p>If you can understand the problem well, you won't have to always feel like you're in firefighter mode. Sometimes, the ticket says something like "<em>Feature X isn't working</em>," but it doesn't tell you how it's not working, why it's a problem, or what to do to reproduce it. You end up spending more time investigating than actually solving the problem.</p><p>The quality of the ticket you're working on can be the difference between having a productive day or feeling like you're expected to solve Rubik's cubes in the dark.</p><h2>What Makes a Good Ticket?</h2><ul><li><p><strong>A clear title:</strong> It should grab attention without the need for clickbait.</p></li><li><p><strong>Steps to reproduce</strong>: Detail everything you did that led up to the problem so that someone can follow the steps and get there.</p></li><li><p><strong>Expected behavior:</strong> What did you expect to happen after performing the last step?</p></li><li><p><strong>Actual behavior:</strong> What happened instead?</p></li><li><p><strong>Context:</strong> Does it only happen at a special time or place or when working with particular content? Did anything else happen at the same time?</p></li><li><p><strong>Environment:</strong> What device do you use, and what platform? What are your language and locale settings? What was the version of the software with the problem? Do you have a username? Do you have screenshots, recordings, or logs of it happening?</p></li><li><p><strong>No assumptions</strong>: Don't jump ahead of yourself by assuming or suggesting what you think the problem might be. You may be wrong, and you may send the person trying to fix it on a wild goose chase.</p></li><li><p><strong>Remain neutral:</strong> Don't frame it negatively, like "it happened again" or "still doesn't work." Explain in detail what happened as best you can, and leave it at that.</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_!UjLL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25fc412-6f69-4295-82d8-b9c6c1690b7a_827x686.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UjLL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25fc412-6f69-4295-82d8-b9c6c1690b7a_827x686.png 424w, https://substackcdn.com/image/fetch/$s_!UjLL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25fc412-6f69-4295-82d8-b9c6c1690b7a_827x686.png 848w, https://substackcdn.com/image/fetch/$s_!UjLL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25fc412-6f69-4295-82d8-b9c6c1690b7a_827x686.png 1272w, https://substackcdn.com/image/fetch/$s_!UjLL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25fc412-6f69-4295-82d8-b9c6c1690b7a_827x686.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UjLL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25fc412-6f69-4295-82d8-b9c6c1690b7a_827x686.png" width="827" height="686" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b25fc412-6f69-4295-82d8-b9c6c1690b7a_827x686.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:686,&quot;width&quot;:827,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:228909,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UjLL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25fc412-6f69-4295-82d8-b9c6c1690b7a_827x686.png 424w, https://substackcdn.com/image/fetch/$s_!UjLL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25fc412-6f69-4295-82d8-b9c6c1690b7a_827x686.png 848w, https://substackcdn.com/image/fetch/$s_!UjLL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25fc412-6f69-4295-82d8-b9c6c1690b7a_827x686.png 1272w, https://substackcdn.com/image/fetch/$s_!UjLL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25fc412-6f69-4295-82d8-b9c6c1690b7a_827x686.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><figcaption class="image-caption">A well formed ticket.</figcaption></figure></div><h2>"As an X, I Want Y" and Other Ticket Templates</h2><p>Developers often mock the <em>User Story</em> template because of its rigid language and roots in Agile methodology. The User Story helps communicate <em>business value</em> between <em>stakeholders</em>. It also helps in prioritization and explaining why a new feature is necessary. Stories aren't made for bugs or technical tasks, but you'll often see the format creep into all kinds of tickets by accident.</p><blockquote><ul><li><p><em>As a user, I want the app to work properly, so I can use it.</em></p></li></ul><ul><li><p><em>As a database admin, I want to increase the query performance by indexing tables, so that the system runs faster.</em></p></li></ul></blockquote><p>Using this template for technical tasks can make tickets sound condescending and detached from reality. Many adopt it, thinking it's standard procedure.</p><p>A third type of ticket is the <em>Spike</em>. Use this type when the task is to investigate something. It differs from the bug type because it doesn't have steps or expected behavior. It should have a list of questions that need answering and a timebox field where we specify how much time we're willing to spend on this investigation.</p><h2>Other reasons to loathe Jira</h2><p>Of course, there are also many other technical and user experience reasons to despise Jira, but you usually don't have a choice if you're a Jira user. In that case, <a href="https://ifuckinghatejira.com/22/">venting your frustrations</a> might be the best thing you can do.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://ifuckinghatejira.com/22/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wOdY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d4fdac-c1d8-4732-827d-f7624e15aa6a_716x337.png 424w, https://substackcdn.com/image/fetch/$s_!wOdY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d4fdac-c1d8-4732-827d-f7624e15aa6a_716x337.png 848w, https://substackcdn.com/image/fetch/$s_!wOdY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d4fdac-c1d8-4732-827d-f7624e15aa6a_716x337.png 1272w, https://substackcdn.com/image/fetch/$s_!wOdY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d4fdac-c1d8-4732-827d-f7624e15aa6a_716x337.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wOdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d4fdac-c1d8-4732-827d-f7624e15aa6a_716x337.png" width="716" height="337" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29d4fdac-c1d8-4732-827d-f7624e15aa6a_716x337.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:337,&quot;width&quot;:716,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:165205,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://ifuckinghatejira.com/22/&quot;,&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_!wOdY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d4fdac-c1d8-4732-827d-f7624e15aa6a_716x337.png 424w, https://substackcdn.com/image/fetch/$s_!wOdY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d4fdac-c1d8-4732-827d-f7624e15aa6a_716x337.png 848w, https://substackcdn.com/image/fetch/$s_!wOdY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d4fdac-c1d8-4732-827d-f7624e15aa6a_716x337.png 1272w, https://substackcdn.com/image/fetch/$s_!wOdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29d4fdac-c1d8-4732-827d-f7624e15aa6a_716x337.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><h2>Make Jira Work for You, Not Against You</h2><p>In the end, a ticket can either make or break your day. By investing time and effort into writing clear, complete tickets, you can streamline your work and improve your team's day. Next time you're logging an issue or a new feature, remember the power of a well-crafted ticket&#8212;it can turn frustration into productivity and help create a more positive work environment. Let's take control of our tools and make them work <em>for</em> us, not against us. If we all commit to this, perhaps our teams could stay happy, like in that "<em>Happy Teams</em>" ad.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.icyiterations.com/subscribe?"><span>Subscribe now</span></a></p><p></p><div><hr></div><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xWwm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dda8670-4a9c-4204-993e-56872432ab82_779x581.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xWwm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dda8670-4a9c-4204-993e-56872432ab82_779x581.png 424w, https://substackcdn.com/image/fetch/$s_!xWwm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dda8670-4a9c-4204-993e-56872432ab82_779x581.png 848w, https://substackcdn.com/image/fetch/$s_!xWwm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dda8670-4a9c-4204-993e-56872432ab82_779x581.png 1272w, https://substackcdn.com/image/fetch/$s_!xWwm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dda8670-4a9c-4204-993e-56872432ab82_779x581.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xWwm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dda8670-4a9c-4204-993e-56872432ab82_779x581.png" width="779" height="581" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8dda8670-4a9c-4204-993e-56872432ab82_779x581.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:581,&quot;width&quot;:779,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:350403,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xWwm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dda8670-4a9c-4204-993e-56872432ab82_779x581.png 424w, https://substackcdn.com/image/fetch/$s_!xWwm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dda8670-4a9c-4204-993e-56872432ab82_779x581.png 848w, https://substackcdn.com/image/fetch/$s_!xWwm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dda8670-4a9c-4204-993e-56872432ab82_779x581.png 1272w, https://substackcdn.com/image/fetch/$s_!xWwm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8dda8670-4a9c-4204-993e-56872432ab82_779x581.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>Meet the Source Code Analyzer</h1><p>When I wrote <a href="https://steffenfinsland.substack.com/p/more-fun-with-ollama">my Ollama post</a> a week ago, I promised to polish up and give away my File Analyzer Quick Action for free. We developers like to think of ourselves as intelligent, capable individuals. Estimation should be easy, right?</p><p>In software development, there's something called the <em>ninety-ninety rule</em>. It refers to the tendency for projects to become more complex and time-consuming as they near completion. The initial phase goes quickly, but the final stages&#8212;such as optimizing, debugging, and handling edge cases&#8212;often take much longer than anticipated, sometimes doubling the expected effort.</p><p>I'm proud to say I am no exception to this rule, but be that as it may. Perhaps I should write about estimation next? In any case, I've finished the Analyzer!</p><h2><strong>You Feel Exhausted by Tickets</strong></h2><p>You don't understand the code you're assigned to fix. Coding under stress is a real passion killer. Your entire days are meetings scattered throughout, and you have more tickets to close.</p><p>Programming is a highly creative skill, and you know how good it feels to be productive, but you're left scrambling for time to get the work done.</p><p>What if you could drop in quickly and resolve the issue? What if you could understand what this code does without reading through every detail? You could skip right to the deep thinking, spending that mental bandwidth on actual problem-solving&#9188;today.</p><p>Coding tickets really drags after a while, but it can also be deeply satisfying when you have the right tools.</p><p>Meet my File Analyzer Quick Action. Just right-click any file and quickly know what it does, how it's structured, who created it, why, who else contributed, and what changes were made.</p><p>Close those tickets calmly, efficiently, and with peace of mind.</p><p>You can be the tech guru people count on during critical times to parachute in and save them.</p><p><a href="https://starv.gumroad.com/l/analyzer/pj6a2ms">Download my Quick Action now</a> for free, and start mastering your workload, learning, and growing in no time.</p><p>Have a great day!</p><p>-Steffen</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/how-to-create-good-jira-tickets?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Code and Beyond! If you liked this post, please share it!</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/how-to-create-good-jira-tickets?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.icyiterations.com/p/how-to-create-good-jira-tickets?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[More Fun with Ollama]]></title><description><![CDATA[Save on OpenAI Costs and Get a Free File Analyzer]]></description><link>https://www.icyiterations.com/p/more-fun-with-ollama</link><guid isPermaLink="false">https://www.icyiterations.com/p/more-fun-with-ollama</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Wed, 25 Sep 2024 11:36:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fUbG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d02987-ec21-4258-a18b-830ce9485bd8_1012x506.png" 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_!fUbG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d02987-ec21-4258-a18b-830ce9485bd8_1012x506.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fUbG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d02987-ec21-4258-a18b-830ce9485bd8_1012x506.png 424w, https://substackcdn.com/image/fetch/$s_!fUbG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d02987-ec21-4258-a18b-830ce9485bd8_1012x506.png 848w, https://substackcdn.com/image/fetch/$s_!fUbG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d02987-ec21-4258-a18b-830ce9485bd8_1012x506.png 1272w, https://substackcdn.com/image/fetch/$s_!fUbG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d02987-ec21-4258-a18b-830ce9485bd8_1012x506.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fUbG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d02987-ec21-4258-a18b-830ce9485bd8_1012x506.png" width="1012" height="506" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a0d02987-ec21-4258-a18b-830ce9485bd8_1012x506.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:506,&quot;width&quot;:1012,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:289898,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fUbG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d02987-ec21-4258-a18b-830ce9485bd8_1012x506.png 424w, https://substackcdn.com/image/fetch/$s_!fUbG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d02987-ec21-4258-a18b-830ce9485bd8_1012x506.png 848w, https://substackcdn.com/image/fetch/$s_!fUbG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d02987-ec21-4258-a18b-830ce9485bd8_1012x506.png 1272w, https://substackcdn.com/image/fetch/$s_!fUbG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0d02987-ec21-4258-a18b-830ce9485bd8_1012x506.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><h3>Gitonium Update: Save on API Costs with Local LLMs</h3><p>After writing last week about the <a href="https://steffenfinsland.substack.com/p/apples-missed-opportunity">AI dilemma developers face</a>, I decided to act on a feature request that's been sitting in Gitonium's wishlist for a while&#8212;one that could save users real money.</p><p><strong>Introducing Ollama Support for Automatic Commit Messages</strong></p><p>Users have been asking for <a href="https://ollama.com/">Ollama</a> support to reduce API costs when generating automatic commit messages. I tested this earlier in the summer, but wasn't satisfied with how long it took my Mac to generate a commit message. So, I put it on hold.</p><p>Recently, after writing my Apple Intelligence post, I revisited the idea with a different approach. Instead of using a big model like <a href="https://ollama.com/library/llama3.1">Llama</a>, which felt like overkill, I tested Google's smallest <a href="https://ollama.com/library/gemma2:2b">Gemma 2</a> model. It worked well and ran relatively fast on my M1 Mac.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mR2B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5867c9f-7e06-4c48-8dc3-0951bcd75eab_664x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mR2B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5867c9f-7e06-4c48-8dc3-0951bcd75eab_664x496.png 424w, https://substackcdn.com/image/fetch/$s_!mR2B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5867c9f-7e06-4c48-8dc3-0951bcd75eab_664x496.png 848w, https://substackcdn.com/image/fetch/$s_!mR2B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5867c9f-7e06-4c48-8dc3-0951bcd75eab_664x496.png 1272w, https://substackcdn.com/image/fetch/$s_!mR2B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5867c9f-7e06-4c48-8dc3-0951bcd75eab_664x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mR2B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5867c9f-7e06-4c48-8dc3-0951bcd75eab_664x496.png" width="664" height="496" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e5867c9f-7e06-4c48-8dc3-0951bcd75eab_664x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:496,&quot;width&quot;:664,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:234955,&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;: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_!mR2B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5867c9f-7e06-4c48-8dc3-0951bcd75eab_664x496.png 424w, https://substackcdn.com/image/fetch/$s_!mR2B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5867c9f-7e06-4c48-8dc3-0951bcd75eab_664x496.png 848w, https://substackcdn.com/image/fetch/$s_!mR2B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5867c9f-7e06-4c48-8dc3-0951bcd75eab_664x496.png 1272w, https://substackcdn.com/image/fetch/$s_!mR2B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5867c9f-7e06-4c48-8dc3-0951bcd75eab_664x496.png 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><strong>New Feature in Gitonium: Choose Your AI Provider</strong></p><p>I&#8217;ve added the option to select your AI provider in Gitonium&#8217;s Settings, allowing you to choose between using remote APIs or local models.</p><p><strong>Benefits of Using Local LLMs</strong>:</p><ul><li><p><strong>Privacy</strong>: None of your source code is sent to a third party (like OpenAI). Everything stays private on your machine.</p></li><li><p><strong>Offline Capability</strong>: You can generate commit messages even when you're offline.</p></li></ul><p>The new update was approved by Apple and is now available for <a href="https://apps.apple.com/us/app/git-commit-merge-gitonium/id1603003585">download on the App Store</a>.</p><p></p><div><hr></div><h3>Free Tool for Newsletter Subscribers: File Analyzer Quick Action</h3><p>Speaking of productivity tools, I received some questions about the file analyzer script I mentioned in my <a href="https://steffenfinsland.substack.com/p/apples-missed-opportunity">Apple Intelligence post</a>. So, I thought&#8212;why not clean it up and release it?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://x.com/walfieee/status/953848431184875520" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Stli!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355a6c1d-8439-4e49-91cb-26d8d9dbafe1_942x471.png 424w, https://substackcdn.com/image/fetch/$s_!Stli!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355a6c1d-8439-4e49-91cb-26d8d9dbafe1_942x471.png 848w, https://substackcdn.com/image/fetch/$s_!Stli!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355a6c1d-8439-4e49-91cb-26d8d9dbafe1_942x471.png 1272w, https://substackcdn.com/image/fetch/$s_!Stli!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355a6c1d-8439-4e49-91cb-26d8d9dbafe1_942x471.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Stli!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355a6c1d-8439-4e49-91cb-26d8d9dbafe1_942x471.png" width="942" height="471" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/355a6c1d-8439-4e49-91cb-26d8d9dbafe1_942x471.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:471,&quot;width&quot;:942,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:213629,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://x.com/walfieee/status/953848431184875520&quot;,&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_!Stli!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355a6c1d-8439-4e49-91cb-26d8d9dbafe1_942x471.png 424w, https://substackcdn.com/image/fetch/$s_!Stli!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355a6c1d-8439-4e49-91cb-26d8d9dbafe1_942x471.png 848w, https://substackcdn.com/image/fetch/$s_!Stli!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355a6c1d-8439-4e49-91cb-26d8d9dbafe1_942x471.png 1272w, https://substackcdn.com/image/fetch/$s_!Stli!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F355a6c1d-8439-4e49-91cb-26d8d9dbafe1_942x471.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><figcaption class="image-caption">We've all been there..</figcaption></figure></div><p><strong>Struggling with Legacy Code?</strong></p><p>You're fixing code you barely understand, swamped with meetings, and rushing to close tickets. Coding should be creative, but stress is draining your energy.</p><p><strong>Here&#8217;s How the File Analyzer Helps</strong>:</p><ul><li><p>Quickly understand any code&#8212;like you wrote it yourself.</p></li><li><p>Skip the guesswork and get right to solving real problems.</p></li></ul><p><strong>File Analyzer Quick Action Features</strong>:</p><ul><li><p>Right-click any file to receive an instant breakdown:</p><ul><li><p>What the file does</p></li><li><p>Its structure</p></li><li><p>Authorship and history</p></li><li><p>Recent changes</p></li></ul></li></ul><p><strong>Note</strong>: The File Analyzer isn't available quite yet. I'm still polishing it up to make sure it's as useful as possible. But as a subscriber, you&#8217;ll be the first to receive it once it's ready!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.icyiterations.com/subscribe?"><span>Subscribe now</span></a></p><p>Want to make your life easier? Subscribe to my newsletter, and you'll be the first to get the File Analyzer Quick Action for free&#8212;so you can start streamlining your work as soon as it&#8217;s released!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AZBr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a63e63-3809-4224-803b-76156a936989_994x605.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AZBr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a63e63-3809-4224-803b-76156a936989_994x605.png 424w, https://substackcdn.com/image/fetch/$s_!AZBr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a63e63-3809-4224-803b-76156a936989_994x605.png 848w, https://substackcdn.com/image/fetch/$s_!AZBr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a63e63-3809-4224-803b-76156a936989_994x605.png 1272w, https://substackcdn.com/image/fetch/$s_!AZBr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a63e63-3809-4224-803b-76156a936989_994x605.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AZBr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a63e63-3809-4224-803b-76156a936989_994x605.png" width="994" height="605" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1a63e63-3809-4224-803b-76156a936989_994x605.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:605,&quot;width&quot;:994,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:358277,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AZBr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a63e63-3809-4224-803b-76156a936989_994x605.png 424w, https://substackcdn.com/image/fetch/$s_!AZBr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a63e63-3809-4224-803b-76156a936989_994x605.png 848w, https://substackcdn.com/image/fetch/$s_!AZBr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a63e63-3809-4224-803b-76156a936989_994x605.png 1272w, https://substackcdn.com/image/fetch/$s_!AZBr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a63e63-3809-4224-803b-76156a936989_994x605.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><figcaption class="image-caption">Right-click  &#10145;&#65039;  Quick Actions  &#10145;&#65039; Analyze</figcaption></figure></div><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/more-fun-with-ollama?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Code and Beyond! If you liked this post, please share it!</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/more-fun-with-ollama?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.icyiterations.com/p/more-fun-with-ollama?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Apple's Missed Opportunity]]></title><description><![CDATA[How the New AI Features Let Developers Down]]></description><link>https://www.icyiterations.com/p/apples-missed-opportunity</link><guid isPermaLink="false">https://www.icyiterations.com/p/apples-missed-opportunity</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Fri, 13 Sep 2024 15:30:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vJBI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb15c4950-de46-4f3f-9ea3-802a31be0f59_1251x695.webp" 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_!vJBI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb15c4950-de46-4f3f-9ea3-802a31be0f59_1251x695.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vJBI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb15c4950-de46-4f3f-9ea3-802a31be0f59_1251x695.webp 424w, https://substackcdn.com/image/fetch/$s_!vJBI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb15c4950-de46-4f3f-9ea3-802a31be0f59_1251x695.webp 848w, https://substackcdn.com/image/fetch/$s_!vJBI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb15c4950-de46-4f3f-9ea3-802a31be0f59_1251x695.webp 1272w, https://substackcdn.com/image/fetch/$s_!vJBI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb15c4950-de46-4f3f-9ea3-802a31be0f59_1251x695.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vJBI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb15c4950-de46-4f3f-9ea3-802a31be0f59_1251x695.webp" width="1251" height="695" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b15c4950-de46-4f3f-9ea3-802a31be0f59_1251x695.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:695,&quot;width&quot;:1251,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:96052,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&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="" srcset="https://substackcdn.com/image/fetch/$s_!vJBI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb15c4950-de46-4f3f-9ea3-802a31be0f59_1251x695.webp 424w, https://substackcdn.com/image/fetch/$s_!vJBI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb15c4950-de46-4f3f-9ea3-802a31be0f59_1251x695.webp 848w, https://substackcdn.com/image/fetch/$s_!vJBI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb15c4950-de46-4f3f-9ea3-802a31be0f59_1251x695.webp 1272w, https://substackcdn.com/image/fetch/$s_!vJBI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb15c4950-de46-4f3f-9ea3-802a31be0f59_1251x695.webp 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>As Apple prepares to launch iOS 18 and macOS 15 Sequoia next week, excitement is building around the new Apple Intelligence features. With promises of a <a href="https://www.youtube.com/watch?v=TPe8revsg3k">smarter Siri</a> and AI-enhanced system apps with summarization and intelligence capabilities, the future looks bright for users. However, as a developer, I can't help but feel let down. Despite the advancements, there's a glaring omission that could have unlocked a ton of innovation: the absence of a built-in generative language model integrated into the OS. This missing piece could have empowered developers to create a new wave of innovative apps and solutions.</p><h2>So, what exactly is Apple Intelligence?</h2><ul><li><p>A more personal Siri that can do more for you, like searching and performing actions across apps or prioritizing and summarizing your notifications. As developers, with some effort, we can let Siri reach into and integrate with our apps.</p></li><li><p>Writing tools that let users rewrite, adjust the tone, or correct their grammar. These tools will appear in most apps that let you edit text.</p></li><li><p>Generate new emojis on the fly or create images using the Image Playground API.</p></li></ul><h2>The Glaring Omission: No On-Device LLM for Developers</h2><p>So, basically, we can now generate images in our apps, but there's no way to generate and process text. If Apple offered something like this as an API, the potential for innovations and creative ideas would have exploded. It could have triggered a new wave of innovative apps and a lot of fresh enthusiasm around their platforms.</p><h3></h3><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/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">Thanks for reading Code and Beyond &#128301;! Subscribe for free to receive new posts and support my work.</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>The AI Dilemma for Developers</h3><p>When you want to make an AI-powered app, you face a dilemma.</p><p>You could rely on cloud-based LLMs like OpenAI or Claude or use a local model. Both have considerable downsides.</p><h4>Cloud-Based LLMs: Cost and Security Issues</h4><p>If you choose the cloud-based method, the most significant factor is the cost. These API vendors charge you based on use, and if your app gets popular, it could cost you. Deciding what to do with these costs is a challenge because you basically have two options:</p><ul><li><p>Absorb the API costs and hope that the price of your product will cover all its usage.</p></li><li><p>Pass the cost over to the user, either by selling in-app purchases based on usage or having the user provide their own API key, which they pay for.</p></li></ul><p>The final challenge is security: Your app could be hacked, your API keys stolen, and you could wake up to an unexpected bill from your provider.</p><h4>On-Device Models: Licensing and Size Constraints</h4><p>Should you choose the on-device model approach, you have other problems. You could use an open-source model and bundle it with your app, but this brings its own concerns. Firstly, is the model licensed in such a way that you are allowed to distribute it commercially? If it is, we come to the second problem: these models are huge -- several gigabytes huge. If you decide to include one of these models in your app, then not only will your app take a long time to download, but it will take up a ton of space on your user's devices. If everyone did this, we would all quickly run out of drive space, and every app would need to load its own model, gobbling up all your device's memory, too.</p><h4>Exploring Alternatives: The Case of Ollama</h4><p>There is a third option, an app called Ollama. It runs in the background on your machine and lets you download and run models locally. It's basically a locally-running AI API. I've been using it to write lots of useful scripts that help me day by day. I have, for example, one small script that runs on my Mac that looks through the news and pings me about stuff it thinks I'm interested in. Another script I've made analyzes and summarizes files and their git history. It has come in handy when looking for regressions in files I wasn't familiar with or when I wanted to get up to speed on what some code does.</p><p>The downside to building apps with Ollama appears when you want to distribute them. You must require the user to install Ollama first, or your app won't work. For best results, they'll likely also need to install the exact model you have been tweaking your prompts to work with, and they'll need to use the terminal. This also means it isn't feasible if you want to distribute your apps on the App Store.</p><h2>Final Thoughts</h2><p>To fix all these problems, Apple should have included a basic local system-reachable language model in the OS that any app could hook into and use. Having something like that would make all these worries go away. It would eliminate the cost and licensing barriers, reduce app sizes, and open the floodgates for a ton of innovative native AI-powered apps. Doing this wouldn't just benefit developers&#8212;it would enrich the entire Apple ecosystem with a wealth of new and advanced functionalities.</p><p>Over the last few years, many developers have felt increasingly alienated by Apple. By overlooking this, Apple has missed a significant opportunity to empower its developer community.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/apples-missed-opportunity?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Code and Beyond! If you liked this post, please share it!</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/apples-missed-opportunity?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.icyiterations.com/p/apples-missed-opportunity?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Echo Chambers and Real Productivity]]></title><description><![CDATA[In this issue Gitonium gets a new update, and I gain some insight.]]></description><link>https://www.icyiterations.com/p/echo-chambers-and-real-productivity</link><guid isPermaLink="false">https://www.icyiterations.com/p/echo-chambers-and-real-productivity</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Thu, 01 Aug 2024 21:11:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jifO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646d019a-2ed5-4f91-9a86-0e03351a3f97_600x450.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>In this issue:</h1><ul><li><p>Welcome to My Echo Chamber</p></li><li><p>Gitonium gets an update</p></li></ul><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jifO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646d019a-2ed5-4f91-9a86-0e03351a3f97_600x450.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jifO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646d019a-2ed5-4f91-9a86-0e03351a3f97_600x450.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jifO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646d019a-2ed5-4f91-9a86-0e03351a3f97_600x450.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jifO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646d019a-2ed5-4f91-9a86-0e03351a3f97_600x450.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jifO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646d019a-2ed5-4f91-9a86-0e03351a3f97_600x450.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jifO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646d019a-2ed5-4f91-9a86-0e03351a3f97_600x450.jpeg" width="600" height="450" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/646d019a-2ed5-4f91-9a86-0e03351a3f97_600x450.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:450,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:46534,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jifO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646d019a-2ed5-4f91-9a86-0e03351a3f97_600x450.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jifO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646d019a-2ed5-4f91-9a86-0e03351a3f97_600x450.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jifO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646d019a-2ed5-4f91-9a86-0e03351a3f97_600x450.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jifO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646d019a-2ed5-4f91-9a86-0e03351a3f97_600x450.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><h2>Welcome to My Echo Chamber</h2><p>A while back, I felt tired of Twitter because it's full of indie hacker influencers either bragging about their MRR or spewing advice on getting thousands of followers like they have (buy my course!). </p><p>Hoping to find a more meaningful way to keep myself up to date, I joined Substack and began subscribing to a bunch of newsletters that popped up and seemed interesting. </p><p>Last night, I found myself reading a newsletter about how You, too, can generate eight income streams when it clicked for me. Why am I spending time reading this? As I reflected on this last night, I realized I'd recreated the same environment that I had on Twitter. </p><p>Half of the newsletters are from people writing about how to succeed on Substack or how you, too, can have thousands of followers (grind!) and live life on your terms, et cetera ad infinitum. Am I just hooked on success porn? Please gloss over all complexities and failures along the way and seduce me with this easy six-step success blueprint. </p><p>Are we predisposed to seek out what we want to hear? Why did I do this to myself? More importantly, how can we break out of this cycle?</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/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">Thanks for reading Beyond the Code &#128301;! Subscribe for free to receive new posts and support my work.</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></p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!urL-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2a6f51-6895-4c64-a593-a2bc17d7758b_447x390.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!urL-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2a6f51-6895-4c64-a593-a2bc17d7758b_447x390.png 424w, https://substackcdn.com/image/fetch/$s_!urL-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2a6f51-6895-4c64-a593-a2bc17d7758b_447x390.png 848w, https://substackcdn.com/image/fetch/$s_!urL-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2a6f51-6895-4c64-a593-a2bc17d7758b_447x390.png 1272w, https://substackcdn.com/image/fetch/$s_!urL-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2a6f51-6895-4c64-a593-a2bc17d7758b_447x390.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!urL-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2a6f51-6895-4c64-a593-a2bc17d7758b_447x390.png" width="447" height="390" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d2a6f51-6895-4c64-a593-a2bc17d7758b_447x390.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:390,&quot;width&quot;:447,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:104035,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!urL-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2a6f51-6895-4c64-a593-a2bc17d7758b_447x390.png 424w, https://substackcdn.com/image/fetch/$s_!urL-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2a6f51-6895-4c64-a593-a2bc17d7758b_447x390.png 848w, https://substackcdn.com/image/fetch/$s_!urL-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2a6f51-6895-4c64-a593-a2bc17d7758b_447x390.png 1272w, https://substackcdn.com/image/fetch/$s_!urL-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2a6f51-6895-4c64-a593-a2bc17d7758b_447x390.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><h2>Gitonium Gets an Update</h2><p>As you may know, I make a git client for macOS. Its primary purpose is to make merges as easy as possible. Many users have been asking me to add support for pushing and pulling, and it's taken me a while because I was used to mostly doing that from the command line. It's a feature I've been wanting to make, and now that I have it, I'm not sure how I managed without it. It sounds like such a simple thing to add to an app, but there are many corner cases and things to consider. </p><p>This spring, I spent much time learning about the actual business parts of running a business, so it felt comforting to make things again. Before submitting this version to Apple, I took the opportunity to update Gitonium's icon. The old one was a <em>Launched</em>-inspired one that I thought would be temporary, but it stuck. </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XV6F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4180389f-23fe-428e-bb2d-f848306ec615_622x198.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XV6F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4180389f-23fe-428e-bb2d-f848306ec615_622x198.png 424w, https://substackcdn.com/image/fetch/$s_!XV6F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4180389f-23fe-428e-bb2d-f848306ec615_622x198.png 848w, https://substackcdn.com/image/fetch/$s_!XV6F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4180389f-23fe-428e-bb2d-f848306ec615_622x198.png 1272w, https://substackcdn.com/image/fetch/$s_!XV6F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4180389f-23fe-428e-bb2d-f848306ec615_622x198.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XV6F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4180389f-23fe-428e-bb2d-f848306ec615_622x198.png" width="622" height="198" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4180389f-23fe-428e-bb2d-f848306ec615_622x198.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:198,&quot;width&quot;:622,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:128466,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XV6F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4180389f-23fe-428e-bb2d-f848306ec615_622x198.png 424w, https://substackcdn.com/image/fetch/$s_!XV6F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4180389f-23fe-428e-bb2d-f848306ec615_622x198.png 848w, https://substackcdn.com/image/fetch/$s_!XV6F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4180389f-23fe-428e-bb2d-f848306ec615_622x198.png 1272w, https://substackcdn.com/image/fetch/$s_!XV6F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4180389f-23fe-428e-bb2d-f848306ec615_622x198.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Here&#8217;s the new one next to the old</figcaption></figure></div><p>Designing a new version was a fun process. While still blue, this new one stands out better next to all the other blue icons on my Mac.</p><p>The new version 2024.7.1 is rolling out <a href="https://apps.apple.com/us/app/git-commit-merge-gitonium/id1603003585?mt=12">&#8203;on the Mac App Store&#8203;</a> right now!</p><div><hr></div><p></p><p>I hope you're all having a fantastic summer! I just returned from walking through a forest inside an old log flume to reach a secret swimming spot. Never stop going on adventures!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Bo1m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837750f4-38fa-49aa-a0ed-068dff18bf4d_602x801.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Bo1m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837750f4-38fa-49aa-a0ed-068dff18bf4d_602x801.png 424w, https://substackcdn.com/image/fetch/$s_!Bo1m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837750f4-38fa-49aa-a0ed-068dff18bf4d_602x801.png 848w, https://substackcdn.com/image/fetch/$s_!Bo1m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837750f4-38fa-49aa-a0ed-068dff18bf4d_602x801.png 1272w, https://substackcdn.com/image/fetch/$s_!Bo1m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837750f4-38fa-49aa-a0ed-068dff18bf4d_602x801.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Bo1m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837750f4-38fa-49aa-a0ed-068dff18bf4d_602x801.png" width="602" height="801" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/837750f4-38fa-49aa-a0ed-068dff18bf4d_602x801.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:801,&quot;width&quot;:602,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1181660,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Bo1m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837750f4-38fa-49aa-a0ed-068dff18bf4d_602x801.png 424w, https://substackcdn.com/image/fetch/$s_!Bo1m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837750f4-38fa-49aa-a0ed-068dff18bf4d_602x801.png 848w, https://substackcdn.com/image/fetch/$s_!Bo1m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837750f4-38fa-49aa-a0ed-068dff18bf4d_602x801.png 1272w, https://substackcdn.com/image/fetch/$s_!Bo1m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F837750f4-38fa-49aa-a0ed-068dff18bf4d_602x801.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>Have a great day!</p><p>-Steffen</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/echo-chambers-and-real-productivity?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thank you for reading Beyond the Code &#128301;. This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/p/echo-chambers-and-real-productivity?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.icyiterations.com/p/echo-chambers-and-real-productivity?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><p></p>]]></content:encoded></item><item><title><![CDATA[Serenity, Savings, and Sanity]]></title><description><![CDATA[I was a software engineer working for one of the big tech companies. I spent my time sitting in endless meetings scattered throughout the day. I had frequent headaches&#160;and neck pain.]]></description><link>https://www.icyiterations.com/p/serenity-savings-and-sanity</link><guid isPermaLink="false">https://www.icyiterations.com/p/serenity-savings-and-sanity</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Tue, 21 May 2024 09:46:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b84a8de-f109-43f1-94d6-3db44653bbd4_2624x1856.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>In this issue: </h2><ul><li><p>Pay Yourself First</p></li><li><p>Talking to My Therapist</p></li></ul><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vBnD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b84a8de-f109-43f1-94d6-3db44653bbd4_2624x1856.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vBnD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b84a8de-f109-43f1-94d6-3db44653bbd4_2624x1856.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vBnD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b84a8de-f109-43f1-94d6-3db44653bbd4_2624x1856.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vBnD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b84a8de-f109-43f1-94d6-3db44653bbd4_2624x1856.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vBnD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b84a8de-f109-43f1-94d6-3db44653bbd4_2624x1856.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vBnD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b84a8de-f109-43f1-94d6-3db44653bbd4_2624x1856.jpeg" width="1456" height="1030" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b84a8de-f109-43f1-94d6-3db44653bbd4_2624x1856.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1030,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1056816,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vBnD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b84a8de-f109-43f1-94d6-3db44653bbd4_2624x1856.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vBnD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b84a8de-f109-43f1-94d6-3db44653bbd4_2624x1856.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vBnD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b84a8de-f109-43f1-94d6-3db44653bbd4_2624x1856.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vBnD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b84a8de-f109-43f1-94d6-3db44653bbd4_2624x1856.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><h1>Pay Yourself First</h1><p>I was a software engineer working for one of the big tech companies. I spent my time sitting in endless meetings scattered throughout the day. I had frequent headaches&nbsp;and neck pain.&nbsp;</p><p><em>Pay Yourself First</em>&nbsp;is a strategy in personal finance where you set aside a portion for savings before paying your bills, forcing yourself to adjust your spending accordingly. I have begun to apply the same concept in life, prioritizing my health and well-being above other commitments.&nbsp;</p><p>When I worked the corporate job, I had it all backward. Work came first, and then the rest of my life, sandwiched between deadlines. When there was a big launch, the first thing that had to go was exercise, quickly followed by eating well and spending time with loved ones. A sure sign you've entered burnout season is when PMs start calling the team&nbsp;<em>fam.&nbsp;</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.icyiterations.com/subscribe?"><span>Subscribe now</span></a></p><p>On top of my headaches and neck pain, I injured my knee, and for a while, I could barely walk. If you've ever been sick or injured, you'll know that nothing matters more to you than getting well. Why don't we take better care of ourselves? Instead, we work our asses off, thinking that it'll all be worth it one day when we retire.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> At&nbsp;work,&nbsp;they offered free&nbsp;mindfulness&nbsp;lessons; at one point, I recall they sent emails announcing this month was <em>Wellness Month</em>. The&nbsp;only problem was I was too overwhelmed to get through all my emails and notifications, much less spend my evenings attending online seminars (meetings!) about burnout risk.</p><p>I was burnt out and had reached a point where the only thing I could do to remain sane was quit. I had to decide to put myself first. Today, 7 months later, it's been one of the best decisions I can recall making. Many people were shocked when I said I quit my job and looked terrified by the mere thought of spending some savings. (Either that or they couldn't grasp that I had savings.) On that note, if you're not setting aside some money every month, you should seriously reconsider your priorities because not having any savings is how you ensure you'll be trapped in the hamster wheel forever.</p><p>You can take some time off even if you don't quit your job like I did. I know people who have negotiated paid&#8212;or partly paid&#8212;sabbaticals with their employers. When I resigned, I, too, was offered a sabbatical, but I was too burnt out at the time to even consider that offer. I needed a clean break. Thus far, I've treated my time off much like a sabbatical. Historically, sabbaticals were a period off for study, travel, rest, and pursuing personal interests, and it was something university professors would&nbsp;do occasionally&nbsp;to stay relevant. If quitting feels like a drastic move, consider discussing sabbatical options with your employer, highlighting how it can benefit you and the company by preventing burnout and renewing productivity.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UvAn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339451f6-397a-4ad0-8ee2-dc0fe6658bc5_610x690.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UvAn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339451f6-397a-4ad0-8ee2-dc0fe6658bc5_610x690.png 424w, https://substackcdn.com/image/fetch/$s_!UvAn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339451f6-397a-4ad0-8ee2-dc0fe6658bc5_610x690.png 848w, https://substackcdn.com/image/fetch/$s_!UvAn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339451f6-397a-4ad0-8ee2-dc0fe6658bc5_610x690.png 1272w, https://substackcdn.com/image/fetch/$s_!UvAn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339451f6-397a-4ad0-8ee2-dc0fe6658bc5_610x690.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UvAn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339451f6-397a-4ad0-8ee2-dc0fe6658bc5_610x690.png" width="610" height="690" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/339451f6-397a-4ad0-8ee2-dc0fe6658bc5_610x690.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:690,&quot;width&quot;:610,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:206610,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UvAn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339451f6-397a-4ad0-8ee2-dc0fe6658bc5_610x690.png 424w, https://substackcdn.com/image/fetch/$s_!UvAn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339451f6-397a-4ad0-8ee2-dc0fe6658bc5_610x690.png 848w, https://substackcdn.com/image/fetch/$s_!UvAn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339451f6-397a-4ad0-8ee2-dc0fe6658bc5_610x690.png 1272w, https://substackcdn.com/image/fetch/$s_!UvAn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339451f6-397a-4ad0-8ee2-dc0fe6658bc5_610x690.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><figcaption class="image-caption">Google says take a sabbatical!</figcaption></figure></div><p>A lot of people online are advocating taking time off. In his newsletter, <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Paul Millerd&quot;,&quot;id&quot;:327469,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/a781ac52-7174-4fe3-a435-9b8aada1ddf6_4565x3013.jpeg&quot;,&quot;uuid&quot;:&quot;3825b9f0-2f48-4c56-a69f-ca8223e420d1&quot;}" data-component-name="MentionToDOM"></span> writes<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>:</p><blockquote><p><em>I suspect that we'll look back on continuous employment throughout adulthood as a temporary phenomenon of industrialization. In a world where more work is creative, abstract, and specialized, I think the "break" from work will become far more common (if not expected).</em></p></blockquote><p>When you no longer have to squeeze your life into a schedule designed for factory assembly lines at the Industrial Revolution, many new opportunities open up. Like exercising during the day and working when you feel the most creative.</p><p>What I do now is prioritize my health and wellness. I won't be one of those older people who have trouble getting out of the chair&#8212;I'm making sure I won't be. The first thing I do in the morning, before waking the kids or brewing coffee, is put on my workout clothes. When the kids leave for school, I go to the gym.&nbsp;Why wouldn't I? I'm already wearing gym clothes!</p><p>When you work out every day, you don't need to work as hard as those who do it only once or twice. The gym is full of busy people trying to cram as much exercise as possible into the least amount of time. They'll be running between machines, trying to exercise multiple muscle groups simultaneously so they don't have to sit still for a minute between reps.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g9Mg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a40248a-964f-4b53-baba-f7c040ea953b_982x1159.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g9Mg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a40248a-964f-4b53-baba-f7c040ea953b_982x1159.jpeg 424w, https://substackcdn.com/image/fetch/$s_!g9Mg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a40248a-964f-4b53-baba-f7c040ea953b_982x1159.jpeg 848w, https://substackcdn.com/image/fetch/$s_!g9Mg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a40248a-964f-4b53-baba-f7c040ea953b_982x1159.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!g9Mg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a40248a-964f-4b53-baba-f7c040ea953b_982x1159.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g9Mg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a40248a-964f-4b53-baba-f7c040ea953b_982x1159.jpeg" width="982" height="1159" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a40248a-964f-4b53-baba-f7c040ea953b_982x1159.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1159,&quot;width&quot;:982,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:301894,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!g9Mg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a40248a-964f-4b53-baba-f7c040ea953b_982x1159.jpeg 424w, https://substackcdn.com/image/fetch/$s_!g9Mg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a40248a-964f-4b53-baba-f7c040ea953b_982x1159.jpeg 848w, https://substackcdn.com/image/fetch/$s_!g9Mg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a40248a-964f-4b53-baba-f7c040ea953b_982x1159.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!g9Mg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a40248a-964f-4b53-baba-f7c040ea953b_982x1159.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><figcaption class="image-caption">Optimize everything!</figcaption></figure></div><p>The need to&nbsp;<em>save time</em>&nbsp;and be more productive is so deeply ingrained in us that we no longer question it. We frown upon leisure time and feel bad for doing nothing. </p><p>The ancient Greeks had the right idea. The Greek word for leisure, &#963;&#967;&#959;&#955;&#942; (schol&#275;), is actually the basis for the English word "school." To the Greeks, leisure wasn't just about relaxation but also about engaging in activities that improved the mind and the soul. Being free from 9-5 has been an eye-opener, and I'm now looking forward to Mondays instead of dreading them.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bbku!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4807e539-1802-43ac-b082-a9ad5faa91c9_245x228.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bbku!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4807e539-1802-43ac-b082-a9ad5faa91c9_245x228.png 424w, https://substackcdn.com/image/fetch/$s_!bbku!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4807e539-1802-43ac-b082-a9ad5faa91c9_245x228.png 848w, https://substackcdn.com/image/fetch/$s_!bbku!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4807e539-1802-43ac-b082-a9ad5faa91c9_245x228.png 1272w, https://substackcdn.com/image/fetch/$s_!bbku!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4807e539-1802-43ac-b082-a9ad5faa91c9_245x228.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bbku!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4807e539-1802-43ac-b082-a9ad5faa91c9_245x228.png" width="245" height="228" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4807e539-1802-43ac-b082-a9ad5faa91c9_245x228.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:228,&quot;width&quot;:245,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:54277,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bbku!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4807e539-1802-43ac-b082-a9ad5faa91c9_245x228.png 424w, https://substackcdn.com/image/fetch/$s_!bbku!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4807e539-1802-43ac-b082-a9ad5faa91c9_245x228.png 848w, https://substackcdn.com/image/fetch/$s_!bbku!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4807e539-1802-43ac-b082-a9ad5faa91c9_245x228.png 1272w, https://substackcdn.com/image/fetch/$s_!bbku!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4807e539-1802-43ac-b082-a9ad5faa91c9_245x228.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Clear skies!</figcaption></figure></div><p>Just like how you quickly stop noticing when you Pay Yourself First that the sum is gone from your budget, I also no longer notice the effort of working out. My neck pain and headaches are a thing of the past, and I feel stronger, more creative, and more focused than ever.</p><p></p><p>You should consider a sabbatical.</p><div><hr></div><p></p><h1>Talking to my therapist</h1><p>Exercise might not only make your stiff neck and your mouse arm pains go away&#8212;There is substantial research<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> in support of the theory that physical exercise leads to reduced symptoms of depression and anxiety, improved cognitive function, stress reduction, and generally a sharper, more creative mind. </p><p>Memes say it so much better, though:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://twitter.com/AndreyAzimov/status/1684660900882440192" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NINf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f4231a3-0084-42a3-b31a-4bf59e844b78_1298x1264.png 424w, https://substackcdn.com/image/fetch/$s_!NINf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f4231a3-0084-42a3-b31a-4bf59e844b78_1298x1264.png 848w, https://substackcdn.com/image/fetch/$s_!NINf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f4231a3-0084-42a3-b31a-4bf59e844b78_1298x1264.png 1272w, https://substackcdn.com/image/fetch/$s_!NINf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f4231a3-0084-42a3-b31a-4bf59e844b78_1298x1264.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NINf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f4231a3-0084-42a3-b31a-4bf59e844b78_1298x1264.png" width="1298" height="1264" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5f4231a3-0084-42a3-b31a-4bf59e844b78_1298x1264.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1264,&quot;width&quot;:1298,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1760130,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://twitter.com/AndreyAzimov/status/1684660900882440192&quot;,&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_!NINf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f4231a3-0084-42a3-b31a-4bf59e844b78_1298x1264.png 424w, https://substackcdn.com/image/fetch/$s_!NINf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f4231a3-0084-42a3-b31a-4bf59e844b78_1298x1264.png 848w, https://substackcdn.com/image/fetch/$s_!NINf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f4231a3-0084-42a3-b31a-4bf59e844b78_1298x1264.png 1272w, https://substackcdn.com/image/fetch/$s_!NINf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f4231a3-0084-42a3-b31a-4bf59e844b78_1298x1264.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://twitter.com/filippkowalski/status/1789596893061816772" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KoOg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a23f36-84f0-4862-b592-d28b90fa398e_1056x1342.png 424w, https://substackcdn.com/image/fetch/$s_!KoOg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a23f36-84f0-4862-b592-d28b90fa398e_1056x1342.png 848w, https://substackcdn.com/image/fetch/$s_!KoOg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a23f36-84f0-4862-b592-d28b90fa398e_1056x1342.png 1272w, https://substackcdn.com/image/fetch/$s_!KoOg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a23f36-84f0-4862-b592-d28b90fa398e_1056x1342.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KoOg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a23f36-84f0-4862-b592-d28b90fa398e_1056x1342.png" width="1056" height="1342" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9a23f36-84f0-4862-b592-d28b90fa398e_1056x1342.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1342,&quot;width&quot;:1056,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1684335,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://twitter.com/filippkowalski/status/1789596893061816772&quot;,&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_!KoOg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a23f36-84f0-4862-b592-d28b90fa398e_1056x1342.png 424w, https://substackcdn.com/image/fetch/$s_!KoOg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a23f36-84f0-4862-b592-d28b90fa398e_1056x1342.png 848w, https://substackcdn.com/image/fetch/$s_!KoOg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a23f36-84f0-4862-b592-d28b90fa398e_1056x1342.png 1272w, https://substackcdn.com/image/fetch/$s_!KoOg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a23f36-84f0-4862-b592-d28b90fa398e_1056x1342.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://twitter.com/levelsio/status/1685074589469351936" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pvUN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f101f7b-2966-4efe-8386-3988d0b1ce95_1032x1284.png 424w, https://substackcdn.com/image/fetch/$s_!pvUN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f101f7b-2966-4efe-8386-3988d0b1ce95_1032x1284.png 848w, https://substackcdn.com/image/fetch/$s_!pvUN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f101f7b-2966-4efe-8386-3988d0b1ce95_1032x1284.png 1272w, https://substackcdn.com/image/fetch/$s_!pvUN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f101f7b-2966-4efe-8386-3988d0b1ce95_1032x1284.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pvUN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f101f7b-2966-4efe-8386-3988d0b1ce95_1032x1284.png" width="1032" height="1284" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4f101f7b-2966-4efe-8386-3988d0b1ce95_1032x1284.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1284,&quot;width&quot;:1032,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1313503,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://twitter.com/levelsio/status/1685074589469351936&quot;,&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_!pvUN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f101f7b-2966-4efe-8386-3988d0b1ce95_1032x1284.png 424w, https://substackcdn.com/image/fetch/$s_!pvUN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f101f7b-2966-4efe-8386-3988d0b1ce95_1032x1284.png 848w, https://substackcdn.com/image/fetch/$s_!pvUN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f101f7b-2966-4efe-8386-3988d0b1ce95_1032x1284.png 1272w, https://substackcdn.com/image/fetch/$s_!pvUN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f101f7b-2966-4efe-8386-3988d0b1ce95_1032x1284.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>Have a great day!</p><p>-Steffen</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>At what age, 70? That number keeps going up.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Paul Millerd on <a href="https://newsletter.pathlesspath.com/p/sabbaticals-regrets-youth-mode-elites">Sabbaticals, Regrets, Youth Mode, Elites School Districts | #264</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p><a href="https://pubmed.ncbi.nlm.nih.gov/30099000/">Association between physical exercise and mental health in 1&#183;2 million individuals in the USA between 2011 and 2015: a cross-sectional study</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p><a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3041121/">Exercise training increases size of hippocampus and improves memory</a></p></div></div>]]></content:encoded></item><item><title><![CDATA[Dealing with Stress as a Developer]]></title><description><![CDATA[I&#8217;m in charge of an app, and it&#8217;s stressing me out. How do I stop panicking? More responsibility means more stress. I worked as an iOS tech lead for over a decade, and I've had my fair share of this. I kept checking my email, Twitter, app reviews, customer service reports, and crash statistics, thinking everything was about to come crashing down.]]></description><link>https://www.icyiterations.com/p/dealing-with-stress-as-a-developer</link><guid isPermaLink="false">https://www.icyiterations.com/p/dealing-with-stress-as-a-developer</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Tue, 30 Apr 2024 09:15:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mOa7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef385ff-b92c-41b3-9eb2-3678faae7657_1792x1024.webp" 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_!mOa7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef385ff-b92c-41b3-9eb2-3678faae7657_1792x1024.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mOa7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef385ff-b92c-41b3-9eb2-3678faae7657_1792x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!mOa7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef385ff-b92c-41b3-9eb2-3678faae7657_1792x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!mOa7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef385ff-b92c-41b3-9eb2-3678faae7657_1792x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!mOa7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef385ff-b92c-41b3-9eb2-3678faae7657_1792x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mOa7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef385ff-b92c-41b3-9eb2-3678faae7657_1792x1024.webp" width="1456" height="832" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/def385ff-b92c-41b3-9eb2-3678faae7657_1792x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:832,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1385830,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&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="" srcset="https://substackcdn.com/image/fetch/$s_!mOa7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef385ff-b92c-41b3-9eb2-3678faae7657_1792x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!mOa7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef385ff-b92c-41b3-9eb2-3678faae7657_1792x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!mOa7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef385ff-b92c-41b3-9eb2-3678faae7657_1792x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!mOa7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef385ff-b92c-41b3-9eb2-3678faae7657_1792x1024.webp 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><blockquote><p><em><strong>I&#8217;m in charge of an app, and it&#8217;s stressing me out. How do I stop panicking?</strong></em></p></blockquote><p>More responsibility means more stress.</p><p>I worked as an iOS tech lead for over a decade, and I've experienced my fair share of this. I kept checking my email, Twitter, app reviews, customer service reports, and crash statistics, thinking everything was about to come crashing down.</p><p>I can come up with a very long list of small things you could do to mitigate the problem. Still, the main thing - the most important thing you have to learn when you are in this position, is a seemingly simple idea, and you might not like what I'm about to say because it requires a mind shift. It is a mental effort; if you don't learn to do this, you're on the path to a total meltdown.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.icyiterations.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.icyiterations.com/subscribe?"><span>Subscribe now</span></a></p><p>You have to accept that&nbsp;<em>shit will happen</em>. AWS will go down. Apple drops an update that makes your app crash. Facebook logins will stop working, or OpenAI will go down. It might be beyond your control, and your users will think it is your fault. Maybe even your boss at first. Hell, it might even be your fault, too. It doesn't matter.&nbsp;</p><div class="pullquote"><p>It&#8217;s not like I&#8217;m making pacemakers</p></div><p>Take the stoic approach and let go of it all. You can't control these things. What matters is how you react. The most important thing that helped me was to tell myself that it's only an app. This whole incident is an inconvenience at worst. It's not like I'm making pacemakers. I'll fix it, or whatever was down will come back up, and everyone will forget it soon after.&nbsp;</p><p>These things are unpleasant, but do not allow them to impact you <strong>before</strong> they happen. </p><p>Protect your mental health. It is more important than anything else.</p><p></p><p></p><div><hr></div><p>I had planned to end this post on this quote:</p><blockquote><p>Worrying does not take away tomorrow's troubles, it takes away today's peace.</p></blockquote><p>But then as I was finishing writing this, I opened Twitter and the perfect one rolled right into my feed:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://twitter.com/s8n/status/1784824982268149970" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W30z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2cfddb7-e07a-4b2e-b554-aaa87e2e6e58_724x441.png 424w, https://substackcdn.com/image/fetch/$s_!W30z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2cfddb7-e07a-4b2e-b554-aaa87e2e6e58_724x441.png 848w, https://substackcdn.com/image/fetch/$s_!W30z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2cfddb7-e07a-4b2e-b554-aaa87e2e6e58_724x441.png 1272w, https://substackcdn.com/image/fetch/$s_!W30z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2cfddb7-e07a-4b2e-b554-aaa87e2e6e58_724x441.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W30z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2cfddb7-e07a-4b2e-b554-aaa87e2e6e58_724x441.png" width="724" height="441" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d2cfddb7-e07a-4b2e-b554-aaa87e2e6e58_724x441.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:441,&quot;width&quot;:724,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:222416,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://twitter.com/s8n/status/1784824982268149970&quot;,&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_!W30z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2cfddb7-e07a-4b2e-b554-aaa87e2e6e58_724x441.png 424w, https://substackcdn.com/image/fetch/$s_!W30z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2cfddb7-e07a-4b2e-b554-aaa87e2e6e58_724x441.png 848w, https://substackcdn.com/image/fetch/$s_!W30z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2cfddb7-e07a-4b2e-b554-aaa87e2e6e58_724x441.png 1272w, https://substackcdn.com/image/fetch/$s_!W30z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2cfddb7-e07a-4b2e-b554-aaa87e2e6e58_724x441.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>Have a great day!</p>]]></content:encoded></item><item><title><![CDATA[Are You Successful Enough?]]></title><description><![CDATA[You're in bed at night, thinking about your life and job. "-I feel stuck, like I've stagnated. With my years of experience, I should have come further by now. I've only ever been an Individual Contributor, fixing bugs and building new features. I've never led a team. I Should Be Leading a Team by Now."]]></description><link>https://www.icyiterations.com/p/are-you-successful-enough</link><guid isPermaLink="false">https://www.icyiterations.com/p/are-you-successful-enough</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Thu, 07 Mar 2024 13:55:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a4e75738-9dce-4c9b-b0b8-580fd14170ab_720x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><strong>In this issue:</strong></h2><ul><li><p>I Should Be Leading a Team by Now</p></li><li><p>On the Subject of Happiness</p></li></ul><p></p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NkYw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953256a3-fb6d-4d36-bf1e-d67649eaf6e3_1680x720.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NkYw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953256a3-fb6d-4d36-bf1e-d67649eaf6e3_1680x720.webp 424w, https://substackcdn.com/image/fetch/$s_!NkYw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953256a3-fb6d-4d36-bf1e-d67649eaf6e3_1680x720.webp 848w, https://substackcdn.com/image/fetch/$s_!NkYw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953256a3-fb6d-4d36-bf1e-d67649eaf6e3_1680x720.webp 1272w, https://substackcdn.com/image/fetch/$s_!NkYw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953256a3-fb6d-4d36-bf1e-d67649eaf6e3_1680x720.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NkYw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953256a3-fb6d-4d36-bf1e-d67649eaf6e3_1680x720.webp" width="1456" height="624" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/953256a3-fb6d-4d36-bf1e-d67649eaf6e3_1680x720.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:624,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:110106,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&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="" srcset="https://substackcdn.com/image/fetch/$s_!NkYw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953256a3-fb6d-4d36-bf1e-d67649eaf6e3_1680x720.webp 424w, https://substackcdn.com/image/fetch/$s_!NkYw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953256a3-fb6d-4d36-bf1e-d67649eaf6e3_1680x720.webp 848w, https://substackcdn.com/image/fetch/$s_!NkYw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953256a3-fb6d-4d36-bf1e-d67649eaf6e3_1680x720.webp 1272w, https://substackcdn.com/image/fetch/$s_!NkYw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F953256a3-fb6d-4d36-bf1e-d67649eaf6e3_1680x720.webp 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>I Should Be Leading a Team by Now</strong></h2><p>You're in bed at night, thinking about your life and job.</p><blockquote><p><em>I feel stuck, like I've stagnated. With my years of experience, I should have come further by now. I've only ever been an Individual Contributor, fixing bugs and building new features. I've never led a team.</em></p><p><em>&#8203;Why am I not successful enough?</em></p></blockquote><p>Be careful what you wish for.</p><p>&#8203;<br>I followed the&nbsp;<a href="https://think-boundless.com/beware-of-the-default-path/">Default Path</a>&#8212;the standard path society tells you is the road to success. I was a Developer, then a Senior Developer, then a Tech Lead, then a Team Lead. One night, I was lying in bed thinking about my life and job, and I realized I didn't like it at all. I did not look forward to getting up tomorrow and getting to work. In fact, I dreaded it. Why, though?</p><p>As long as you're not homeless and your fundamental human needs are covered,&nbsp;<a href="https://waitbutwhy.com/2013/11/life-is-picture-but-you-live-in-pixel.html">your baseline happiness will stay the same</a>, even when you get a raise, a bonus, or a fancy title. You might get a brief high, but then you wake up again, and your bar for what's&nbsp;<em>normal</em>&nbsp;has reset itself, and you're just as happy or unhappy as before. You're on the&nbsp;<a href="https://en.wikipedia.org/wiki/Hedonic_treadmill">Hedonic Treadmill</a>, and as soon as you accomplish something, your mind defines this as the new norm, and you start wanting more.</p><p>You might say you <strong>need</strong> that raise. Why though?</p><p>Do you really need all that stuff you are buying, or are you just buying it because that's what everyone does?</p><blockquote><p><em>Too many people spend money they don&#8217;t have, to buy things they don't want, to impress people they don't like.</em></p><p>- Will Rogers (ca. 1920)</p></blockquote><p>Optimize for everyday happiness, and forget about prestige.</p><p>You're a great developer, and now you want to be a leader, too. When jockeying for that promotion to management, many fail to consider how different that job is. This is an entirely different skill set, and what you'll be doing all day is very different. You'll find yourself in endless meetings. Lots of planning and performance reviews. You'll be in charge of the growth of everyone on your team. You have to cater to the personal needs of all of them and have regular 1:1s all the time. You'll learn about&nbsp;<em>Performance Management</em>&#8212;how to coerce the most out of your subordinates. You may even have to stack rank everyone on your team, having to let the ones you ranked lowest know that they are&nbsp;<em>Low Performers</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_!EhaD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F985a56e8-fc92-4607-81e8-48c1623e7d93_1902x628.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EhaD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F985a56e8-fc92-4607-81e8-48c1623e7d93_1902x628.webp 424w, https://substackcdn.com/image/fetch/$s_!EhaD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F985a56e8-fc92-4607-81e8-48c1623e7d93_1902x628.webp 848w, https://substackcdn.com/image/fetch/$s_!EhaD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F985a56e8-fc92-4607-81e8-48c1623e7d93_1902x628.webp 1272w, https://substackcdn.com/image/fetch/$s_!EhaD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F985a56e8-fc92-4607-81e8-48c1623e7d93_1902x628.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EhaD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F985a56e8-fc92-4607-81e8-48c1623e7d93_1902x628.webp" width="1456" height="481" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/985a56e8-fc92-4607-81e8-48c1623e7d93_1902x628.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:481,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:128150,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&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_!EhaD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F985a56e8-fc92-4607-81e8-48c1623e7d93_1902x628.webp 424w, https://substackcdn.com/image/fetch/$s_!EhaD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F985a56e8-fc92-4607-81e8-48c1623e7d93_1902x628.webp 848w, https://substackcdn.com/image/fetch/$s_!EhaD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F985a56e8-fc92-4607-81e8-48c1623e7d93_1902x628.webp 1272w, https://substackcdn.com/image/fetch/$s_!EhaD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F985a56e8-fc92-4607-81e8-48c1623e7d93_1902x628.webp 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>Do you like to make things?</strong></h3><p>I once overheard my manager say something like, "<em>Wow! I'm getting so much work done today! I've had 11 meetings!</em>"</p><p>Did you ever feel that being in meetings is how you get things done?</p><blockquote><p>There are two types of schedule, which I'll call the manager's schedule and the maker's schedule. The manager's schedule is for bosses. It's embodied in the traditional appointment book, with each day cut into one hour intervals.<br>&#8203;&#8203;<br>Most powerful people are on the manager's schedule. It's the schedule of command. But there's another way of using time that's common among people who make things, like programmers and writers. They generally prefer to use time in units of half a day at least. You can't write or program well in units of an hour. That's barely enough time to get started.<br>&#8203;<br>When you're operating on the maker's schedule, meetings are a disaster. A single meeting can blow a whole afternoon, by breaking it into two pieces each too small to do anything hard in.<br>&#8203;</p><p>Excerpt from&nbsp;<a href="https://paulgraham.com/makersschedule.html">Maker's Schedule, Manager's Schedule</a>, by Paul Graham (2009)</p></blockquote><p></p><p>There is a whole field of education around becoming a manager, entirely skipping the part where you work as a developer for years first. Ask yourself why you didn't do that in the first place.</p><p>I've known highly talented developers who did not enjoy being in a management role and went back to being Individual Contributors. I am one.</p><h3><strong>So what should I do then?</strong></h3><p>If you work in&nbsp;<em>Big Tech</em>, there are senior&nbsp;<a href="https://honehq.com/glossary/individual-contributor/">&#8203;IC&#8203;</a>&nbsp;paths (architect/staff/principal engineer) that are generally much more pleasant roles for those of us who enjoy&nbsp;<em>making</em>&nbsp;stuff.</p><p>Show initiative. Demonstrate why you are valuable. Talk to your manager about what you want, and see if you can join a mentor program or pitch a project you could own. If your company can't offer a clear path onward, consider switching somewhere that does.</p><p>Or, for an alternative path to self-growth, join a small startup or make extra income from a side project.</p><p>&#8203;</p><p>Just <strong>don't</strong> become a manager.</p><p></p><div><hr></div><h1><strong>On the Subject of Happiness</strong></h1><p>When you know that you'll be writing about happiness, you'll think about it and subconsciously spot things and connections that relate to it everywhere</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://twitter.com/khemaridh/status/1760029881696424030" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nlNg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F675e9069-824c-401c-a298-cebac9fe11d6_1266x684.webp 424w, https://substackcdn.com/image/fetch/$s_!nlNg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F675e9069-824c-401c-a298-cebac9fe11d6_1266x684.webp 848w, https://substackcdn.com/image/fetch/$s_!nlNg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F675e9069-824c-401c-a298-cebac9fe11d6_1266x684.webp 1272w, https://substackcdn.com/image/fetch/$s_!nlNg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F675e9069-824c-401c-a298-cebac9fe11d6_1266x684.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nlNg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F675e9069-824c-401c-a298-cebac9fe11d6_1266x684.webp" width="1266" height="684" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/675e9069-824c-401c-a298-cebac9fe11d6_1266x684.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:684,&quot;width&quot;:1266,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:33048,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://twitter.com/khemaridh/status/1760029881696424030&quot;,&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_!nlNg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F675e9069-824c-401c-a298-cebac9fe11d6_1266x684.webp 424w, https://substackcdn.com/image/fetch/$s_!nlNg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F675e9069-824c-401c-a298-cebac9fe11d6_1266x684.webp 848w, https://substackcdn.com/image/fetch/$s_!nlNg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F675e9069-824c-401c-a298-cebac9fe11d6_1266x684.webp 1272w, https://substackcdn.com/image/fetch/$s_!nlNg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F675e9069-824c-401c-a298-cebac9fe11d6_1266x684.webp 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>While Hedonic adaptation is a real thing, you can still choose to be happy. You'll see this theme a lot in Stoic philosophy. I particularly like this quote from Boethius, written while he was in prison awaiting execution:</p><blockquote><p><em>Nothing is miserable unless you think it so; and on the other hand, nothing brings happiness unless you are content with it.</em></p><p>- The Consolation of Philosophy (524 AD)</p></blockquote><p>I'll leave you with <a href="https://www.ted.com/talks/dan_gilbert_the_surprising_science_of_happiness">this wonderful TED talk</a> by Dan Gilbert: The surprising science of happiness:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.ted.com/talks/dan_gilbert_the_surprising_science_of_happiness" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!id-I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305bf613-66b7-4474-8a1a-72379c3fc632_1466x872.webp 424w, https://substackcdn.com/image/fetch/$s_!id-I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305bf613-66b7-4474-8a1a-72379c3fc632_1466x872.webp 848w, https://substackcdn.com/image/fetch/$s_!id-I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305bf613-66b7-4474-8a1a-72379c3fc632_1466x872.webp 1272w, https://substackcdn.com/image/fetch/$s_!id-I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305bf613-66b7-4474-8a1a-72379c3fc632_1466x872.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!id-I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305bf613-66b7-4474-8a1a-72379c3fc632_1466x872.webp" width="1456" height="866" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/305bf613-66b7-4474-8a1a-72379c3fc632_1466x872.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:866,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:93008,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.ted.com/talks/dan_gilbert_the_surprising_science_of_happiness&quot;,&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_!id-I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305bf613-66b7-4474-8a1a-72379c3fc632_1466x872.webp 424w, https://substackcdn.com/image/fetch/$s_!id-I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305bf613-66b7-4474-8a1a-72379c3fc632_1466x872.webp 848w, https://substackcdn.com/image/fetch/$s_!id-I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305bf613-66b7-4474-8a1a-72379c3fc632_1466x872.webp 1272w, https://substackcdn.com/image/fetch/$s_!id-I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F305bf613-66b7-4474-8a1a-72379c3fc632_1466x872.webp 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>Have a great day!</p><p>-Steffen</p><p>P.S. You can reply to this email; it will get to me, and I will read it.</p>]]></content:encoded></item><item><title><![CDATA[Why Git Rebase is Only for Experts]]></title><description><![CDATA[A surefire way to get into trouble with Git is by using rebase. Messing up here is so common that developers who use rebase say they expect to make a mistake eventually. Before you know it, you're entering a world of pain, and getting out of trouble can prove very complicated.]]></description><link>https://www.icyiterations.com/p/why-git-rebase-is-only-for-experts</link><guid isPermaLink="false">https://www.icyiterations.com/p/why-git-rebase-is-only-for-experts</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Wed, 14 Feb 2024 13:32:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0398453-da89-4ce0-9714-87c2f307f977_2816x1584.webp" 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_!9yUC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0398453-da89-4ce0-9714-87c2f307f977_2816x1584.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9yUC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0398453-da89-4ce0-9714-87c2f307f977_2816x1584.webp 424w, https://substackcdn.com/image/fetch/$s_!9yUC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0398453-da89-4ce0-9714-87c2f307f977_2816x1584.webp 848w, https://substackcdn.com/image/fetch/$s_!9yUC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0398453-da89-4ce0-9714-87c2f307f977_2816x1584.webp 1272w, https://substackcdn.com/image/fetch/$s_!9yUC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0398453-da89-4ce0-9714-87c2f307f977_2816x1584.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9yUC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0398453-da89-4ce0-9714-87c2f307f977_2816x1584.webp" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a0398453-da89-4ce0-9714-87c2f307f977_2816x1584.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:113906,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&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="" srcset="https://substackcdn.com/image/fetch/$s_!9yUC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0398453-da89-4ce0-9714-87c2f307f977_2816x1584.webp 424w, https://substackcdn.com/image/fetch/$s_!9yUC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0398453-da89-4ce0-9714-87c2f307f977_2816x1584.webp 848w, https://substackcdn.com/image/fetch/$s_!9yUC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0398453-da89-4ce0-9714-87c2f307f977_2816x1584.webp 1272w, https://substackcdn.com/image/fetch/$s_!9yUC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0398453-da89-4ce0-9714-87c2f307f977_2816x1584.webp 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>A surefire way to get into trouble with Git is by using rebase. Messing up here is so common that developers who use rebase often say they expect to make a mistake eventually. Before you know it, you're entering a world of pain, and getting out of trouble can prove very complicated.</p><p>Last night, I was reading an excellent blog post by Julia Evans called&nbsp;<a href="https://jvns.ca/blog/2023/11/06/rebasing-what-can-go-wrong-/">Git Rebase: What Can Go Wrong?</a>&nbsp;In the post, Evans describes some of the most common problems you can encounter when rebasing and how to solve them. Some of these solutions may save you if (or when) you get into trouble.</p><p>Common problems include:</p><ul><li><p>Fixing the same conflict repeatedly is annoying</p></li><li><p>Rebasing a lot of commits is hard</p></li><li><p>Undoing a rebase is hard</p></li><li><p>Force pushing can cause lost work</p></li><li><p>Force pushing makes code review harder</p></li><li><p>Loosing commit metadata</p></li><li><p>More difficult reverts</p></li><li><p>Rebasing can break intermediate commits</p></li><li><p>Accidentally run git commit --amend instead of git rebase --continue</p></li><li><p>splitting commits in an interactive rebase is hard</p></li><li><p>rebasing long lived branches can be annoying</p></li><li><p>(and more!)</p></li></ul><p>All these pitfalls, and still, we keep rebasing. We keep getting into trouble because many Git beginner guides and HOWTOs frequently introduce rebase as a tool people should use far too early in their Git learning journey.</p><p>Another reason is that we care too much about having a neat and linear commit history.</p><p>Evans says it, too:</p><blockquote><p><em>I think the goal of rebase is to have a nice linear commit history, which is something I like.</em></p></blockquote><p>Rebase is a way to accomplish this, and because of that, developers tend to romanticise rebasing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://girliemac.com/blog/2017/12/26/git-purr/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QUP7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F389442f3-2d1f-421b-9bce-46ed09274978_1048x1072.webp 424w, https://substackcdn.com/image/fetch/$s_!QUP7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F389442f3-2d1f-421b-9bce-46ed09274978_1048x1072.webp 848w, https://substackcdn.com/image/fetch/$s_!QUP7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F389442f3-2d1f-421b-9bce-46ed09274978_1048x1072.webp 1272w, https://substackcdn.com/image/fetch/$s_!QUP7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F389442f3-2d1f-421b-9bce-46ed09274978_1048x1072.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QUP7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F389442f3-2d1f-421b-9bce-46ed09274978_1048x1072.webp" width="1048" height="1072" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/389442f3-2d1f-421b-9bce-46ed09274978_1048x1072.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1072,&quot;width&quot;:1048,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:110432,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://girliemac.com/blog/2017/12/26/git-purr/&quot;,&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_!QUP7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F389442f3-2d1f-421b-9bce-46ed09274978_1048x1072.webp 424w, https://substackcdn.com/image/fetch/$s_!QUP7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F389442f3-2d1f-421b-9bce-46ed09274978_1048x1072.webp 848w, https://substackcdn.com/image/fetch/$s_!QUP7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F389442f3-2d1f-421b-9bce-46ed09274978_1048x1072.webp 1272w, https://substackcdn.com/image/fetch/$s_!QUP7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F389442f3-2d1f-421b-9bce-46ed09274978_1048x1072.webp 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><figcaption class="image-caption">Git PURR! by Tomomi Imura</figcaption></figure></div><p>Git is built for concurrent and distributed workflows and does not care if history is linear. The bigger your team is, the more complex it becomes to make the commit history linear. Git rebase is a way of rewriting history. Like a time machine for your code base, it can move commits around and change the order of events. </p><p>Evans states that the goal of the "What can go wrong?" post isn't to convince anyone that rebase is bad and that you shouldn't use it. It is a potent tool in your tool belt, but as the&nbsp;<a href="https://en.wikipedia.org/wiki/With_great_power_comes_great_responsibility">Peter Parker Principle</a>&nbsp;says, with great power comes great responsibility. Most of us may have seen a movie or two involving time travel, but have you ever seen one where altering the space-time continuum is considered 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_!rtSe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a60b7b0-801e-49c2-a91b-afef8db537f4_926x499.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rtSe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a60b7b0-801e-49c2-a91b-afef8db537f4_926x499.webp 424w, https://substackcdn.com/image/fetch/$s_!rtSe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a60b7b0-801e-49c2-a91b-afef8db537f4_926x499.webp 848w, https://substackcdn.com/image/fetch/$s_!rtSe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a60b7b0-801e-49c2-a91b-afef8db537f4_926x499.webp 1272w, https://substackcdn.com/image/fetch/$s_!rtSe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a60b7b0-801e-49c2-a91b-afef8db537f4_926x499.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rtSe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a60b7b0-801e-49c2-a91b-afef8db537f4_926x499.webp" width="926" height="499" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a60b7b0-801e-49c2-a91b-afef8db537f4_926x499.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:499,&quot;width&quot;:926,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:71886,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&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_!rtSe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a60b7b0-801e-49c2-a91b-afef8db537f4_926x499.webp 424w, https://substackcdn.com/image/fetch/$s_!rtSe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a60b7b0-801e-49c2-a91b-afef8db537f4_926x499.webp 848w, https://substackcdn.com/image/fetch/$s_!rtSe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a60b7b0-801e-49c2-a91b-afef8db537f4_926x499.webp 1272w, https://substackcdn.com/image/fetch/$s_!rtSe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a60b7b0-801e-49c2-a91b-afef8db537f4_926x499.webp 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><figcaption class="image-caption">It&#8217;s a bad idea, McFly!</figcaption></figure></div><h3><strong>In Conclusion</strong></h3><p>My advice to developers is this: unless you're a Git expert, do not rebase. It's not necessary. Far too many developer hours have been lost attempting to avoid "ugly" commit graphs. Having a "clean" commit history is less important than you think.</p><p></p><div><hr></div><p>I'll leave you with&nbsp;<a href="https://www.youtube.com/shorts/Edd07BIet8w">this YouTube Short</a>&nbsp;from Prefab, where he explains how to configure your computer to play&nbsp;<em>Highway to the Danger Zone</em>&nbsp;whenever the rebase command is triggered.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.youtube.com/shorts/Edd07BIet8w" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!m2MB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1197922-23ca-45f4-9568-cdd9892ccbfb_984x1640.webp 424w, https://substackcdn.com/image/fetch/$s_!m2MB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1197922-23ca-45f4-9568-cdd9892ccbfb_984x1640.webp 848w, https://substackcdn.com/image/fetch/$s_!m2MB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1197922-23ca-45f4-9568-cdd9892ccbfb_984x1640.webp 1272w, https://substackcdn.com/image/fetch/$s_!m2MB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1197922-23ca-45f4-9568-cdd9892ccbfb_984x1640.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!m2MB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1197922-23ca-45f4-9568-cdd9892ccbfb_984x1640.webp" width="458" height="763.3333333333334" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1197922-23ca-45f4-9568-cdd9892ccbfb_984x1640.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1640,&quot;width&quot;:984,&quot;resizeWidth&quot;:458,&quot;bytes&quot;:123306,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.youtube.com/shorts/Edd07BIet8w&quot;,&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_!m2MB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1197922-23ca-45f4-9568-cdd9892ccbfb_984x1640.webp 424w, https://substackcdn.com/image/fetch/$s_!m2MB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1197922-23ca-45f4-9568-cdd9892ccbfb_984x1640.webp 848w, https://substackcdn.com/image/fetch/$s_!m2MB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1197922-23ca-45f4-9568-cdd9892ccbfb_984x1640.webp 1272w, https://substackcdn.com/image/fetch/$s_!m2MB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1197922-23ca-45f4-9568-cdd9892ccbfb_984x1640.webp 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><figcaption class="image-caption">Danger Zone!</figcaption></figure></div><p>Have a great day!</p><p>-Steffen</p><p>P.S. You can reply to this email; it will get to me, and I will read it.</p>]]></content:encoded></item><item><title><![CDATA[Self-Conscious Developers and Inner Bosses]]></title><description><![CDATA[In this issue: How do you build good-looking side projects and indie apps if you don't know anything about design? When it's just you, but you still want your app to look good. For many developers, what designers do feels like magic. Surely, it's not done on the fly as you go, right?]]></description><link>https://www.icyiterations.com/p/self-conscious-developers-and-inner</link><guid isPermaLink="false">https://www.icyiterations.com/p/self-conscious-developers-and-inner</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Tue, 30 Jan 2024 16:40:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec52042d-3256-4b1e-b7a2-5684fe03f6ac_900x476.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3><strong>In this issue:</strong></h3><ul><li><p>8 App Design Tips for Self-Conscious iOS Developers</p></li><li><p>The Productivity Paradox: Letting go of Your Inner Boss</p></li></ul><p></p><div><hr></div><h3><strong>8 App Design Tips for Self-Conscious iOS Developers</strong></h3><p>How do you build good-looking side projects and indie apps if you don't know anything about design? When it's just you, but you still want your app to look good. For many developers, what designers do feels like magic. Surely, it's not done on the fly as you go, right?</p><p>Building apps is hard enough.</p><h4><strong>Don't worry; here are 8 simple steps that will get you off to a great start:</strong></h4><ol><li><p><strong>Spend time with the system apps</strong>&nbsp;and Apple's other applications. Notice how they function and flow. This understanding is crucial in designing intuitive interfaces.</p></li><li><p><strong>Read the HIG</strong>. Apple publishes and maintains its&nbsp;<a href="https://developer.apple.com/design/human-interface-guidelines">Human Interface Guidelines</a>, packed with great advice, guidance, and best practices for how Apple thinks interfaces should work. The HIG is essential reading for anyone looking to develop on Apple's platforms.</p></li><li><p><strong>Sketch out a UI draft</strong>. Don't overthink it. Just draw an ugly napkin sketch. The less realistic, the better. One thing I've done a few times is to print out&nbsp;<a href="https://cdn.dribbble.com/users/12721/screenshots/3807611/attachments/859825/iphone-x-templates.pdf">this handy phone template</a>, which&nbsp;<a href="https://www.matthewstephens.com/">Matthew Stephens</a>, one of the founders of DeviantArt, shared back in the day.</p></li><li><p><strong>Use system components</strong>. SwiftUI (and UIKit) provides components for navigation, menus, layout, input, and more. If you find yourself looking for some element that doesn't exist, and you're considering building a new one, then that's a red flag that you're trying to do something too complicated.</p></li><li><p><strong>Use default padding and spacing</strong>, and be consistent across views. If your components are spaced differently from one screen to another, your design looks clumsy.</p></li><li><p><strong>Use system fonts</strong>, and only use the built-in text styles. Check how your app looks when using a larger text size. Remember that some 20-30% of users use larger-than-standard font sizes.</p></li><li><p><strong>Use SF symbols</strong>. Apple provides over 5000 icons and symbols that work seamlessly in all sizes.</p></li><li><p><strong>Colors: use as few as possible</strong>, and stick to the system colors like you did with the text styles.</p></li></ol><p>If you follow these steps, you will already be ahead of most other apps. Your app will be functional and fit well on the platform.</p><p>&#8203;Remember that all those well-designed apps that you're looking up to have been iterated on for a long time.</p><p></p><div><hr></div><h2><strong>The Productivity Paradox</strong></h2><p>I've been thinking a lot lately about how to get into a state of productivity. I have a near-infinite number of things I want to explore and work on; the list is not getting any shorter. Yet, frequently, I catch myself just daydreaming or staring blankly at the world (or the wall). Do you feel guilty when you're not productive? After quitting my job, I don't have a boss anymore, but often, it's like he's still there, telling me to hurry up. I have to keep reminding myself that it's okay to not do anything right now.</p><p>&#8203;<br>While trying to be productive, I read this great post by Ayon Bhattacharya called&nbsp;<a href="https://www.ayon.design/how-to-beat-creative-block-every-time/">How to beat creative block every time</a>, and I just wanted to quote him here because this speaks to me:</p><blockquote><p>It&#8217;s interesting that children rarely seem to have creative block. They don&#8217;t expect themselves to produce something spectacular. They&#8217;re just playing and having fun.</p><p>&#8203;To create quality work, you have to restore your sense of play. To restore your sense of play, you have to release expectations and get into the flow of the work.</p></blockquote><p>How do you get into&nbsp;<em>The Flow</em>?</p><p></p><div><hr></div><p>Speaking of&nbsp;<em>The Flow</em>, something else that spoke to me last night was this&nbsp;<a href="https://twitter.com/imkylelambert/status/1752022593102913793">Tweet by Kyle Lambert</a>&nbsp;about the&nbsp;<em>Focus Blast Radius</em>&nbsp;of meetings. I would sit at my desk between two meetings, staring at the wall, just waiting for the next one to begin.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://twitter.com/imkylelambert/status/1752022593102913793" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1JXO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0658a1-3c0b-4b25-ba4b-bd263cdb50ef_1396x1914.webp 424w, https://substackcdn.com/image/fetch/$s_!1JXO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0658a1-3c0b-4b25-ba4b-bd263cdb50ef_1396x1914.webp 848w, https://substackcdn.com/image/fetch/$s_!1JXO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0658a1-3c0b-4b25-ba4b-bd263cdb50ef_1396x1914.webp 1272w, https://substackcdn.com/image/fetch/$s_!1JXO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0658a1-3c0b-4b25-ba4b-bd263cdb50ef_1396x1914.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1JXO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0658a1-3c0b-4b25-ba4b-bd263cdb50ef_1396x1914.webp" width="1396" height="1914" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d0658a1-3c0b-4b25-ba4b-bd263cdb50ef_1396x1914.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1914,&quot;width&quot;:1396,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102370,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://twitter.com/imkylelambert/status/1752022593102913793&quot;,&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_!1JXO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0658a1-3c0b-4b25-ba4b-bd263cdb50ef_1396x1914.webp 424w, https://substackcdn.com/image/fetch/$s_!1JXO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0658a1-3c0b-4b25-ba4b-bd263cdb50ef_1396x1914.webp 848w, https://substackcdn.com/image/fetch/$s_!1JXO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0658a1-3c0b-4b25-ba4b-bd263cdb50ef_1396x1914.webp 1272w, https://substackcdn.com/image/fetch/$s_!1JXO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0658a1-3c0b-4b25-ba4b-bd263cdb50ef_1396x1914.webp 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>Finallly let me leave you with this&nbsp;<a href="https://twitter.com/Suhail/status/1750172410496897246">wisdom in tweet form, by Suhail</a>, the founder of Playground AI:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://twitter.com/Suhail/status/1750172410496897246" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EycP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec52042d-3256-4b1e-b7a2-5684fe03f6ac_900x476.jpeg 424w, https://substackcdn.com/image/fetch/$s_!EycP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec52042d-3256-4b1e-b7a2-5684fe03f6ac_900x476.jpeg 848w, https://substackcdn.com/image/fetch/$s_!EycP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec52042d-3256-4b1e-b7a2-5684fe03f6ac_900x476.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!EycP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec52042d-3256-4b1e-b7a2-5684fe03f6ac_900x476.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EycP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec52042d-3256-4b1e-b7a2-5684fe03f6ac_900x476.jpeg" width="900" height="476" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ec52042d-3256-4b1e-b7a2-5684fe03f6ac_900x476.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:476,&quot;width&quot;:900,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:25720,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:&quot;https://twitter.com/Suhail/status/1750172410496897246&quot;,&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_!EycP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec52042d-3256-4b1e-b7a2-5684fe03f6ac_900x476.jpeg 424w, https://substackcdn.com/image/fetch/$s_!EycP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec52042d-3256-4b1e-b7a2-5684fe03f6ac_900x476.jpeg 848w, https://substackcdn.com/image/fetch/$s_!EycP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec52042d-3256-4b1e-b7a2-5684fe03f6ac_900x476.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!EycP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec52042d-3256-4b1e-b7a2-5684fe03f6ac_900x476.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>Have a great day!</p><p>-Steffen</p><p>P.S. You can reply to this email; it will get to me, and I will read it.</p>]]></content:encoded></item><item><title><![CDATA[Journaling Journeys and CI Conundrums]]></title><description><![CDATA[The first thing I do in the morning when I open my Mac is start a new journal entry in&#160;Obsidian. I add to it whenever I see, read, or think of something interesting. Obsidian is tremendously powerful. I've been journaling like this since ~2020, and I have a lot of notes in there.]]></description><link>https://www.icyiterations.com/p/journaling-journeys-and-ci-conundrums</link><guid isPermaLink="false">https://www.icyiterations.com/p/journaling-journeys-and-ci-conundrums</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Fri, 15 Dec 2023 17:55:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9abfd1e-680b-4498-a508-019fc4d5f2a8_2732x1626.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3><strong>In this issue</strong></h3><ul><li><p>I've Forgotten More Than You'll Ever Know</p></li><li><p>Should Solo Developers Use Continuous Integration?</p></li></ul><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!L2GX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9abfd1e-680b-4498-a508-019fc4d5f2a8_2732x1626.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!L2GX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9abfd1e-680b-4498-a508-019fc4d5f2a8_2732x1626.webp 424w, https://substackcdn.com/image/fetch/$s_!L2GX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9abfd1e-680b-4498-a508-019fc4d5f2a8_2732x1626.webp 848w, https://substackcdn.com/image/fetch/$s_!L2GX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9abfd1e-680b-4498-a508-019fc4d5f2a8_2732x1626.webp 1272w, https://substackcdn.com/image/fetch/$s_!L2GX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9abfd1e-680b-4498-a508-019fc4d5f2a8_2732x1626.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!L2GX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9abfd1e-680b-4498-a508-019fc4d5f2a8_2732x1626.webp" width="1456" height="867" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b9abfd1e-680b-4498-a508-019fc4d5f2a8_2732x1626.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:867,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:94014,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&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="" srcset="https://substackcdn.com/image/fetch/$s_!L2GX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9abfd1e-680b-4498-a508-019fc4d5f2a8_2732x1626.webp 424w, https://substackcdn.com/image/fetch/$s_!L2GX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9abfd1e-680b-4498-a508-019fc4d5f2a8_2732x1626.webp 848w, https://substackcdn.com/image/fetch/$s_!L2GX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9abfd1e-680b-4498-a508-019fc4d5f2a8_2732x1626.webp 1272w, https://substackcdn.com/image/fetch/$s_!L2GX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9abfd1e-680b-4498-a508-019fc4d5f2a8_2732x1626.webp 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">My notes in Obsidian's Graph View</figcaption></figure></div><blockquote><p>I've forgotten more than you'll ever know </p><p>- Unknown</p></blockquote><p>The first thing I do in the morning when I open my Mac is start a new journal entry in&nbsp;<a href="https://obsidian.md/">Obsidian</a>. I add to it whenever I see, read, or think of something interesting. Obsidian is tremendously powerful. I've been journaling like this since ~2020, and I have a lot of notes in there.</p><p>Today, I fell into a rabbit hole again. I was thinking about whether or not I should write down some "purpose" for this newsletter and perhaps even&nbsp;<a href="https://icyiterations.com/">my blog</a>. Who is this for, and who am I serving? Then I remembered Paul Graham's legendary blog post,&nbsp;<a href="http://www.paulgraham.com/identity.html">Keep Your Identity Small</a>, arguing not to. I quickly found the note about this in my Obsidian vault, and inside that note, I had also written down a link to a post by Derek Sivers about&nbsp;<a href="https://sive.rs/nowff">The Now Page Movement</a>. In this post, Sivers encourages adding a "<em>/now</em>" page to your blog, where you state what you are into right now. I am trying to remember writing this down, but there it is. Obsidian didn't say when I wrote it, but then I thought - there must be a plugin for this!</p><p>A quick search later, and I am installing the&nbsp;<a href="https://obsidian.md/plugins?id=update-time-on-edit">Update Time on Edit</a>&nbsp;plugin for Obsidian. After doing so I now have "Created:" and "Updated:" fields in the Front Matter of all my notes! I can tell that this note about Graham's post is from January 2021, and I updated it with the note about the Now Page Movement in September 2021.</p><p>Now I need a&nbsp;<em>Now</em>&nbsp;Page!</p><p>I have yet to conclude on any purpose or who to serve, but that's rabbit holes for you.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IO1C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e55d48-9ace-418f-abae-270aee69f0d1_2210x848.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IO1C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e55d48-9ace-418f-abae-270aee69f0d1_2210x848.webp 424w, https://substackcdn.com/image/fetch/$s_!IO1C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e55d48-9ace-418f-abae-270aee69f0d1_2210x848.webp 848w, https://substackcdn.com/image/fetch/$s_!IO1C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e55d48-9ace-418f-abae-270aee69f0d1_2210x848.webp 1272w, https://substackcdn.com/image/fetch/$s_!IO1C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e55d48-9ace-418f-abae-270aee69f0d1_2210x848.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IO1C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e55d48-9ace-418f-abae-270aee69f0d1_2210x848.webp" width="1456" height="559" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05e55d48-9ace-418f-abae-270aee69f0d1_2210x848.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:559,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:993752,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&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_!IO1C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e55d48-9ace-418f-abae-270aee69f0d1_2210x848.webp 424w, https://substackcdn.com/image/fetch/$s_!IO1C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e55d48-9ace-418f-abae-270aee69f0d1_2210x848.webp 848w, https://substackcdn.com/image/fetch/$s_!IO1C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e55d48-9ace-418f-abae-270aee69f0d1_2210x848.webp 1272w, https://substackcdn.com/image/fetch/$s_!IO1C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e55d48-9ace-418f-abae-270aee69f0d1_2210x848.webp 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>Should solo developers use continuous integration?</strong></h3><p>You might have heard about Continuous Integration/Delivery in software development. I'm referring to it as just CI, for shortness's sake.</p><p>CI is something that teams in companies use to automate their testing and release processes, catch bugs, and ensure they don't depend on single developers to make builds and releases. CI systems can be incredibly complex and expensive, and some software companies have teams dedicated to running and optimizing these systems.</p><p>For solo developers, is it worth the overhead?</p><p>The short answer is that you don't need this stuff. For indies, solo devs, or someone with a side project, the time saved isn't likely to add up to more than the time it took to do the CI setup. Independent developers usually build and upload a version from their laptop whenever needed, which takes little time.</p><p>There is a longer answer, though. Although you don't need it, it can still be advantageous. The first thing I do after creating a new project is set up the CI. Setting up CI is quick and easy these days, and if you've never done it before, I recommend doing so to learn how to do it. It doesn't take so long that it isn't worth the learning experience.</p><p>The other day,&nbsp;<a href="https://developer.apple.com/news/?id=ik9z4ll6">Apple announced</a>&nbsp;that starting January 2024, your Apple Developer Program membership includes an Xcode Cloud subscription at no additional cost. Every small iOS developer now has a "free" CI system. This is huge news, so make sure you take advantage of it!</p><p>The benefits of CI are smaller for individuals than for teams, but they are more than worth it. You'll know that the project works on another machine or for someone else, and it'll tell you if you forgot to check in a file or made a test fail. If you want to develop using a beta version or some other IDE, you can do so on your machine without affecting your ability to release. All you need to do is git push, and it will get built correctly "in the cloud."</p><p>Earlier this fall, I wanted to make an update to an app of mine that I hadn't updated in a while. When I attempted to build the project, it spewed numerous errors. What was going on? The app was OK the last time I worked on 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_!CEUY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00831211-a5a1-4e9e-81a8-956e042b3832_1856x1044.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CEUY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00831211-a5a1-4e9e-81a8-956e042b3832_1856x1044.webp 424w, https://substackcdn.com/image/fetch/$s_!CEUY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00831211-a5a1-4e9e-81a8-956e042b3832_1856x1044.webp 848w, https://substackcdn.com/image/fetch/$s_!CEUY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00831211-a5a1-4e9e-81a8-956e042b3832_1856x1044.webp 1272w, https://substackcdn.com/image/fetch/$s_!CEUY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00831211-a5a1-4e9e-81a8-956e042b3832_1856x1044.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CEUY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00831211-a5a1-4e9e-81a8-956e042b3832_1856x1044.webp" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/00831211-a5a1-4e9e-81a8-956e042b3832_1856x1044.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:156686,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&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_!CEUY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00831211-a5a1-4e9e-81a8-956e042b3832_1856x1044.webp 424w, https://substackcdn.com/image/fetch/$s_!CEUY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00831211-a5a1-4e9e-81a8-956e042b3832_1856x1044.webp 848w, https://substackcdn.com/image/fetch/$s_!CEUY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00831211-a5a1-4e9e-81a8-956e042b3832_1856x1044.webp 1272w, https://substackcdn.com/image/fetch/$s_!CEUY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00831211-a5a1-4e9e-81a8-956e042b3832_1856x1044.webp 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><figcaption class="image-caption">Which version of Xcode do you want it built with?</figcaption></figure></div><p>What had happened was the march of time and progress. While this project sat still, I had an updated Mac and a more recent version of Xcode. The code needed to be updated. Fortunately, I had set up CI on this project, so I could hop in there and try building on multiple older versions of Xcode until I found one that worked. After that, it was just a matter of downloading that working version, fixing all warnings, and updating all dependencies, and I was back in business!</p><p>You don't need CI, but for iOS developers in particular, it is now both simple to set up and free, and having it may be more helpful than you think.</p><p>-Steffen</p><p>P.S. You can reply to this email; it will get to me, and I will read it.</p>]]></content:encoded></item><item><title><![CDATA[Gitonium Black Friday Sale 🖤]]></title><description><![CDATA[I just wanted to let you know that Gitonium is now available at a 50% discount on the Mac App Store.]]></description><link>https://www.icyiterations.com/p/gitonium-black-friday-sale</link><guid isPermaLink="false">https://www.icyiterations.com/p/gitonium-black-friday-sale</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Fri, 24 Nov 2023 15:54:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!A-Gj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f672f3-9893-40ba-9738-c7ec35edf84c_2967x2113.png" 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://apps.apple.com/us/app/git-commit-merge-gitonium/id1603003585?mt=12" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!A-Gj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f672f3-9893-40ba-9738-c7ec35edf84c_2967x2113.png 424w, https://substackcdn.com/image/fetch/$s_!A-Gj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f672f3-9893-40ba-9738-c7ec35edf84c_2967x2113.png 848w, https://substackcdn.com/image/fetch/$s_!A-Gj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f672f3-9893-40ba-9738-c7ec35edf84c_2967x2113.png 1272w, https://substackcdn.com/image/fetch/$s_!A-Gj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f672f3-9893-40ba-9738-c7ec35edf84c_2967x2113.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!A-Gj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f672f3-9893-40ba-9738-c7ec35edf84c_2967x2113.png" width="1456" height="1037" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48f672f3-9893-40ba-9738-c7ec35edf84c_2967x2113.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1037,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:307277,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://apps.apple.com/us/app/git-commit-merge-gitonium/id1603003585?mt=12&quot;,&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="" srcset="https://substackcdn.com/image/fetch/$s_!A-Gj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f672f3-9893-40ba-9738-c7ec35edf84c_2967x2113.png 424w, https://substackcdn.com/image/fetch/$s_!A-Gj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f672f3-9893-40ba-9738-c7ec35edf84c_2967x2113.png 848w, https://substackcdn.com/image/fetch/$s_!A-Gj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f672f3-9893-40ba-9738-c7ec35edf84c_2967x2113.png 1272w, https://substackcdn.com/image/fetch/$s_!A-Gj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48f672f3-9893-40ba-9738-c7ec35edf84c_2967x2113.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>I just wanted to let you know that Gitonium is now <a href="https://apps.apple.com/us/app/git-commit-merge-gitonium/id1603003585?mt=12">available at a 50% discount</a> on the Mac App Store. Get your copy for Black Friday or Cyber Monday. The fine folks at&nbsp;<a href="https://twitter.com/GitKraken/status/1727373666210488677">GitKraken called it</a>&nbsp;a&nbsp;<em>must-have tool for developers</em>. &#128081;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://twitter.com/GitKraken/status/1727373666210488677" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sjXK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67e96bcf-0d4f-4c7f-8abf-d60ade5bccff_1320x706.webp 424w, https://substackcdn.com/image/fetch/$s_!sjXK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67e96bcf-0d4f-4c7f-8abf-d60ade5bccff_1320x706.webp 848w, https://substackcdn.com/image/fetch/$s_!sjXK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67e96bcf-0d4f-4c7f-8abf-d60ade5bccff_1320x706.webp 1272w, https://substackcdn.com/image/fetch/$s_!sjXK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67e96bcf-0d4f-4c7f-8abf-d60ade5bccff_1320x706.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sjXK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67e96bcf-0d4f-4c7f-8abf-d60ade5bccff_1320x706.webp" width="1320" height="706" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/67e96bcf-0d4f-4c7f-8abf-d60ade5bccff_1320x706.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:706,&quot;width&quot;:1320,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:83864,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://twitter.com/GitKraken/status/1727373666210488677&quot;,&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_!sjXK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67e96bcf-0d4f-4c7f-8abf-d60ade5bccff_1320x706.webp 424w, https://substackcdn.com/image/fetch/$s_!sjXK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67e96bcf-0d4f-4c7f-8abf-d60ade5bccff_1320x706.webp 848w, https://substackcdn.com/image/fetch/$s_!sjXK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67e96bcf-0d4f-4c7f-8abf-d60ade5bccff_1320x706.webp 1272w, https://substackcdn.com/image/fetch/$s_!sjXK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67e96bcf-0d4f-4c7f-8abf-d60ade5bccff_1320x706.webp 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 have some personal news, too. I recently decided to resign as iOS Tech Lead at TIDAL/Block. It has been a 10+ year-long roller coaster ride, but it's time for something different. Can I make it on my own? I don't know yet, but I do know I will have much more time to dedicate to Gitonium from now on.<br></p><p>Thanks for following along!</p><p>&#8203;</p><p>Steffen.</p>]]></content:encoded></item><item><title><![CDATA[🎢 Hyphens, Hurdles, and Hope: How Gitonium Finally Made it Live]]></title><description><![CDATA[In my previous newsletter, I wrote that I was getting near a point where I could ship this app, except there was always one more remaining feature I wanted to build first.]]></description><link>https://www.icyiterations.com/p/hyphens-hurdles-and-hope-how-gitonium</link><guid isPermaLink="false">https://www.icyiterations.com/p/hyphens-hurdles-and-hope-how-gitonium</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Sat, 19 Aug 2023 15:16:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!MwHg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c74560-c299-4669-a26f-c512611dcb90_1456x816.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_!MwHg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c74560-c299-4669-a26f-c512611dcb90_1456x816.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MwHg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c74560-c299-4669-a26f-c512611dcb90_1456x816.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MwHg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c74560-c299-4669-a26f-c512611dcb90_1456x816.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MwHg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c74560-c299-4669-a26f-c512611dcb90_1456x816.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MwHg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c74560-c299-4669-a26f-c512611dcb90_1456x816.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MwHg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c74560-c299-4669-a26f-c512611dcb90_1456x816.jpeg" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a4c74560-c299-4669-a26f-c512611dcb90_1456x816.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:116312,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MwHg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c74560-c299-4669-a26f-c512611dcb90_1456x816.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MwHg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c74560-c299-4669-a26f-c512611dcb90_1456x816.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MwHg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c74560-c299-4669-a26f-c512611dcb90_1456x816.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MwHg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c74560-c299-4669-a26f-c512611dcb90_1456x816.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><figcaption class="image-caption">An app developer on a roller coaster</figcaption></figure></div><p>In my&nbsp;previous newsletter, I wrote that I was getting near a point where I could ship this app, except there was always one more remaining feature I wanted to build first. Then I slept on it and decided there wasn't any good reason why I couldn't just submit it. I will keep working on it anyway. Why not put it out in the world?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!27fZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5226157c-528d-402e-a7b2-af832694f56c_1644x1268.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!27fZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5226157c-528d-402e-a7b2-af832694f56c_1644x1268.webp 424w, https://substackcdn.com/image/fetch/$s_!27fZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5226157c-528d-402e-a7b2-af832694f56c_1644x1268.webp 848w, https://substackcdn.com/image/fetch/$s_!27fZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5226157c-528d-402e-a7b2-af832694f56c_1644x1268.webp 1272w, https://substackcdn.com/image/fetch/$s_!27fZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5226157c-528d-402e-a7b2-af832694f56c_1644x1268.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!27fZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5226157c-528d-402e-a7b2-af832694f56c_1644x1268.webp" width="428" height="330.1126373626374" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5226157c-528d-402e-a7b2-af832694f56c_1644x1268.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1123,&quot;width&quot;:1456,&quot;resizeWidth&quot;:428,&quot;bytes&quot;:60212,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&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_!27fZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5226157c-528d-402e-a7b2-af832694f56c_1644x1268.webp 424w, https://substackcdn.com/image/fetch/$s_!27fZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5226157c-528d-402e-a7b2-af832694f56c_1644x1268.webp 848w, https://substackcdn.com/image/fetch/$s_!27fZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5226157c-528d-402e-a7b2-af832694f56c_1644x1268.webp 1272w, https://substackcdn.com/image/fetch/$s_!27fZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5226157c-528d-402e-a7b2-af832694f56c_1644x1268.webp 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><figcaption class="image-caption">Why not follow the advice of these two indie legends?</figcaption></figure></div><p>So on that faithful Thursday night, I said, "screw it," and submitted Gitonium. It didn't take long for it to go into review.</p><p>I went to bed that night feeling a mixture of relief and excitement. The following day I was still in review. At lunchtime - still in review. It has been a long time since I submitted a new app to the App Store. And that was only on the iOS app store. It's my first time on the Mac app store, so how long would it take? I told myself this could take a few days even.</p><p>&#8203;When I went to bed that night, it was still in review. Next morning: same thing. I decided to busy myself working on the next update. I found a crash and eventually tracked it down. It would crash whenever it tried to syntax highlight more than 69 hyphens in a row. I better fix this so that when I get approved, I'll submit this crash fix immediately. This took me a couple of evenings to figure out and fix.</p><p>&#8203;Each morning and afternoon, I checked if I was still in review, and I was. After being in review for five days, I felt increasingly uneasy. Will I ever go out of review? I began searching for and finding horror stories about developers who submitted their apps to Apple and never got approved. Is there something about my app they don't like or approve of? If so, why won't they tell me? Days passed.</p><p>&#8203;After 7 days of review, I talked to some friends and filled out Apple's Expedited Review Form, hoping that might get me unstuck. I submitted the expedite request and got a response that my request was granted. I went to bed hopeful. I woke up on the morning of the 8th day and found my app was still in review. Evening came - still in review. A few more days passed. On the 11th day of being in app review, I asked ChatGPT for suggestions for why an app could be stuck in review and got an intriguing response.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6dAM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5686526-62b7-4193-8c23-9351143baba7_1678x522.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6dAM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5686526-62b7-4193-8c23-9351143baba7_1678x522.webp 424w, https://substackcdn.com/image/fetch/$s_!6dAM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5686526-62b7-4193-8c23-9351143baba7_1678x522.webp 848w, https://substackcdn.com/image/fetch/$s_!6dAM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5686526-62b7-4193-8c23-9351143baba7_1678x522.webp 1272w, https://substackcdn.com/image/fetch/$s_!6dAM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5686526-62b7-4193-8c23-9351143baba7_1678x522.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6dAM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5686526-62b7-4193-8c23-9351143baba7_1678x522.webp" width="1456" height="453" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e5686526-62b7-4193-8c23-9351143baba7_1678x522.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:453,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:64234,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&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_!6dAM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5686526-62b7-4193-8c23-9351143baba7_1678x522.webp 424w, https://substackcdn.com/image/fetch/$s_!6dAM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5686526-62b7-4193-8c23-9351143baba7_1678x522.webp 848w, https://substackcdn.com/image/fetch/$s_!6dAM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5686526-62b7-4193-8c23-9351143baba7_1678x522.webp 1272w, https://substackcdn.com/image/fetch/$s_!6dAM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5686526-62b7-4193-8c23-9351143baba7_1678x522.webp 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><figcaption class="image-caption">Make sure your app fully complies with the guidelines.</figcaption></figure></div><p><em>Make sure your app fully complies with the guidelines.</em>&nbsp;What guideline could I be bumping up against? I spent an eternity combing through the rules, looking for a possible reason.</p><p>In the end, I found two rules that one could interpret in such a way:</p><blockquote><p>- 3.1.1a Apps may not use their own mechanisms to unlock content or functionality, such as license keys</p><p>- 2.4.5(vi) Apps may not present a license screen at launch, require license keys, or (...)</p></blockquote><p>I have one feature in Gitonium that needs an API key: the automatic commit messages. It uses openAI's API and artificial intelligence to analyze the code and its changes, which costs money. I want to avoid paying a monthly bill because my users are making commits. For one person, it's cheap - like cents per month, but it could add up if enough people use it. That's why I designed the feature so users can bring their own OpenAI API key. Could Apple want me to make this an in-app purchase? Was that why I'm stuck in review? I'd prefer not to have to do that. Here you buy this app, and immediately you must pay a dollar or whatever to use one of its features. I would be nickel-and-diming people.</p><p>A few more days passed, and I was still in review. After 13 days of being in review, I resigned to my fate and began implementing in-app purchases for this. It would be a lot of work for something that feels like a worse user experience.</p><p>&#8203;On day 14 in review, right before bed, I posted&nbsp;<a href="https://twitter.com/starv/status/1692294000152092948">a tweet</a>&nbsp;saying that I'd been in review for two whole weeks, and one person replied that he had been in review for more than 2 months!&#128576; (Hi Xavier!&#128075;) </p><p>That's terrifying!</p><p>I went to bed thinking about in-app purchases and token counting.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jaH0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a49c6f8-723a-46b7-88aa-266f70e5d61c_1158x1159.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jaH0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a49c6f8-723a-46b7-88aa-266f70e5d61c_1158x1159.webp 424w, https://substackcdn.com/image/fetch/$s_!jaH0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a49c6f8-723a-46b7-88aa-266f70e5d61c_1158x1159.webp 848w, https://substackcdn.com/image/fetch/$s_!jaH0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a49c6f8-723a-46b7-88aa-266f70e5d61c_1158x1159.webp 1272w, https://substackcdn.com/image/fetch/$s_!jaH0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a49c6f8-723a-46b7-88aa-266f70e5d61c_1158x1159.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jaH0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a49c6f8-723a-46b7-88aa-266f70e5d61c_1158x1159.webp" width="1158" height="1159" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a49c6f8-723a-46b7-88aa-266f70e5d61c_1158x1159.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1159,&quot;width&quot;:1158,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:49010,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&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_!jaH0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a49c6f8-723a-46b7-88aa-266f70e5d61c_1158x1159.webp 424w, https://substackcdn.com/image/fetch/$s_!jaH0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a49c6f8-723a-46b7-88aa-266f70e5d61c_1158x1159.webp 848w, https://substackcdn.com/image/fetch/$s_!jaH0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a49c6f8-723a-46b7-88aa-266f70e5d61c_1158x1159.webp 1272w, https://substackcdn.com/image/fetch/$s_!jaH0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a49c6f8-723a-46b7-88aa-266f70e5d61c_1158x1159.webp 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><figcaption class="image-caption">Gitonium is approved!&#127881;</figcaption></figure></div><p>The following day, I woke up to this on my phone. OMG, it's approved!&#127881; What is happening? Did someone from Apple see my tweet? Is this just randomness? The stochastic world?</p><p>I quickly clicked the release button, and now Gitonium is live on the App Store! Wow! I'm relieved I didn't have to go the in-app purchase route.</p><p>&#8203;That, my friends, is how Gitonium ended up on the App Store. It's a one-time purchase of $39.99, and because it's the Mac App Store, you can use it on as many Macs as you want, forever. You can find it on the&nbsp;<a href="https://apps.apple.com/us/app/git-commit-merge-gitonium/id1603003585?mt=12">App Store here</a>.</p><p>&#8203;I've since submitted my 69-hyphens-crash fix, which was reviewed and approved in less than two hours!</p><p>I use Gitonium daily in my day job, and many more features and improvements are coming soon. Next time I'll talk about some of them.</p><p>&#8203;Thanks for following along!</p><p>&#8203;</p><p>Steffen.</p>]]></content:encoded></item><item><title><![CDATA[Breeze through merge conflicts]]></title><description><![CDATA[It's time for an update on Gitonium. In the previous issue, I wrote that the merge functionality needed some work before being ready for testing. Well, I'm happy to say that it's ready now. Want to hear me pitch it? Okay, let's go!]]></description><link>https://www.icyiterations.com/p/breeze-through-merge-conflicts</link><guid isPermaLink="false">https://www.icyiterations.com/p/breeze-through-merge-conflicts</guid><dc:creator><![CDATA[Steffen Finsland]]></dc:creator><pubDate>Sun, 30 Jul 2023 13:26:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1d92a-5c1c-4080-a11a-fe7f7aa20560_692x692.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It's time for an update on Gitonium. In the previous issue, I wrote that the merge functionality needed some work before being ready for testing. Well, I'm happy to say that it's ready now. Want to hear me pitch it? Okay, let's go!</p><p>Have you ever needed to merge a long-living feature into the main repository? You may have been working on a new feature for a long time, and now it's time to integrate it with the Main branch. While you were off coding on your part, someone else may have changed some code in the same places as you, or perhaps they did some refactoring and removed a function that you had modified on your branch.</p><p>It could be even worse, too: you're merging branches that other developers on the team have worked on. You have to understand both sides of every conflict to solve this safely. You need to know who changed what, when, and why. Git knows, but it isn't helping. Gitonium makes it easy.</p><p>The purpose of Gitonium is to give you complete situational awareness when merging code. You'll step through the merge process, conflict by conflict, in a focused manner. Gitonium shows you the conflicting code and every Commit leading up to it on either side, starting from where the conflicting file diverged, letting you see who changed it, when, and why.&#8203;</p><p>Gitonium saves you time, so you can merge your code and continue your day. You have more creative things to do, like actually building something. Be done with the administrative busywork and get back to making stuff.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://gitonium.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rX2d!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ba1d4e-c802-4344-870c-1ac099c0f469_2376x1430.png 424w, https://substackcdn.com/image/fetch/$s_!rX2d!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ba1d4e-c802-4344-870c-1ac099c0f469_2376x1430.png 848w, https://substackcdn.com/image/fetch/$s_!rX2d!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ba1d4e-c802-4344-870c-1ac099c0f469_2376x1430.png 1272w, https://substackcdn.com/image/fetch/$s_!rX2d!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ba1d4e-c802-4344-870c-1ac099c0f469_2376x1430.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rX2d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ba1d4e-c802-4344-870c-1ac099c0f469_2376x1430.png" width="1456" height="876" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/63ba1d4e-c802-4344-870c-1ac099c0f469_2376x1430.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:876,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:912299,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://gitonium.com&quot;,&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="" srcset="https://substackcdn.com/image/fetch/$s_!rX2d!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ba1d4e-c802-4344-870c-1ac099c0f469_2376x1430.png 424w, https://substackcdn.com/image/fetch/$s_!rX2d!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ba1d4e-c802-4344-870c-1ac099c0f469_2376x1430.png 848w, https://substackcdn.com/image/fetch/$s_!rX2d!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ba1d4e-c802-4344-870c-1ac099c0f469_2376x1430.png 1272w, https://substackcdn.com/image/fetch/$s_!rX2d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63ba1d4e-c802-4344-870c-1ac099c0f469_2376x1430.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><figcaption class="image-caption"></figcaption></figure></div><h2><strong>How to test Gitonium</strong></h2><p>If you haven't already, you can install the latest Gitonium Beta using this TestFlight link: <a href="https://apps.apple.com/us/app/git-commit-merge-gitonium/id1603003585?mt=12">Update: Gitonium is now in the App Store</a></p><p>Please keep suggesting things to improve (reply to this email).</p><p>&#8203;I feel like I'm getting near the point where I could ship this now.</p><p>I'm already using it myself, which was my goal when I started making it. To quote from my&nbsp;first newsletter:</p><div class="pullquote"><p>This project will succeed because my only definition of failure would be if I end up not using the app myself.</p></div><p>So what's the matter, McFly? If you&#8217;re already happily using it, why not just put it in the App Store?</p><p>I guess I'm scared to.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!J0Aa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1d92a-5c1c-4080-a11a-fe7f7aa20560_692x692.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!J0Aa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1d92a-5c1c-4080-a11a-fe7f7aa20560_692x692.jpeg 424w, https://substackcdn.com/image/fetch/$s_!J0Aa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1d92a-5c1c-4080-a11a-fe7f7aa20560_692x692.jpeg 848w, https://substackcdn.com/image/fetch/$s_!J0Aa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1d92a-5c1c-4080-a11a-fe7f7aa20560_692x692.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!J0Aa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1d92a-5c1c-4080-a11a-fe7f7aa20560_692x692.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!J0Aa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1d92a-5c1c-4080-a11a-fe7f7aa20560_692x692.jpeg" width="692" height="692" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2de1d92a-5c1c-4080-a11a-fe7f7aa20560_692x692.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:692,&quot;width&quot;:692,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:57973,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!J0Aa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1d92a-5c1c-4080-a11a-fe7f7aa20560_692x692.jpeg 424w, https://substackcdn.com/image/fetch/$s_!J0Aa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1d92a-5c1c-4080-a11a-fe7f7aa20560_692x692.jpeg 848w, https://substackcdn.com/image/fetch/$s_!J0Aa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1d92a-5c1c-4080-a11a-fe7f7aa20560_692x692.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!J0Aa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1d92a-5c1c-4080-a11a-fe7f7aa20560_692x692.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><figcaption class="image-caption">What's the matter, McFly?</figcaption></figure></div><p></p>]]></content:encoded></item></channel></rss>