<?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[Effective Android]]></title><description><![CDATA[One of the most popular newsletters about Android development. I write the content I’d want to read. Complex concepts explained in easy terms.]]></description><link>https://newsletter.jorgecastillo.dev</link><image><url>https://substackcdn.com/image/fetch/$s_!WRki!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ca654b5-2f3a-4c94-8faf-31819bc1e396_1024x1024.png</url><title>Effective Android</title><link>https://newsletter.jorgecastillo.dev</link></image><generator>Substack</generator><lastBuildDate>Sat, 04 Apr 2026 09:07:13 GMT</lastBuildDate><atom:link href="https://newsletter.jorgecastillo.dev/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Jorge Castillo]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[effectiveandroid@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[effectiveandroid@substack.com]]></itunes:email><itunes:name><![CDATA[Jorge Castillo]]></itunes:name></itunes:owner><itunes:author><![CDATA[Jorge Castillo]]></itunes:author><googleplay:owner><![CDATA[effectiveandroid@substack.com]]></googleplay:owner><googleplay:email><![CDATA[effectiveandroid@substack.com]]></googleplay:email><googleplay:author><![CDATA[Jorge Castillo]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Introducing Compose Loaders: a curated collection of copy-paste animated loaders for Jetpack Compose 🌀]]></title><description><![CDATA[A few days ago I stumbled upon a sick loading animation someone built for React&#8230; so I decided to port it to Jetpack Compose.]]></description><link>https://newsletter.jorgecastillo.dev/p/introducing-compose-loaders-a-curated</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/introducing-compose-loaders-a-curated</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Fri, 03 Apr 2026 13:37:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/upload/w_1028,c_limit,q_auto:best/aqrmbkynjkeuhakrtwx8" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A few days ago I stumbled upon a sick loading animation someone built for React&#8230; so I decided to port it to Jetpack Compose. After that, I thought that it would be nice to port all the loading animations from that page and turn them into copy-paste Compose components anyone can use for free.</p><p>That&#8217;s how Compose Loaders was born.</p><p>Grab them here:<br><a href="https://composeinternals.com/composeloaders">https://composeinternals.com/composeloaders</a> &#128640;</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;352c7cf9-c531-479b-98e4-d0d67d446fc8&quot;,&quot;duration&quot;:null}"></div><p>Take a moment to share this tweet if you want to help me reach more people. This project is 100% free. Enjoy and thanks!</p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/JorgeCastilloPr/status/2040025335610179695?s=20&quot;,&quot;full_text&quot;:&quot;I ported the fancy loaders to Jetpack Compose.\n\nCopy. Paste into your project. Done &#128640;&quot;,&quot;username&quot;:&quot;JorgeCastilloPr&quot;,&quot;name&quot;:&quot;Jorge Castillo&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1628365726896496640/F5RPsLFz_normal.jpg&quot;,&quot;date&quot;:&quot;2026-04-03T11:15:16.000Z&quot;,&quot;photos&quot;:[{&quot;img_url&quot;:&quot;https://substackcdn.com/image/upload/w_1028,c_limit,q_auto:best/l_twitter_play_button_rvaygk,w_88/aqrmbkynjkeuhakrtwx8&quot;,&quot;link_url&quot;:&quot;https://t.co/uTlFCvq83q&quot;}],&quot;quoted_tweet&quot;:{&quot;full_text&quot;:&quot;I achieved this effect and added some other mathematical curve animations. https://t.co/qh3dWJmeVI&quot;,&quot;username&quot;:&quot;xin_pai88825&quot;,&quot;name&quot;:&quot;Paidax&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1747877404532776960/uUTVQ-2P_normal.jpg&quot;},&quot;reply_count&quot;:2,&quot;retweet_count&quot;:1,&quot;like_count&quot;:22,&quot;impression_count&quot;:1499,&quot;expanded_url&quot;:null,&quot;video_url&quot;:&quot;https://video.twimg.com/amplify_video/2040025135688867840/vid/avc1/1120x720/puOqorK9nkoVyTHw.mp4&quot;,&quot;belowTheFold&quot;:false}" data-component-name="Twitter2ToDOM"></div>]]></content:encoded></item><item><title><![CDATA[A Claude Skill to Generate Professional App Store Screenshots ❤️‍🔥]]></title><description><![CDATA[I built a Claude Code skill that generates production ready screenshots for your app and deploys them to a powerful online editor so you can iterate as much as you want.]]></description><link>https://newsletter.jorgecastillo.dev/p/a-claude-skill-to-generate-professional</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/a-claude-skill-to-generate-professional</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Mon, 23 Mar 2026 15:20:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/upload/w_1028,c_limit,q_auto:best/meavwcuxjeh2bg9rrph0" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I built a Claude Code skill that generates production ready screenshots for your app and deploys them to a powerful online editor so you can iterate as much as you want. It works for any other code agents that support skills.</p><p>I&#8217;m pretty happy about this one! so wanted to share it with you.</p><p>Feel free to use it and give me some feedback, it will be really appreciated &#10084;&#65039;&#8205;&#128293;&#128588;</p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/JorgeCastilloPr/status/2036090078280274239?s=20&quot;,&quot;full_text&quot;:&quot;App Store screenshots shouldn&#8217;t take hours.\n\nI built a Claude Code Skill that generates production ready screenshots for your app and deploys them to a powerful online editor so you can iterate as much as you want &#10084;&#65039;&#8205;&#128293;\n\nJust pull it into your project and go. &quot;,&quot;username&quot;:&quot;JorgeCastilloPr&quot;,&quot;name&quot;:&quot;Jorge Castillo&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1628365726896496640/F5RPsLFz_normal.jpg&quot;,&quot;date&quot;:&quot;2026-03-23T14:37:58.000Z&quot;,&quot;photos&quot;:[{&quot;img_url&quot;:&quot;https://substackcdn.com/image/upload/w_1028,c_limit,q_auto:best/l_twitter_play_button_rvaygk,w_88/meavwcuxjeh2bg9rrph0&quot;,&quot;link_url&quot;:&quot;https://t.co/Ads467hEcw&quot;}],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:2,&quot;retweet_count&quot;:1,&quot;like_count&quot;:2,&quot;impression_count&quot;:310,&quot;expanded_url&quot;:null,&quot;video_url&quot;:&quot;https://video.twimg.com/amplify_video/2036087608254849024/vid/avc1/1110x720/nSLLpN3JycFC-qek.mp4&quot;,&quot;belowTheFold&quot;:false}" data-component-name="Twitter2ToDOM"></div>]]></content:encoded></item><item><title><![CDATA[The Droid Club: An exclusive private AI tinkering community for Android devs ⛏️🤖]]></title><description><![CDATA[I created this limited community for Android devs who want to step forward, explore AI, build tools and automations, and not be left behind. It is time to take action.]]></description><link>https://newsletter.jorgecastillo.dev/p/the-droid-club-an-exclusive-private</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/the-droid-club-an-exclusive-private</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Sat, 14 Mar 2026 18:30:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6g9i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7777cc29-3df7-4a20-a93d-05146f4c6e96_2516x1174.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_!6g9i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7777cc29-3df7-4a20-a93d-05146f4c6e96_2516x1174.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6g9i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7777cc29-3df7-4a20-a93d-05146f4c6e96_2516x1174.png 424w, https://substackcdn.com/image/fetch/$s_!6g9i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7777cc29-3df7-4a20-a93d-05146f4c6e96_2516x1174.png 848w, https://substackcdn.com/image/fetch/$s_!6g9i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7777cc29-3df7-4a20-a93d-05146f4c6e96_2516x1174.png 1272w, https://substackcdn.com/image/fetch/$s_!6g9i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7777cc29-3df7-4a20-a93d-05146f4c6e96_2516x1174.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6g9i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7777cc29-3df7-4a20-a93d-05146f4c6e96_2516x1174.png" width="1456" height="679" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7777cc29-3df7-4a20-a93d-05146f4c6e96_2516x1174.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:679,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:72102,&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://newsletter.jorgecastillo.dev/i/190935017?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7777cc29-3df7-4a20-a93d-05146f4c6e96_2516x1174.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_!6g9i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7777cc29-3df7-4a20-a93d-05146f4c6e96_2516x1174.png 424w, https://substackcdn.com/image/fetch/$s_!6g9i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7777cc29-3df7-4a20-a93d-05146f4c6e96_2516x1174.png 848w, https://substackcdn.com/image/fetch/$s_!6g9i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7777cc29-3df7-4a20-a93d-05146f4c6e96_2516x1174.png 1272w, https://substackcdn.com/image/fetch/$s_!6g9i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7777cc29-3df7-4a20-a93d-05146f4c6e96_2516x1174.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><h1>Why I created it</h1><p>Every week there&#8217;s a new AI model, a new tool, a new workflow. It&#8217;s really exciting but also very overwhelming. It&#8217;s easy to fall into analysis paralysis and spend more time reading about AI than actually using it.</p><p>That was my feeling too, so I decided to create a small limited community where we can stay focused on learning and building. Think of it like a study group. A group of people interested in the same thing, sharing ideas and projects. When you narrow the scope and have people to experiment with, it becomes much easier to stay focused and start moving. We can call this &#8220;hyper focus&#8221;.</p><p>This is why <a href="http://thedroid.club">thedroid.club</a> exists. It is a closed Discord community of Android devs tinkering with AI to become more proficient, and build tools that push the entire ecosystem forward. </p><p>It&#8217;s limited to 500 members. Seats open in batches of 50, and the price goes up with every batch. Keeping it small makes it easier to control the pace, the projects, and the initiatives inside the community.</p><div class="pullquote"><p><strong>AI is reshaping how software gets built. Most Android devs are watching. Many are afraid of being left behind or losing their jobs to AI. A few are using this as a great opportunity to learn, build, and improve.</strong></p></div><p>The Droid Club is a closed, invite-level Discord community for Android developers who want to explore, tinker, and create with AI. The people inside are building the tools, workflows, and experiments that will define what Android development looks like next.</p><p><strong>The product is the people.</strong> Direct access to developers who are as obsessed with this intersection as you are. No fluff channels, no lurker armies. A war room where every member is here to play, build, and push things forward.</p><h2><strong>&#9888;&#65039; Hard-capped at 500 members. Sold in batches of 50</strong></h2><p>Each batch has a fixed price. When it sells out, the next opens higher. <strong>The price you see now is the lowest it will ever be.</strong> Once all 500 spots are claimed, the door closes. No exceptions.</p><ul><li><p><strong>Founding 50 - $99 - 12/50</strong><em><strong>&#9203;</strong></em></p></li><li><p>Batch 2 - $129 -<strong> </strong><em>Next</em></p></li><li><p>Batch 3 - $149 - <em>Next</em></p></li><li><p>Batch 4<em> </em>- $179 - <em>Next</em></p></li><li><p>Batch 5 - $199 - Next</p></li><li><p>Batch 6 - $229 - Next</p></li><li><p>Batch 7 - $259 - Next</p></li><li><p>Batch 8 - $299 - Next</p></li><li><p>Batch 9 - $349 - Final</p></li></ul><h2><strong>What you get:</strong></h2><ul><li><p><strong>Lifetime access to the private Discord</strong>: A curated room of Android devs exploring AI models, creating tooling, skills, MCP integrations, prompts, automation, GitHub actions, code generation, and literally anything we find interesting.</p></li><li><p><strong>Free license to GreenClaw</strong> (<a href="http://greenclaw.io">greenclaw.io</a>): included with your membership &#129438; put your old Android devices to work!</p></li><li><p><strong>Periodic community activities</strong>: Brainstorming calls, live builds, experiments, teardowns, and collaborative sessions organized by and for members.</p></li><li><p><strong>Direct access to the people who are figuring this out</strong>: The aim is to get a high quality group of people interested on this topic. Use this chance to get in. Ask questions, share discoveries, find collaborators, get unstuck. The value is in the conversations you can&#8217;t have anywhere else.</p></li><li><p><strong>Where the cool kids are:</strong> I&#8217;ll gradually invite some familiar names from the Android community. You&#8217;ll have direct access to them and get to build with them.</p></li></ul><h2><strong>Who this is for:</strong></h2><p>Experienced Android developers who are genuinely curious about AI and want to tinker, not just watch. You don&#8217;t need AI experience, you need the drive to explore and build alongside people doing the same.</p><h2><strong>Who this is NOT for:</strong></h2><p>People looking for a course or passive content. This is a community. You get out what you put in.</p><p><strong>One payment. Lifetime access. No subscription.</strong></p><p>Early batches get the best deal. Each sold-out batch raises the price for everyone who comes after. There are no discount codes, no sales, no &#8220;wait for a deal.&#8221; What you see right now is the cheapest it will ever be.</p><p><strong>500 Android devs building the future of the craft with AI. Use your chance to get in, or get left behind.</strong></p><p><strong><a href="http://thedroid.club">Join thedroid.club</a> &#129514;</strong></p>]]></content:encoded></item><item><title><![CDATA[Get 12 testers for 14 days for FREE - Introducing get12testers.com 🧪]]></title><description><![CDATA[A platform where Android devs help other Android devs to overcome this hard requirement from the Google Play console.]]></description><link>https://newsletter.jorgecastillo.dev/p/get-12-testers-for-14-days-for-free</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/get-12-testers-for-14-days-for-free</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Sat, 14 Mar 2026 13:57:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ljlT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd483f52-0603-478e-90c8-ebf4462823da_2400x1260.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_!ljlT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd483f52-0603-478e-90c8-ebf4462823da_2400x1260.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ljlT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd483f52-0603-478e-90c8-ebf4462823da_2400x1260.png 424w, https://substackcdn.com/image/fetch/$s_!ljlT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd483f52-0603-478e-90c8-ebf4462823da_2400x1260.png 848w, https://substackcdn.com/image/fetch/$s_!ljlT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd483f52-0603-478e-90c8-ebf4462823da_2400x1260.png 1272w, https://substackcdn.com/image/fetch/$s_!ljlT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd483f52-0603-478e-90c8-ebf4462823da_2400x1260.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ljlT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd483f52-0603-478e-90c8-ebf4462823da_2400x1260.png" width="1456" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd483f52-0603-478e-90c8-ebf4462823da_2400x1260.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:784718,&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://newsletter.jorgecastillo.dev/i/190934091?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd483f52-0603-478e-90c8-ebf4462823da_2400x1260.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_!ljlT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd483f52-0603-478e-90c8-ebf4462823da_2400x1260.png 424w, https://substackcdn.com/image/fetch/$s_!ljlT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd483f52-0603-478e-90c8-ebf4462823da_2400x1260.png 848w, https://substackcdn.com/image/fetch/$s_!ljlT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd483f52-0603-478e-90c8-ebf4462823da_2400x1260.png 1272w, https://substackcdn.com/image/fetch/$s_!ljlT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd483f52-0603-478e-90c8-ebf4462823da_2400x1260.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>This new Google Play requirement is a big showstopper. Getting 12 real testers to test your app for 14 days continuously is not an easy matter, especially if you don&#8217;t have a big audience.</p><p>But <strong>Google enforces this to publish any app to production now</strong>.</p><p>Since this is a hard blocker, I decided to try to solve it and created a platform to do it for free. You test apps from others, and in return you get credits to list your app and get it tested. Everyone wins. Android devs healping each other to meet this requirement &#10084;&#65039;&#8205;&#128293;</p><p>The way it works:</p><ul><li><p>You sign up and join the tester list for any app listed.</p></li><li><p>You test the app for 14 days. There are 5 checkpoints where you need to give feedback, one every few days.</p></li><li><p>App owner rates your feedback, you get some credits back (4 per checkpoint, 20 per app fully tested).</p></li><li><p>Listing your own app costs 60 credits, so testing 3 apps gets you there.</p></li><li><p>You can test multiple apps at the same time, so you can earn enough in a single 14-day cycle.</p></li><li><p>At the end you get a full report with a guide to apply to production.</p></li></ul><p>The feedback is actually useful too. It&#8217;s organized by feature and checkpoint day, so when you go to fill out Google&#8217;s production access form, you have real numbers and specifics to reference instead of making stuff up.</p><p>We also generate pre-filled answers for that form based on your testing data, so you can just copy and paste them in the Google Play console form when applying to production.</p><p>Feel free to give it a test <a href="https://get12testers.com/">get12testers.com</a>. Since it is completely free and based on the credit system, all I ask for in return is some feedback. Let&#8217;s improve this platform together &#129782;</p><p>Jorge.</p>]]></content:encoded></item><item><title><![CDATA[ScreenshotWhale big price drop (temporary)]]></title><description><![CDATA[Available first for subscribers of this newsletter and the Discord community]]></description><link>https://newsletter.jorgecastillo.dev/p/screenshotwhale-big-price-drop-temporary</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/screenshotwhale-big-price-drop-temporary</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Mon, 02 Feb 2026 18:30:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!gyOU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36e3db1-5c49-4fc7-a267-52f80c36e746_2240x1260.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_!gyOU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36e3db1-5c49-4fc7-a267-52f80c36e746_2240x1260.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gyOU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36e3db1-5c49-4fc7-a267-52f80c36e746_2240x1260.png 424w, https://substackcdn.com/image/fetch/$s_!gyOU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36e3db1-5c49-4fc7-a267-52f80c36e746_2240x1260.png 848w, https://substackcdn.com/image/fetch/$s_!gyOU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36e3db1-5c49-4fc7-a267-52f80c36e746_2240x1260.png 1272w, https://substackcdn.com/image/fetch/$s_!gyOU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36e3db1-5c49-4fc7-a267-52f80c36e746_2240x1260.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gyOU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36e3db1-5c49-4fc7-a267-52f80c36e746_2240x1260.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d36e3db1-5c49-4fc7-a267-52f80c36e746_2240x1260.png&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;:1847249,&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://newsletter.jorgecastillo.dev/i/186616971?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36e3db1-5c49-4fc7-a267-52f80c36e746_2240x1260.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_!gyOU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36e3db1-5c49-4fc7-a267-52f80c36e746_2240x1260.png 424w, https://substackcdn.com/image/fetch/$s_!gyOU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36e3db1-5c49-4fc7-a267-52f80c36e746_2240x1260.png 848w, https://substackcdn.com/image/fetch/$s_!gyOU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36e3db1-5c49-4fc7-a267-52f80c36e746_2240x1260.png 1272w, https://substackcdn.com/image/fetch/$s_!gyOU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd36e3db1-5c49-4fc7-a267-52f80c36e746_2240x1260.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>Hey folks &#128075;</p><p>Quick personal share with you all, because this community genuinely means a lot to me.</p><p>I&#8217;ve just decided to <strong>drop the price of ScreenshotWhale by 50%</strong>, probably for a limited time. I&#8217;m not doing a big public push yet. I wanted to mention it <strong>here first</strong>, because you&#8217;re the people I actually care about getting value from it.</p><p>I built ScreenshotWhale because I kept hitting the same wall myself:<br>I love building apps, but screenshots always felt like a chore. I wanted something that helps devs ship <strong>clean, consistent App Store / Play Store screenshots</strong> without needing design skills or a designer.</p><p>If you&#8217;re working on an app, shipping something soon, or just tired of wrestling with screenshots, this might genuinely help you:<br>&#128073; <a href="https://screenshotwhale.com">https://screenshotwhale.com</a></p><p>No pressure at all. Just wanted to share it with you because this community has always been supportive, thoughtful, and honestly one of the best groups of Android devs I know &#10084;&#65039;</p><p>If you try it, I&#8217;d <em>love</em> to hear what you think.</p>]]></content:encoded></item><item><title><![CDATA[I love building apps. Designing App Store screenshots not that much 😅]]></title><description><![CDATA[Most developers don&#8217;t have a designer eye, and that&#8217;s completely okay.]]></description><link>https://newsletter.jorgecastillo.dev/p/i-love-building-apps-designing-app</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/i-love-building-apps-designing-app</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Thu, 22 Jan 2026 18:30:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iX6h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff2dd28-db96-4fd1-83a4-1bc3d5c031db_2240x1260.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_!iX6h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff2dd28-db96-4fd1-83a4-1bc3d5c031db_2240x1260.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iX6h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff2dd28-db96-4fd1-83a4-1bc3d5c031db_2240x1260.png 424w, https://substackcdn.com/image/fetch/$s_!iX6h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff2dd28-db96-4fd1-83a4-1bc3d5c031db_2240x1260.png 848w, https://substackcdn.com/image/fetch/$s_!iX6h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff2dd28-db96-4fd1-83a4-1bc3d5c031db_2240x1260.png 1272w, https://substackcdn.com/image/fetch/$s_!iX6h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff2dd28-db96-4fd1-83a4-1bc3d5c031db_2240x1260.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iX6h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff2dd28-db96-4fd1-83a4-1bc3d5c031db_2240x1260.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7ff2dd28-db96-4fd1-83a4-1bc3d5c031db_2240x1260.png&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;:1847249,&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://newsletter.jorgecastillo.dev/i/185402816?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff2dd28-db96-4fd1-83a4-1bc3d5c031db_2240x1260.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_!iX6h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff2dd28-db96-4fd1-83a4-1bc3d5c031db_2240x1260.png 424w, https://substackcdn.com/image/fetch/$s_!iX6h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff2dd28-db96-4fd1-83a4-1bc3d5c031db_2240x1260.png 848w, https://substackcdn.com/image/fetch/$s_!iX6h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff2dd28-db96-4fd1-83a4-1bc3d5c031db_2240x1260.png 1272w, https://substackcdn.com/image/fetch/$s_!iX6h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ff2dd28-db96-4fd1-83a4-1bc3d5c031db_2240x1260.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>Most developers don&#8217;t have a designer eye, and that&#8217;s completely okay. I&#8217;ve seen this in many devs that I had the chance to work with in the past. I also suffer from that a little bit.</p><p>Personally I enjoy building products, thinking about architecture, performance, testing, automations, user flows, design patterns... and what not. But design has never been my best strength. I&#8217;m probably a more technical type of dev.</p><p>When the time comes to create App Store or Play Store screenshots, this gap shows quickly, and makes me waste so much time. My problem is not effort or care, I can tell you that. It is rather a mix of a lack of design skills, experience working on design, and some guidance.</p><p>I recently found myself actively thinking about how to solve / shortcut this problem more often. So unsurprisingly, I decided to build a brand new product &#128584;</p><p>I felt that gap is precisely where a drag and drop editor with bootstrapping features would start to make sense. It is much easier when you have a quick way to kick off your screenshots and start from a much more polished / professional point.</p><p>This product started as something I created for myself. I added an online screenshot editor with support for several screen ratios and form factors (including weareables), and I used it to create some templates. then I added those as an entry point to the platform, so whenever I needed screenshots for a new app I would just grab one of the templates and start iterating from there.</p><p>After that, I added support for AI powered generation, so you could grab your in-app screenshots and generate a fully working project in the editor using some predefined layouts (text above and mockup device below, text below with mockup device above, etc). That gave me speed without losing any control, since I could iterate on them after generation.</p><p>The product evolved so fast. I kept adding more templates and features, which allowed me to create even better / more professional templates later on. I also added automatic internationalization to the project.</p><p>At this point it just made sense to open it to the public. I gave templates a price, added subscriptions, and added some FREE templates so users could try the product for free and decide later if they wanted to pay for access to all templates and more powerful features.</p><p>I wasn&#8217;t trying to design something beautiful or perfect from scratch, but rather something functional and helpful. I was playing, having fun while building, and just working on features that help me avoid my most common mistakes.</p><p>Turns out creating this platform made a significant difference for me. Screenshots became way quicker and more consistent / better looking. Updates were easier too, streamlined. I could iterate without second guessing every decision, and without much trial and error anymore.</p><p>Anyway, the platform already made its first 100 users &#129395; which I am very proud of. And this is just the beginning!</p><p>If you want to try it, you can find it in <strong><a href="http://ScreenshotWhale.com">ScreenshotWhale.com</a></strong> and pick one of the FREE templates to start. Let me know what you think!</p><p>P.S: Sometimes you don&#8217;t need to become good at something, just have the right tools!</p>]]></content:encoded></item><item><title><![CDATA[Shortcutting the App Store screenshot generation process for forever (expiring 50% discount)]]></title><description><![CDATA[Removing the final bottleneck for vibe coders building mobile apps &#128640;]]></description><link>https://newsletter.jorgecastillo.dev/p/shortcutting-the-app-store-screenshot</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/shortcutting-the-app-store-screenshot</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Mon, 12 Jan 2026 12:27:37 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/184305853/618bf70ace8571b208e0d36841b333dd.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Shipping apps has never been faster than today. Most mobile developers already vibe code their apps in a matter of days, not months or years anymore. The world of app development is changing for good, and we must adapt.</p><p>That sounds great and motivating, but one big bottleneck still remains: <strong>App Store Screenshots</strong>.</p><p>Creating professional high-converting screenshots for the stores is a thoughtful process that requires some design skills, lots of time and later iteration, especially if you want to support multiple languages. It is still a distracting process from what matters most for you: shipping and validating your product in the open.</p><p>For that reason I have added <strong>SmartShots AI</strong> to <a href="http://screenshotwhale.com">ScreenshotWhale</a> <em>(&#127909; <strong>Watch the video above</strong> to see it in action)</em></p><p>SmartShots AI lets you generate high-quality App Store screenshots <strong>with a single click </strong>in a matter of seconds, and you keep full control after generation: It adds the generated screenshots to a new project that you can iterate on whenever you want.</p><p>You just upload your screenshots, click generate, and let the platform do all the heavy lifting.</p><h3>&#127757; Automatic AI-powered internationalization</h3><p>Your screenshots are localized automatically during export, helping you reach global users without extra effort. This can also be a huge time saver.</p><h3>Subscription update</h3><p>SmartShots AI is included in the <strong>monthly subscription</strong>, which is now available as an alternative to the lifetime plan. Save some precious time and focus on what matters most: shipping.</p><h3>50% COUPON FOREVER &#128293;&#128184;</h3><p>Use the coupon <strong>EFFANDROID50</strong> to subscribe with a <strong>50% discount</strong> to the platform. Save some money and start shipping today, no more excuses!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://screenshotwhale.com&quot;,&quot;text&quot;:&quot;Subscribe with a 50% discount&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://screenshotwhale.com"><span>Subscribe with a 50% discount</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[🎅 Big Xmas discounts for Jetpack Compose Internals (book+course) and The Manifest Android Interivew]]></title><description><![CDATA[It's that time of the year again &#129395; let's celebrate together]]></description><link>https://newsletter.jorgecastillo.dev/p/big-xmas-discounts-for-jetpack-compose</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/big-xmas-discounts-for-jetpack-compose</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Mon, 22 Dec 2025 11:38:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!WRki!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ca654b5-2f3a-4c94-8faf-31819bc1e396_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>The Manifest Android Interview &#128587;</h3><p>Ace your next Android job interviews in 2026, focus on truly understanding the concepts, not just memorizing answers, and practicing how to apply them. With 108 interview questions, 162 additional practical questions, and 50+ pro tips, this book helps you sharpen skills, understand the why, and prepare for real-world technical challenges.</p><p><a href="https://leanpub.com/manifest-android-interview/c/EeHMLAk6N8b0">Get it here with a big discount until XMas day!</a></p><h3>Jetpack Compose Internals cohort course &#128104;&#8205;&#127979;</h3><p>Award-winning Jetpack Compose course &#11088;&#65039;&#11088;&#65039;&#11088;&#65039;&#11088;&#65039;&#11088;&#65039; </p><p>Master Compose internals, advanced techniques, best practices. Created and delivered by Jorge Castillo: Disney+ engineer, ex-Twitter (X), author of the Jetpack Compose Internals book. Jorge has led several Compose initiatives on big tech companies.</p><p><strong>Includes the Jetpack Compose Internals book for FREE.</strong></p><p><a href="https://effectiveandroid.gumroad.com/l/dfedea/ddwoioz">Get it here with a big discount until XMas day!</a></p><h3>Jetpack Compose internals book &#128214;</h3><p>The most known Compose book out there. This is the only book that lets you deeply understand Compose by diving into its internals. An absolute game changer. Master how Compose works internally and become a more efficient developer with it. This book provides all the details to understand how the Compose compiler &amp; runtime work, and how to create a client library using them.</p><p><a href="https://leanpub.com/composeinternals/c/aOYJp9JV9ct7">Get it here with a huge discount until XMas day!</a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Manifest Android Interview 30% OFF and full Compose Stability Inference guide written by Jaewoong Eum 🔥]]></title><description><![CDATA[Exclusive price and resources for the newsletter subscribers only]]></description><link>https://newsletter.jorgecastillo.dev/p/manifest-android-interview-30-off</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/manifest-android-interview-30-off</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Fri, 17 Oct 2025 18:01:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!rCdR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F770b1c74-2015-485d-a16e-24eae1caf9fd_1536x1024.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_!rCdR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F770b1c74-2015-485d-a16e-24eae1caf9fd_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rCdR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F770b1c74-2015-485d-a16e-24eae1caf9fd_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!rCdR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F770b1c74-2015-485d-a16e-24eae1caf9fd_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!rCdR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F770b1c74-2015-485d-a16e-24eae1caf9fd_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!rCdR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F770b1c74-2015-485d-a16e-24eae1caf9fd_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rCdR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F770b1c74-2015-485d-a16e-24eae1caf9fd_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/770b1c74-2015-485d-a16e-24eae1caf9fd_1536x1024.png&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;:2001827,&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://newsletter.jorgecastillo.dev/i/176400691?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F770b1c74-2015-485d-a16e-24eae1caf9fd_1536x1024.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_!rCdR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F770b1c74-2015-485d-a16e-24eae1caf9fd_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!rCdR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F770b1c74-2015-485d-a16e-24eae1caf9fd_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!rCdR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F770b1c74-2015-485d-a16e-24eae1caf9fd_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!rCdR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F770b1c74-2015-485d-a16e-24eae1caf9fd_1536x1024.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 like sharing high quality and exclusive learning resources that go beyond surface-level tutorials. Whenever creators in the Android community release something truly valuable, I try to bring it to you early and for a cheap price. Often with special discounts or insider access. This week is one of those moments! &#128588;</p><p><strong>30% off for up to 50 people</strong><br>&#128073; <a href="https://leanpub.com/manifest-android-interview/c/DbnjFsH5t1s2">https://leanpub.com/manifest-android-interview/c/DbnjFsH5t1s2</a></p><p><strong>What the book gives you</strong><br>108 interview questions, 162 extra practical questions, and 50+ pro tips. The goal is to understand Android concepts deeply, not just memorize answers. It helps you sharpen your thinking and prepare for real-world technical challenges. Absolutely worth a read!</p><p><strong>New project: Compose Stability Inference</strong><br>This is Jaewoong&#8217;s latest deep dive into how the Compose compiler determines type stability to optimize recomposition. Repo: <a href="https://github.com/skydoves/compose-stability-inference">https://github.com/skydoves/compose-stability-inference</a></p><p>This one is an absolutely masterpiece full of knowledge, I promise.</p><p><strong>Highlights at a glance</strong></p><ul><li><p>Full stability type system</p></li><li><p>Decision trees and inference algorithms used by the compiler</p></li><li><p>Bitmask encoding and <code>$stable</code> field generation for generics</p></li><li><p>Compiler phases that influence skipping and performance</p></li><li><p>Reports, configuration files, and annotations to inspect and control stability</p></li><li><p>Case studies for data classes, generics, interfaces, and inheritance</p></li><li><p><code>@Stable</code> vs <code>@Immutable</code> explained with real performance implications</p></li></ul><p>If you want to level up both your <strong>Android interview prep</strong> and <strong>Compose performance knowledge</strong>, grab the discount and give the repo a &#11088;</p><p>This post is a great chance to expand on some of the class stability inference topics we discussed in the <a href="https://leanpub.com/composeinternals">Jetpack Compose Internals</a> book.</p><p>Enjoy these awesome resources! </p><p>Jorge.</p>]]></content:encoded></item><item><title><![CDATA[How I Wrote a Tech Book Without Finishing It First]]></title><description><![CDATA[A lot of Android developers tell me they&#8217;ve thought about writing a technical book.]]></description><link>https://newsletter.jorgecastillo.dev/p/how-i-wrote-a-tech-book-without-finishing</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/how-i-wrote-a-tech-book-without-finishing</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Tue, 30 Sep 2025 17:30:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iXRw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897357ba-b9b4-4a20-bdc7-a0fd4163b493_1536x1024.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_!iXRw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897357ba-b9b4-4a20-bdc7-a0fd4163b493_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iXRw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897357ba-b9b4-4a20-bdc7-a0fd4163b493_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!iXRw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897357ba-b9b4-4a20-bdc7-a0fd4163b493_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!iXRw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897357ba-b9b4-4a20-bdc7-a0fd4163b493_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!iXRw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897357ba-b9b4-4a20-bdc7-a0fd4163b493_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iXRw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897357ba-b9b4-4a20-bdc7-a0fd4163b493_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/897357ba-b9b4-4a20-bdc7-a0fd4163b493_1536x1024.png&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;:null,&quot;alt&quot;:&quot;How I Wrote a Tech Book Without Finishing It First&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="How I Wrote a Tech Book Without Finishing It First" title="How I Wrote a Tech Book Without Finishing It First" srcset="https://substackcdn.com/image/fetch/$s_!iXRw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897357ba-b9b4-4a20-bdc7-a0fd4163b493_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!iXRw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897357ba-b9b4-4a20-bdc7-a0fd4163b493_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!iXRw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897357ba-b9b4-4a20-bdc7-a0fd4163b493_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!iXRw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F897357ba-b9b4-4a20-bdc7-a0fd4163b493_1536x1024.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>A lot of Android developers tell me they&#8217;ve thought about writing a technical book. Almost all of them also say they never found the bravery to start.</p><p>I know exactly how that feels. When I first thought about writing <a href="https://composeinternals.com/book">Jetpack Compose Internals</a>, the doubts were all there: &#8220;I don&#8217;t have enough time,&#8221; &#8220;What if no one buys it?&#8221;, &#8220;I should probably wait until it&#8217;s perfect.&#8221;. Imposter syndrome was all over the place too. All those doubts refrained me from starting.</p><h2>Publishing Before It Was Finished</h2><p>The problem was, Compose 1.0 stable was around the corner. If I wanted my book to matter, it had to be out that same day. There was just one issue: <strong>the book was barely started</strong>.</p><p>Instead of following the &#8220;normal&#8221; path of disappearing for months to write a complete manuscript, I decided to publish early. Really early. The idea was simple: release the first version with only part of the book written, then update it gradually. Every time I published new chapters, readers would automatically receive them. I only needed to find a platform that would allow me to do that, and that was <a href="https://leanpub.com/composeinternals">Leanpub</a>.</p><p>This decision solved two critical problems:</p><p>1. I could launch on time, right when Compose was making its big splash.</p><p>2. I would know immediately whether people actually wanted the book.</p><h2>Immediate Validation</h2><p>Publishing half a book felt risky. But it was the right decision. As soon as I put it out there, sales started coming in. That was the clearest validation I could get. Developers didn&#8217;t just tell me they were interested, they proved it by paying for it. That is particularly important since public opinion and comments can be very misleading, and often not reflective of the actual demand. People often comment just to engage.</p><p>I was able to surf the Compose release wave and got a lot of early traction. That early response gave me the energy to keep going. I had people waiting for the next chapters, which turned writing into a cycle of feedback, updates, and momentum.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!J9TZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4904b9cd-c4df-4386-b412-6fe29f2053de_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!J9TZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4904b9cd-c4df-4386-b412-6fe29f2053de_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!J9TZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4904b9cd-c4df-4386-b412-6fe29f2053de_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!J9TZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4904b9cd-c4df-4386-b412-6fe29f2053de_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!J9TZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4904b9cd-c4df-4386-b412-6fe29f2053de_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!J9TZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4904b9cd-c4df-4386-b412-6fe29f2053de_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4904b9cd-c4df-4386-b412-6fe29f2053de_1920x1080.png&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;:null,&quot;alt&quot;:&quot;Course revenue screenshot showing $200k total revenue from Jetpack Compose course sales&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Course revenue screenshot showing $200k total revenue from Jetpack Compose course sales" title="Course revenue screenshot showing $200k total revenue from Jetpack Compose course sales" srcset="https://substackcdn.com/image/fetch/$s_!J9TZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4904b9cd-c4df-4386-b412-6fe29f2053de_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!J9TZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4904b9cd-c4df-4386-b412-6fe29f2053de_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!J9TZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4904b9cd-c4df-4386-b412-6fe29f2053de_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!J9TZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4904b9cd-c4df-4386-b412-6fe29f2053de_1920x1080.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>Launching at the Right Moment</h2><p>On the exact day Compose 1.0 stable was released, <a href="https://composeinternals.com/book">Jetpack Compose Internals</a> was out too. That timing made all the difference. Developers were hungry to understand how this new framework worked under the hood, and the book was there to fill that need.</p><p><strong>The revenue numbers:</strong></p><ul><li><p>- Around <strong>$15k in the first month</strong></p></li><li><p>- Later stabilizing at around <strong>$2k per month</strong></p></li><li><p>- Even today it still makes <strong>$500 to $1k</strong> depending on promotion</p></li><li><p>- Total revenue around <strong>$70k</strong> today</p></li></ul><p>This is how tech books normally behave. You can be lucky to get a viral boost at launch, especially if you have a good strategy and timming. Maybe some months after if too. But after that, it&#8217;s down to consistent promotion and SEO. If you stop talking about it, people simply stop buying. That is something that I have learned during this journey.</p><p>But the real win was not only the money. It was the credibility, visibility, and trust that came from putting something useful into the hands of the community. I could really grow myself into an authority on the topic, while I was also learning deeper and deeper about it. That also paid off with <a href="https://composeinternals.com/how-i-made-side-income-from-jetpack-compose">the course</a>, where I could expand the content and go deeper into all the topics.</p><h2>Not working with a publisher</h2><p>I also chose not to work with a publisher. That would have slowed me down, taken away all control, and cut too deeply into the revenue. I wanted to cut all possible edges and take full control of the process. Only that way I could ensure that it was released right in time, that the challenge was worth it, and that I would be able to keep it up for the long term. Something to note here is that this was only possible because I already had a big audience and a lot of trust from the community. Otherwise distribution would have been a huge challenge.</p><p>By handling it myself, I decided on the timing, the pricing, the positioning, and also the updates. It was more effort, but it meant I owned the whole process.</p><h2>What Other Developers Can Take Away</h2><p>If you&#8217;ve been thinking about writing a book but never started, here&#8217;s what my experience taught me:</p><p><strong>You don&#8217;t need to wait until it&#8217;s finished.</strong> Start small and build it in public. Every step and every bit of knowledge you share compounds.</p><p><strong>You don&#8217;t need to be perfect.</strong> Readers value progress, but especially honesty. As long as you are clear about it not being finished, people will still jump in if the content is worth it.</p><p><strong>You don&#8217;t need to ask for permission.</strong> You can take full control of the process if you want to.</p><p><strong>What really matters is timing.</strong> Catch the right wave and ride it.</p><h2>Final Thoughts</h2><p>Writing a book sounds overwhelming, but it doesn&#8217;t have to be. You don&#8217;t need to lock yourself away for a year to produce a polished masterpiece. That would actually be a poor business decision. Any project needs to be validated early on, before investing too much time into it.</p><p>You can release early, validate demand right away, and grow it step by step while readers come along for the journey. You will gather feedback and be able to iterate on the content as you go, aligning it much better with the actual demand.</p><p>That is how I wrote <strong><a href="https://composeinternals.com/book">Jetpack Compose Internals</a></strong>. And if you have been hesitating to write your own book, maybe this is the approach you need too.</p><p><strong>The bravery comes after you start, not before.</strong> Just start. You will learn a lot by doing it, and the process will get easier as you go. Our brains are wired to learn by doing, not by reading. Analysis paralysis fades away as soon as you start.</p>]]></content:encoded></item><item><title><![CDATA[Coded a little sass to help me generate store app screenshots quick 🚀]]></title><description><![CDATA[Some words for the people who joined the newsletter these days.]]></description><link>https://newsletter.jorgecastillo.dev/p/coded-a-little-sass-to-help-me-generate</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/coded-a-little-sass-to-help-me-generate</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Tue, 16 Sep 2025 16:36:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!U8ZU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88bd62-835d-48c9-8189-35cf2c869483_2528x1422.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_!U8ZU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88bd62-835d-48c9-8189-35cf2c869483_2528x1422.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U8ZU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88bd62-835d-48c9-8189-35cf2c869483_2528x1422.png 424w, https://substackcdn.com/image/fetch/$s_!U8ZU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88bd62-835d-48c9-8189-35cf2c869483_2528x1422.png 848w, https://substackcdn.com/image/fetch/$s_!U8ZU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88bd62-835d-48c9-8189-35cf2c869483_2528x1422.png 1272w, https://substackcdn.com/image/fetch/$s_!U8ZU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88bd62-835d-48c9-8189-35cf2c869483_2528x1422.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U8ZU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88bd62-835d-48c9-8189-35cf2c869483_2528x1422.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb88bd62-835d-48c9-8189-35cf2c869483_2528x1422.png&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;:1846408,&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://newsletter.jorgecastillo.dev/i/173773181?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88bd62-835d-48c9-8189-35cf2c869483_2528x1422.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_!U8ZU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88bd62-835d-48c9-8189-35cf2c869483_2528x1422.png 424w, https://substackcdn.com/image/fetch/$s_!U8ZU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88bd62-835d-48c9-8189-35cf2c869483_2528x1422.png 848w, https://substackcdn.com/image/fetch/$s_!U8ZU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88bd62-835d-48c9-8189-35cf2c869483_2528x1422.png 1272w, https://substackcdn.com/image/fetch/$s_!U8ZU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb88bd62-835d-48c9-8189-35cf2c869483_2528x1422.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>Some words for the people who joined the newsletter these days.</p><p>This new AI vibe coding era is crazy. People are building apps blazing fast. I have been doing it myself for a while lately and the code does not look great &#128514; (no point on lying!!), but the end result is actually pretty good. User experience is smooth and the apps don't have significant bugs either. You keep getting better with the prompts.</p><p>One of the biggest caveats I find now for quick iteration is to get the apps finally released to the stores. That final bit takes lots of time and AI does not solve it well (yet?). Especially creating the screenshots. That is probably one of the most time consuming parts I suffer myself. And it is not something you can just skip. Screenshots don't do magic, but can give you a big boost in downloads, especially when it is a new published app.</p><p>I thought it would be great to create this service so people could generate their app store screenshots super quick but without compromising quality (that is normally the issue with all the AI generated slop out there today). I also wanted it to be actually useful. That is how I created <strong>ScreenshotWhale</strong> &#128011;</p><p>The end goal of app screenshots is to highlight the value your product brings, not just pile up a list of features. You want emotional connection for more impact. The simplest way to tap into emotions is by showing clear problems and how your app solves them, using relatable visuals people instantly relate to, like photos or illustrations. This is the main thing I want my product to solve. Not easy! but hopefully it does.</p><p>It has its own layer-based editor (Figma style) and runs in the cloud, so you don't need to mess with save files yourself. I has a bunch of high-converting professional templates crafted and curated by me with lots of care &#129782;. It supports multiple device types, form factors, phones, tablets, wereables for both Android and iOS. And it has super quick automatic internationalization (i18n) during export, so you can get your screenshots automatically translated to all the languages you need.</p><p>It is in the initial stages now, so any new users are obviously more than welcome, especially to gather feedback and iterate it towards the audience needs. Would love to hear your thoughts, so feel free to check it out: <a href="https://screenshotwhale.com/">screenshotwhale.com</a>. There are FREE templates in there too! &#128011; &#128248; &#128242;</p>]]></content:encoded></item><item><title><![CDATA[Launching ScreenshotWhale.com 🐋]]></title><description><![CDATA[The wait is over, screenshotwhale is live today &#127881;]]></description><link>https://newsletter.jorgecastillo.dev/p/launching-screenshotwhalecom</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/launching-screenshotwhalecom</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Sat, 13 Sep 2025 15:03:52 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/173513728/2429ca0a3d173eaef402014d1ff6736f.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Hey folks! &#128075;</p><p>The wait is finally over. <a href="http://ScreenshotWhale.com">ScreenshotWhale</a> is live today &#127881;</p><p>Many of you have been following this project from the very beginning and I honestly couldn&#8217;t be more excited to finally open the doors. This stage is particularly important and your feedback will be gold for shaping what comes next.</p><p><strong>Some of the things that ScreenshotWhale already offers today:</strong></p><ul><li><p>&#10024; Creates professional, high-converting screenshots in minutes.</p></li><li><p>&#9997;&#65039; Has its own fully-fledged online editor.</p></li><li><p>&#9729;&#65039; Runs in the cloud, no need for saving your own project files somewhere else.</p></li><li><p>&#127912; Polished professional templates crafted by me, adding new ones every day.</p></li><li><p>&#127757; Automatic i18n to multiple languages on export.</p></li><li><p>&#128241; Support for iOS, Android. Multiple form factors, even wereables.</p></li><li><p>&#128260; Mirror feature to replicate edits across form factors instantly.</p></li><li><p>&#9889;&#65039; Quick-start settings for most common app store layouts.</p></li><li><p>&#129513; Layer based system. Support for text, image, mockup devices, backgrounds and other types of layers.</p></li></ul><p>And this is only the beginning. I am iterating fast and plenty of new features are already lined up.</p><p>&#128073; Jump in at <a href="https://screenshotwhale.com">screenshotwhale.com</a> and start building your new app screenshots &#128011;</p><p>Thank you so much for being here from day one. Your support means the world &#128153;</p><p>Some sneak peek screenshots below for context &#128071;</p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/59d4e997-151f-4970-9fe0-285bedfedbd4_3488x1962.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/260caf62-6bac-4590-bfba-c4e902256d8e_3584x2016.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4b856905-3135-40b3-8cdd-4c9609778c2a_3488x1962.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/20e77557-01f8-4496-a79f-cbea84dc397e_3456x1944.png&quot;},{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d715effc-a2c0-422d-9308-05afdbc09927_3168x1782.png&quot;}],&quot;caption&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/891f15bc-a7f7-40dd-a1e0-8df7c0d15db3_1456x1210.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p>Jorge.</p>]]></content:encoded></item><item><title><![CDATA[Become part of my journey (and earn along the way)]]></title><description><![CDATA[Become an affiliate of Jetpack Compose internals. Help me + help others to learn + make some money in the process &#128293;]]></description><link>https://newsletter.jorgecastillo.dev/p/become-part-of-my-journey-and-earn</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/become-part-of-my-journey-and-earn</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Sat, 06 Sep 2025 16:13:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KOd4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eaaecfc-e578-42bb-a8a8-404de8169439_1536x1024.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_!KOd4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eaaecfc-e578-42bb-a8a8-404de8169439_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KOd4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eaaecfc-e578-42bb-a8a8-404de8169439_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!KOd4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eaaecfc-e578-42bb-a8a8-404de8169439_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!KOd4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eaaecfc-e578-42bb-a8a8-404de8169439_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!KOd4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eaaecfc-e578-42bb-a8a8-404de8169439_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KOd4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eaaecfc-e578-42bb-a8a8-404de8169439_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8eaaecfc-e578-42bb-a8a8-404de8169439_1536x1024.png&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;:1783189,&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://newsletter.jorgecastillo.dev/i/172959679?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eaaecfc-e578-42bb-a8a8-404de8169439_1536x1024.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_!KOd4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eaaecfc-e578-42bb-a8a8-404de8169439_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!KOd4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eaaecfc-e578-42bb-a8a8-404de8169439_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!KOd4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eaaecfc-e578-42bb-a8a8-404de8169439_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!KOd4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8eaaecfc-e578-42bb-a8a8-404de8169439_1536x1024.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>Become part of my journey (and earn along the way)</h3><p>Today is the day. I finally enabled the affiliate program for Compose internals &#129395;</p><p>When I first started writing about Jetpack Compose, I had no idea it would change my life this much. What began as curiosity turned into a book, then a course, and now a growing community of Android developers learning, building, and supporting each other.</p><p><a href="https://composeinternals.com/how-i-made-side-income-from-jetpack-compose">I shared my full story</a> a few days ago. It has been such a rollercoaster since then &#129327;. Many devs reached both in public and in private saying that my post inspired them to keep fighting to meet their goals. Keep rocking!</p><p>I&#8217;ve always shared my work openly because I know how motivating it is to see others succeed. And now I want to give you a chance to be part of that success &#128588;</p><p>I just opened the <strong>affiliate program</strong> for my Jetpack Compose Internals course. That means if you share the course with your audience, friends, or community, you can <strong>earn up to 20% from every single sale</strong>. As simple as that.</p><p>I want to be 100% honest with you: I do this to make Compose internals grow even more. No point on lying. But it is also about joining me in something bigger: helping Android devs everywhere understand Compose on a deeper level (that is my personal crusade), while creating a new side income stream for yourself.</p><p>Creators, bloggers, YouTubers, community leaders, or just passionate developers, this is your shot. Others are already joining, and the earlier you jump in, the bigger your impact will be.</p><p>The number of affiliates I will accept in the program is going to be <strong>limited</strong> for now, I need to keep some control on it. First come, first served.</p><p>&#128073; <a href="https://effectiveandroid.gumroad.com/affiliates">Sign up as an affiliate here</a></p><p>I can&#8217;t wait to see you on the other side!</p><p><br>Jorge &#129776;</p>]]></content:encoded></item><item><title><![CDATA[Enabled Purchasing Power Parity (PPP) for the Jeptack Compose internals course 🏃‍♂️]]></title><description><![CDATA[Save money if you are physically located in one of the required countries &#129776; also enabled the option to pay in 2 installments &#128640;]]></description><link>https://newsletter.jorgecastillo.dev/p/enabled-purchasing-power-parity-ppp</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/enabled-purchasing-power-parity-ppp</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Thu, 04 Sep 2025 19:01:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ghp_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc382032d-b5dc-4c62-80d3-5724be5c157d_2631x1480.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_!ghp_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc382032d-b5dc-4c62-80d3-5724be5c157d_2631x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ghp_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc382032d-b5dc-4c62-80d3-5724be5c157d_2631x1480.png 424w, https://substackcdn.com/image/fetch/$s_!ghp_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc382032d-b5dc-4c62-80d3-5724be5c157d_2631x1480.png 848w, https://substackcdn.com/image/fetch/$s_!ghp_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc382032d-b5dc-4c62-80d3-5724be5c157d_2631x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!ghp_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc382032d-b5dc-4c62-80d3-5724be5c157d_2631x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ghp_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc382032d-b5dc-4c62-80d3-5724be5c157d_2631x1480.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c382032d-b5dc-4c62-80d3-5724be5c157d_2631x1480.png&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;:1469767,&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://newsletter.jorgecastillo.dev/i/172771770?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc382032d-b5dc-4c62-80d3-5724be5c157d_2631x1480.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_!ghp_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc382032d-b5dc-4c62-80d3-5724be5c157d_2631x1480.png 424w, https://substackcdn.com/image/fetch/$s_!ghp_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc382032d-b5dc-4c62-80d3-5724be5c157d_2631x1480.png 848w, https://substackcdn.com/image/fetch/$s_!ghp_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc382032d-b5dc-4c62-80d3-5724be5c157d_2631x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!ghp_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc382032d-b5dc-4c62-80d3-5724be5c157d_2631x1480.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>Several people asked for PPP recently. I had some issues to enable it but it should be working now. I enabled two things:</p><ul><li><p>Purchasing Power Parity (PPP) - Charge customers different amounts depending on the cost of living in their country.</p></li><li><p>Pay in 2 installments</p></li></ul><p>Enjoy, and thanks for all your support as always!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FSct!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f208c-d925-4201-832a-2c70c37bd5c5_746x640.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FSct!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f208c-d925-4201-832a-2c70c37bd5c5_746x640.png 424w, https://substackcdn.com/image/fetch/$s_!FSct!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f208c-d925-4201-832a-2c70c37bd5c5_746x640.png 848w, https://substackcdn.com/image/fetch/$s_!FSct!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f208c-d925-4201-832a-2c70c37bd5c5_746x640.png 1272w, https://substackcdn.com/image/fetch/$s_!FSct!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f208c-d925-4201-832a-2c70c37bd5c5_746x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FSct!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f208c-d925-4201-832a-2c70c37bd5c5_746x640.png" width="408" height="350.02680965147454" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a85f208c-d925-4201-832a-2c70c37bd5c5_746x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:746,&quot;resizeWidth&quot;:408,&quot;bytes&quot;:70532,&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;:&quot;https://newsletter.jorgecastillo.dev/i/172771770?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f208c-d925-4201-832a-2c70c37bd5c5_746x640.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_!FSct!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f208c-d925-4201-832a-2c70c37bd5c5_746x640.png 424w, https://substackcdn.com/image/fetch/$s_!FSct!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f208c-d925-4201-832a-2c70c37bd5c5_746x640.png 848w, https://substackcdn.com/image/fetch/$s_!FSct!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f208c-d925-4201-832a-2c70c37bd5c5_746x640.png 1272w, https://substackcdn.com/image/fetch/$s_!FSct!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85f208c-d925-4201-832a-2c70c37bd5c5_746x640.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>]]></content:encoded></item><item><title><![CDATA[How I made side income from Jetpack Compose: My journey]]></title><description><![CDATA[Learn how I built a successful side income from Jetpack Compose through content creation, book writing, and course development. My complete journey.]]></description><link>https://newsletter.jorgecastillo.dev/p/how-i-made-side-income-from-jetpack</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/how-i-made-side-income-from-jetpack</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Wed, 03 Sep 2025 17:50:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!MAJ4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ac103-9428-4459-aeca-14566990b3cf_1536x1024.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_!MAJ4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ac103-9428-4459-aeca-14566990b3cf_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MAJ4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ac103-9428-4459-aeca-14566990b3cf_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!MAJ4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ac103-9428-4459-aeca-14566990b3cf_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!MAJ4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ac103-9428-4459-aeca-14566990b3cf_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!MAJ4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ac103-9428-4459-aeca-14566990b3cf_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MAJ4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ac103-9428-4459-aeca-14566990b3cf_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d55ac103-9428-4459-aeca-14566990b3cf_1536x1024.png&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;:2487743,&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://newsletter.jorgecastillo.dev/i/172707061?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ac103-9428-4459-aeca-14566990b3cf_1536x1024.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_!MAJ4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ac103-9428-4459-aeca-14566990b3cf_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!MAJ4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ac103-9428-4459-aeca-14566990b3cf_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!MAJ4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ac103-9428-4459-aeca-14566990b3cf_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!MAJ4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ac103-9428-4459-aeca-14566990b3cf_1536x1024.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>When Android developers think about side income, the usual answers are freelancing, consulting, or building a small app to monetize. I went in a different direction. A slower one at first, but one that snowballed into something bigger than I expected.</p><p>It started with me just sharing thoughts online, with no clear plan. Over time that turned into a book, then a course, and eventually a consistent income stream. Here's my full story.</p><h3>Years of Sharing and Showing Up</h3><p>For 10+ years I had been posting Android tips, opinions, and code snippets <a href="https://x.com/jorgecastillopr">on X</a> (previously Twitter). Nothing polished, just honest takes from my day-to-day work. I normally tried to have a critical mindset and expose my honest perspective on things when I found it valuable. And a little bit of raging from time to time as well!</p><p>I also spoke at national and international conferences like KotlinConf, Mobilization in Poland, and many others. Started small, then went for bigger events. That helped me reach new audiences, connect with devs around the world, and position myself as someone others could rely on for valuable Android content.</p><p>I didn't have a product in mind. I just liked to share what I was learning, both online and on stage, and over the years I grew a good sense on identifying what topics people were most interested in. But these things compound. <strong>Consistency + visibility builds trust.</strong> By the time Jetpack Compose came around, I already had a public image as someone people turned to for Android knowledge.</p><p>That was the foundation for everything that followed.</p><h3>The Jetpack Compose Moment</h3><p>Then came the announcement of Compose alpha &#128576;</p><p>I'm sure I was not the only one, but I could immediately see how big it was going to become. Coming from my previous experience building sites in React, the parallels were obvious: declarative UI, smart diffing, state-driven rendering, lifecycle-aware effects... It was the same mental model all over again! but this time adapted to Android. And the fact that part of the original Compose team had worked in React before made it even more obvious.</p><p>It was clear to me: <strong>Compose wasn't just another library. It was the immediate future of Android UI</strong>, and every company would eventually migrate, inevitably. The only question was how soon.</p><p>That's when it hit me: if this was going to redefine Android UI development, then there would be demand for people who really understood it deeply.</p><p>On top of this, I also knew that diving into the internals of the View system had been a huge leap forward for me in the past. I knew that offering the same perspective for Jetpack Compose would help others as well.</p><h3>Writing the Book</h3><p>Only a few days after the first Compose alpha release, I had already subconsciously made the decision to write <strong><a href="https://composeinternals.com/book">Jetpack Compose Internals</a></strong>. And I wanted it to go deeper than just "how to use Compose." I wanted to explain how it worked under the hood, and help people to use it correctly and efficiently.</p><p>But timing was everything. I made it my goal to release the book on the exact day Compose 1.0 stable dropped. If Compose was going to make a splash in the industry, I wanted my book riding that wave. But I had a significant problem: The book was just barely started and there wasn't enough time to finish it.</p><p>To make it possible, <a href="https://leanpub.com/composeinternals">I chose Leanpub</a>. This platform would let me prelaunch the book with only part of it written, then keep delivering updates. That would allow me to hit the deadline without compromising the quality of the content.</p><p>Finally, I decided to not work with a publisher. Why give away a big cut when I could do it all myself? Writing, editing, promotion... yes, it was more work, but the audicence was already there, and it also meant full control for me. Publishers take a huge cut from authors today, to the point of making the deal very unfair.</p><h3>Launch and Positioning</h3><p>The strategy worked. On Compose 1.0 launch day, my book was out too. That timing alone positioned me as <strong>"the Compose guy"</strong> overnight. I became the go-to reference for anyone looking to understand Compose internals.</p><p>Numbers were great for such a niche book: <strong>First month revenue was around $15k &#127881;.</strong></p><p>After that, sales dropped gradually every month, and ended up stabilizing around $2k per month for quite a while. This was a huge motivation boost for me to keep writing what I wanted to be the best Compose book in the market.</p><p>Even years after that, it still brings in $500&#8211;$1k per month, depending on how much I promote it.</p><p>This is how normally tech books behave. You can be lucky to get a viral boost at launch, especially if you have a good strategy and timming. Maybe some months after if too. But after that, it's down to consistent promotion and SEO. If you stop talking about it, people simply stop buying. That is something that I have learned during this journey.</p><h3>Proof the Bet Was Right</h3><p>Fast forward to today: Compose is the standard for building Android UI. Companies across the world are migrating. Almost no teams out there are sticking with the View system anymore.</p><p>That decision I made back in the alpha days proved to be the right call. And that's the thing with tech trends: <strong>if you catch them early, you can ride them for years.</strong></p><h3>Promoting It Myself</h3><p>One myth to clear up: no product "sells itself". There might be some exceptions, but in general that is really hard.</p><p>Yes, I had great timing. Yes, the topic was hot. But without me actively promoting the book on X, on <a href="https://newsletter.jorgecastillo.dev/">my newsletter</a>, and in other social networks, it would have faded out much faster.</p><p><strong>Promotion is a continuous job.</strong> It doesn't feel glamorous, can be boring, but it's the difference between something dying after launch and something that keeps paying back.</p><h3>Expanding Into a Course</h3><p>The book was a success, but I knew not everyone learns from books. I also had some good skills giving technical courses that I acquired when working as a trainer for another company, so I decided to build a course and expand on all the topics in depth. My mindset on this was to not create a course that would barely scratch the surface, or just recap the book, but to go even deeper and cover all the topics in much detail. I really wanted it to be useful and worth for people to pay for.</p><p>I also decided to make it a cohort in the first place: I would record all the content, provide a support channel for doubts and interesting conversations, and deliver it over several weeks in a structured way. That would allow me to expand the content so much and explain all the topics as clearly as possible.</p><p>I built the <strong>&#10024; Jetpack Compose and internals cohort-based course &#10024;</strong>. And it absolutely blew up. It was an absolute madness that I can't even believe to this day, honestly. <strong>Total revenue ended up at around $183k &#129327;&#129763;</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tbA7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62b439e-7962-4eef-a0f7-3f90733c0413_2848x1602.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tbA7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62b439e-7962-4eef-a0f7-3f90733c0413_2848x1602.png 424w, https://substackcdn.com/image/fetch/$s_!tbA7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62b439e-7962-4eef-a0f7-3f90733c0413_2848x1602.png 848w, https://substackcdn.com/image/fetch/$s_!tbA7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62b439e-7962-4eef-a0f7-3f90733c0413_2848x1602.png 1272w, https://substackcdn.com/image/fetch/$s_!tbA7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62b439e-7962-4eef-a0f7-3f90733c0413_2848x1602.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tbA7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62b439e-7962-4eef-a0f7-3f90733c0413_2848x1602.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b62b439e-7962-4eef-a0f7-3f90733c0413_2848x1602.png&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;:634822,&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://newsletter.jorgecastillo.dev/i/172707061?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62b439e-7962-4eef-a0f7-3f90733c0413_2848x1602.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_!tbA7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62b439e-7962-4eef-a0f7-3f90733c0413_2848x1602.png 424w, https://substackcdn.com/image/fetch/$s_!tbA7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62b439e-7962-4eef-a0f7-3f90733c0413_2848x1602.png 848w, https://substackcdn.com/image/fetch/$s_!tbA7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62b439e-7962-4eef-a0f7-3f90733c0413_2848x1602.png 1272w, https://substackcdn.com/image/fetch/$s_!tbA7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62b439e-7962-4eef-a0f7-3f90733c0413_2848x1602.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><em>Read the full story &#128073; <a href="https://composeinternals.com/how-i-made-side-income-from-jetpack-compose">https://composeinternals.com/how-i-made-side-income-from-jetpack-compose</a></em></p><p></p>]]></content:encoded></item><item><title><![CDATA[Preorder StoreShots 📱🎇]]></title><description><![CDATA[Available for a limited number of people]]></description><link>https://newsletter.jorgecastillo.dev/p/preorder-storeshots</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/preorder-storeshots</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Sat, 16 Aug 2025 22:28:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Z7KZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bdb9755-3652-477b-b8f2-1721d2c31842_1834x1128.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_!Z7KZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bdb9755-3652-477b-b8f2-1721d2c31842_1834x1128.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z7KZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bdb9755-3652-477b-b8f2-1721d2c31842_1834x1128.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Z7KZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bdb9755-3652-477b-b8f2-1721d2c31842_1834x1128.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Z7KZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bdb9755-3652-477b-b8f2-1721d2c31842_1834x1128.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Z7KZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bdb9755-3652-477b-b8f2-1721d2c31842_1834x1128.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z7KZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bdb9755-3652-477b-b8f2-1721d2c31842_1834x1128.jpeg" width="1456" height="896" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7bdb9755-3652-477b-b8f2-1721d2c31842_1834x1128.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:896,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:248084,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.jorgecastillo.dev/i/171159259?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bdb9755-3652-477b-b8f2-1721d2c31842_1834x1128.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_!Z7KZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bdb9755-3652-477b-b8f2-1721d2c31842_1834x1128.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Z7KZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bdb9755-3652-477b-b8f2-1721d2c31842_1834x1128.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Z7KZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bdb9755-3652-477b-b8f2-1721d2c31842_1834x1128.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Z7KZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bdb9755-3652-477b-b8f2-1721d2c31842_1834x1128.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I haven&#8217;t revealed much about StoreShots yet, my new service to generate gorgeous Play Store and App Store screenshots.</p><p>Starting today you can early preorder and get:</p><p>&#128293; Lifetime access at 50% off (will cost $149 once released)</p><p>&#128640; Early access a few weeks before launch, before everyone else</p><p>&#9989; Full access to all available templates</p><p>&#9889; Offer available for a limited number of people and for limited time.</p><p>Let&#8217;s build this together and make it the best screenshot generation service out there &#128588;&#128640;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://book.stripe.com/bJefZh0uE0iQ3c4b6p3oA0F&quot;,&quot;text&quot;:&quot;Preorder lifetime access&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://book.stripe.com/bJefZh0uE0iQ3c4b6p3oA0F"><span>Preorder lifetime access</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oPMV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3018bb66-938f-4fa3-b3d2-d28e8fed2bc3_1206x1187.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oPMV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3018bb66-938f-4fa3-b3d2-d28e8fed2bc3_1206x1187.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oPMV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3018bb66-938f-4fa3-b3d2-d28e8fed2bc3_1206x1187.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oPMV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3018bb66-938f-4fa3-b3d2-d28e8fed2bc3_1206x1187.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oPMV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3018bb66-938f-4fa3-b3d2-d28e8fed2bc3_1206x1187.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oPMV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3018bb66-938f-4fa3-b3d2-d28e8fed2bc3_1206x1187.jpeg" width="1206" height="1187" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3018bb66-938f-4fa3-b3d2-d28e8fed2bc3_1206x1187.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1187,&quot;width&quot;:1206,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:317504,&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://newsletter.jorgecastillo.dev/i/171159259?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3018bb66-938f-4fa3-b3d2-d28e8fed2bc3_1206x1187.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_!oPMV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3018bb66-938f-4fa3-b3d2-d28e8fed2bc3_1206x1187.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oPMV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3018bb66-938f-4fa3-b3d2-d28e8fed2bc3_1206x1187.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oPMV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3018bb66-938f-4fa3-b3d2-d28e8fed2bc3_1206x1187.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oPMV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3018bb66-938f-4fa3-b3d2-d28e8fed2bc3_1206x1187.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></p>]]></content:encoded></item><item><title><![CDATA[Remembering why we code]]></title><description><![CDATA[A reminder that the best part of programming has always been the thrill of creating]]></description><link>https://newsletter.jorgecastillo.dev/p/remembering-why-we-code</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/remembering-why-we-code</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Sat, 16 Aug 2025 13:20:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!o6jm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d97821b-da00-47e7-bc5a-bc4ef7472ee2_1528x800.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_!o6jm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d97821b-da00-47e7-bc5a-bc4ef7472ee2_1528x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o6jm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d97821b-da00-47e7-bc5a-bc4ef7472ee2_1528x800.png 424w, https://substackcdn.com/image/fetch/$s_!o6jm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d97821b-da00-47e7-bc5a-bc4ef7472ee2_1528x800.png 848w, https://substackcdn.com/image/fetch/$s_!o6jm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d97821b-da00-47e7-bc5a-bc4ef7472ee2_1528x800.png 1272w, https://substackcdn.com/image/fetch/$s_!o6jm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d97821b-da00-47e7-bc5a-bc4ef7472ee2_1528x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o6jm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d97821b-da00-47e7-bc5a-bc4ef7472ee2_1528x800.png" width="1456" height="762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d97821b-da00-47e7-bc5a-bc4ef7472ee2_1528x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:762,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3022485,&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://newsletter.jorgecastillo.dev/i/171124555?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d97821b-da00-47e7-bc5a-bc4ef7472ee2_1528x800.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_!o6jm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d97821b-da00-47e7-bc5a-bc4ef7472ee2_1528x800.png 424w, https://substackcdn.com/image/fetch/$s_!o6jm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d97821b-da00-47e7-bc5a-bc4ef7472ee2_1528x800.png 848w, https://substackcdn.com/image/fetch/$s_!o6jm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d97821b-da00-47e7-bc5a-bc4ef7472ee2_1528x800.png 1272w, https://substackcdn.com/image/fetch/$s_!o6jm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d97821b-da00-47e7-bc5a-bc4ef7472ee2_1528x800.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>When I started writing code, it wasn&#8217;t because of money, prestige, or even a career plan. I just loved building things. Especially things I could see come to life on a screen. Little mobile apps, simple websites, side projects that felt like magic the moment they worked. Hitting run and watching an idea appear in front of me was addictive.</p><p>I still remember the first time I managed to make a network request from an app. Until then, the code I wrote felt like it lived in its own little box. The moment it connected to the outside world, everything changed. Suddenly I could imagine multiplayer games, dynamic apps, live updates. It felt like a new universe opening in front of me.</p><p>Salary was never part of the decision to become a developer. At the time, programming wasn&#8217;t even that well paid. The startup boom and the big tech salaries came much later. For many of us it started with curiosity, joy, and the challenge of making something real.</p><p>Looking back, I realize how lucky we were. By coincidence, the industry exploded and we happened to be there, doing something we already loved, right when it became valuable. If things hadn&#8217;t gone that way, I honestly don&#8217;t know what I would be doing today.</p><p>I think it&#8217;s good to remember this sometimes. That what pulled us in at the beginning wasn&#8217;t the money or the hype. It was the thrill of creating something out of nothing. And that is still the best part. &#129782;</p><h3>Follow me in social networks</h3><ul><li><p><a href="https://x.com/jorgecastillopr">Find me on X</a></p></li><li><p><a href="https://www.linkedin.com/in/jorgecastillopr/">Find me on LinkedIn</a></p></li><li><p><a href="https://bsky.app/profile/jorgecastillo.dev">Find me on Bluesky</a></p></li></ul><h4>Book the Compose Internals course: 7 weeks worth of content for the cheapest price ever &#128293;</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://composeinternals.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bU8r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a16c20-917a-4bdc-971c-bd792cde32e4_2220x1164.png 424w, https://substackcdn.com/image/fetch/$s_!bU8r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a16c20-917a-4bdc-971c-bd792cde32e4_2220x1164.png 848w, https://substackcdn.com/image/fetch/$s_!bU8r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a16c20-917a-4bdc-971c-bd792cde32e4_2220x1164.png 1272w, https://substackcdn.com/image/fetch/$s_!bU8r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a16c20-917a-4bdc-971c-bd792cde32e4_2220x1164.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bU8r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a16c20-917a-4bdc-971c-bd792cde32e4_2220x1164.png" width="1456" height="763" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/44a16c20-917a-4bdc-971c-bd792cde32e4_2220x1164.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:763,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:416647,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://composeinternals.com&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.jorgecastillo.dev/i/171124555?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a16c20-917a-4bdc-971c-bd792cde32e4_2220x1164.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_!bU8r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a16c20-917a-4bdc-971c-bd792cde32e4_2220x1164.png 424w, https://substackcdn.com/image/fetch/$s_!bU8r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a16c20-917a-4bdc-971c-bd792cde32e4_2220x1164.png 848w, https://substackcdn.com/image/fetch/$s_!bU8r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a16c20-917a-4bdc-971c-bd792cde32e4_2220x1164.png 1272w, https://substackcdn.com/image/fetch/$s_!bU8r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44a16c20-917a-4bdc-971c-bd792cde32e4_2220x1164.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></p>]]></content:encoded></item><item><title><![CDATA[New video 🎬 Focusing on end goals🤔]]></title><description><![CDATA[Stop Chasing Recomposition Counts &#129504;&#128201;]]></description><link>https://newsletter.jorgecastillo.dev/p/new-video-focusing-on-end-goals</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/new-video-focusing-on-end-goals</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Thu, 31 Jul 2025 17:02:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Z4oR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.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_!Z4oR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z4oR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Z4oR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Z4oR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Z4oR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z4oR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png&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;:2240607,&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://newsletter.jorgecastillo.dev/i/169046688?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.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_!Z4oR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Z4oR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Z4oR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Z4oR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.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><strong>Stop Chasing Recomposition Counts &#129504;&#128201;</strong></p><p>I just dropped a short video that tackles a common trap in software development: focusing on the wrong metrics.</p><p>Too often in Jetpack Compose (and dev in general), people obsess over recomposition counts&#8230; but forget to ask the real question: <strong>is the app actually slow?</strong> Performance is about outcomes, not internals.</p><p>In the video, I break it down with a simple example and show why you should focus on <strong>end goals</strong> when optimizing your code.<br><br>My best advice here is: learn about <a href="https://developer.android.com/topic/performance/benchmarking/macrobenchmark-overview">macrobenchmarks</a>, get familiarized with them and write some for your product.</p><p>&#127909; Watch it here:</p><div id="tiktok-iframe?media=1&amp;app=1&amp;url=https%3A%2F%2Fwww.tiktok.com%2F%40jorgecastillo.dev%2Fvideo%2F7533245904598355222%3Fis_from_webapp%3D1%26sender_device%3Dpc%26web_id%3D7522089977904694806&amp;key=e27c740634285c9ddc20db64f73358dd" class="tiktok-wrap outer" data-attrs="{&quot;url&quot;:&quot;https://www.tiktok.com/@jorgecastillo.dev/video/7533245904598355222&quot;,&quot;title&quot;:&quot;Focusing on end goals &#127916;&quot;,&quot;thumbnail_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a652a977-8db4-4a51-86a5-33c6fd5319c3_1080x1920.jpeg&quot;,&quot;author&quot;:&quot;Jorge Castillo&quot;,&quot;embed_url&quot;:&quot;https://cdn.iframe.ly/api/iframe?media=1&amp;app=1&amp;url=https%3A%2F%2Fwww.tiktok.com%2F%40jorgecastillo.dev%2Fvideo%2F7533245904598355222%3Fis_from_webapp%3D1%26sender_device%3Dpc%26web_id%3D7522089977904694806&amp;key=e27c740634285c9ddc20db64f73358dd&quot;,&quot;author_url&quot;:&quot;https://www.tiktok.com/@jorgecastillo.dev&quot;,&quot;belowTheFold&quot;:false}" data-component-name="TikTokCreateTikTokEmbed"><iframe id="iframe-tiktok-iframe?media=1&amp;app=1&amp;url=https%3A%2F%2Fwww.tiktok.com%2F%40jorgecastillo.dev%2Fvideo%2F7533245904598355222%3Fis_from_webapp%3D1%26sender_device%3Dpc%26web_id%3D7522089977904694806&amp;key=e27c740634285c9ddc20db64f73358dd" class="tiktok-iframe" src="https://cdn.iframe.ly/api/iframe?media=1&amp;app=1&amp;url=https%3A%2F%2Fwww.tiktok.com%2F%40jorgecastillo.dev%2Fvideo%2F7533245904598355222%3Fis_from_webapp%3D1%26sender_device%3Dpc%26web_id%3D7522089977904694806&amp;key=e27c740634285c9ddc20db64f73358dd" frameborder="0" allow="autoplay; fullscreen; encrypted-media" allowfullscreen="" scrolling="no"></iframe><iframe src="https://team-hosted-public.s3.amazonaws.com/set-then-check-cookie.html" id="third-party-iframe-tiktok-iframe?media=1&amp;app=1&amp;url=https%3A%2F%2Fwww.tiktok.com%2F%40jorgecastillo.dev%2Fvideo%2F7533245904598355222%3Fis_from_webapp%3D1%26sender_device%3Dpc%26web_id%3D7522089977904694806&amp;key=e27c740634285c9ddc20db64f73358dd" class="third-party-cookie-check-iframe" style="display: none;"></iframe><div class="tiktok-wrap static" data-component-name="TikTokCreateStaticTikTokEmbed"><a href="https://www.tiktok.com/@jorgecastillo.dev/video/7533245904598355222" target="_blank"><img class="tiktok thumbnail" src="https://substackcdn.com/image/fetch/$s_!mGPm!,w_640,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa652a977-8db4-4a51-86a5-33c6fd5319c3_1080x1920.jpeg" style="background-image: url(https://substackcdn.com/image/fetch/$s_!mGPm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa652a977-8db4-4a51-86a5-33c6fd5319c3_1080x1920.jpeg);"></a><div class="content"><a class="author" href="https://www.tiktok.com/@jorgecastillo.dev" target="_blank">@jorgecastillo.dev</a><a class="title" href="https://www.tiktok.com/@jorgecastillo.dev/video/7533245904598355222" target="_blank">Focusing on end goals &#127916;</a></div></div><div class="fallback-failure" id="fallback-failure-tiktok-iframe?media=1&amp;app=1&amp;url=https%3A%2F%2Fwww.tiktok.com%2F%40jorgecastillo.dev%2Fvideo%2F7533245904598355222%3Fis_from_webapp%3D1%26sender_device%3Dpc%26web_id%3D7522089977904694806&amp;key=e27c740634285c9ddc20db64f73358dd"><div class="error-content"><img class="error-icon" src="https://substackcdn.com//img/alert-circle.svg">Tiktok failed to load.<br><br>Enable 3rd party cookies or use another browser</div></div></div>]]></content:encoded></item><item><title><![CDATA[New video social networks unlocked 🎬🔥]]></title><description><![CDATA[Join me on YouTube and TikTok as I share everything I&#8217;ve learned. The wins, the fails, the hacks, and the real stories behind Android development.]]></description><link>https://newsletter.jorgecastillo.dev/p/new-video-social-networks-unlocked</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/new-video-social-networks-unlocked</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Wed, 23 Jul 2025 17:01:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Z4oR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.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_!Z4oR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z4oR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Z4oR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Z4oR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Z4oR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z4oR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png&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;:2240607,&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://newsletter.jorgecastillo.dev/i/169046688?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.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_!Z4oR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Z4oR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Z4oR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Z4oR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F521fc11e-5b96-4edf-ab4f-8cfeec94a79d_1536x1024.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><strong>I have decided to go Full Video mode, so we can adapt to the times! &#128640; </strong></p><p>I&#8217;ve finally launched my TikTok and YouTube Shorts channels. I&#8217;ll share experiences and reflections as a developer, everything I know and I have learned about Android, productive tips, dev stories, behind the scenes, and the stuff nobody wants to tells you.</p><p>Essentially whatever comes to my mind that feels worth to share with you folks &#128588;</p><p>Quick and practical.</p><p>If you want to help me speedrun the algo, since it can be a bit complicated in the new beginnings, please consider giving a follow if it is not too much to ask. I&#8217;ll be more than happy to have you on my network &#129782;</p><p>&#127919; Follow here:<br>&#128313; TikTok &#8594; <a href="https://www.tiktok.com/@jorgecastillo.dev">jorgecastillo.dev</a><br>&#128313; YouTube Shorts &#8594; <a href="https://www.youtube.com/@JorgeCastilloDev/shorts">JorgeCastilloDev</a></p><p>Let&#8217;s make Android dev content fun again &#128556;<br>See you there! &#128075;</p>]]></content:encoded></item><item><title><![CDATA[RenderNode in Jetpack Compose (and Views)]]></title><description><![CDATA[Let's explore what RenderNodes are, how they optimize rendering performance, and why they're so important for efficient UI rendering on Android.]]></description><link>https://newsletter.jorgecastillo.dev/p/rendernode-in-jetpack-compose-and</link><guid isPermaLink="false">https://newsletter.jorgecastillo.dev/p/rendernode-in-jetpack-compose-and</guid><dc:creator><![CDATA[Jorge Castillo]]></dc:creator><pubDate>Sat, 05 Jul 2025 09:19:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ehy8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89c2366-1b54-40cc-ac99-181eb33b6adb_1024x1024.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_!ehy8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89c2366-1b54-40cc-ac99-181eb33b6adb_1024x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ehy8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89c2366-1b54-40cc-ac99-181eb33b6adb_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ehy8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89c2366-1b54-40cc-ac99-181eb33b6adb_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ehy8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89c2366-1b54-40cc-ac99-181eb33b6adb_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ehy8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89c2366-1b54-40cc-ac99-181eb33b6adb_1024x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ehy8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89c2366-1b54-40cc-ac99-181eb33b6adb_1024x1024.jpeg" width="322" height="322" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e89c2366-1b54-40cc-ac99-181eb33b6adb_1024x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:322,&quot;bytes&quot;:107439,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.jorgecastillo.dev/i/167575114?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89c2366-1b54-40cc-ac99-181eb33b6adb_1024x1024.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_!ehy8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89c2366-1b54-40cc-ac99-181eb33b6adb_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ehy8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89c2366-1b54-40cc-ac99-181eb33b6adb_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ehy8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89c2366-1b54-40cc-ac99-181eb33b6adb_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ehy8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe89c2366-1b54-40cc-ac99-181eb33b6adb_1024x1024.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>(Thanks <a href="https://bsky.app/profile/romainguy.dev">@romainguy</a> for clearing up these details &#129321;)</em></p><p>RenderNodes are a fundamental part of how Android's UI rendering works, both in traditional Views and in Jetpack Compose. Understanding how they work can help you write more performant UI code and make better architectural decisions.</p><p>In this post, we'll explore what RenderNodes are, how they optimize rendering performance, and why they're so important for efficient UI rendering on Android.</p><h2><strong>What Are RenderNodes?</strong></h2><p>RenderNodes are a list of drawing commands with some other properties like transforms (e.g: translation). These commands can be used to issue GPU commands by the internal renderer. <strong>They are not GPU commands on their own.</strong></p><p>When a chunk of UI (View or graphicsLayer) is associated with a RenderNode, the UI toolkit doesn't need to reexecute the code that generates those drawing commands, but can instead reuse the entire list of commands &#10024;</p><p>This reuse mechanism is one of the key performance optimizations in Android's rendering system.</p><h2><strong>RenderNodes in graphicsLayer</strong></h2><p>An example of this optimization can be found in graphicsLayer &#127912;</p><p>Using a graphicsLayer means a RenderNode is used to capture the drawing commands of the involved items. This is no different than what Views did. The key benefit is that once the drawing commands are captured in a RenderNode, they can be reused without regenerating the commands from scratch. Let's see an example of this in LazyLists.</p><h2><strong>Performance Benefits in LazyLists</strong></h2><p><em>Read the full post in &#128073; <a href="https://composeinternals.com/rendernode-in-android">https://composeinternals.com/rendernode-in-android</a></em></p><p></p>]]></content:encoded></item></channel></rss>