<?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[Hieu Dinh’s Newsletter]]></title><description><![CDATA[Monthly updates about my indie hacking journey, what I have built and learned.]]></description><link>https://news.hieudinh.com</link><image><url>https://substackcdn.com/image/fetch/$s_!Fio4!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c484996-bac1-4c6b-9071-6fc1bd5bb6ee_600x600.png</url><title>Hieu Dinh’s Newsletter</title><link>https://news.hieudinh.com</link></image><generator>Substack</generator><lastBuildDate>Wed, 06 May 2026 01:18:32 GMT</lastBuildDate><atom:link href="https://news.hieudinh.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Hieu Dinh]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[hieudinh@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[hieudinh@substack.com]]></itunes:email><itunes:name><![CDATA[Hieu Dinh]]></itunes:name></itunes:owner><itunes:author><![CDATA[Hieu Dinh]]></itunes:author><googleplay:owner><![CDATA[hieudinh@substack.com]]></googleplay:owner><googleplay:email><![CDATA[hieudinh@substack.com]]></googleplay:email><googleplay:author><![CDATA[Hieu Dinh]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The rollercoaster of May: CompressX updates, new travel, WWDC and visa challenges]]></title><description><![CDATA[CompressX&#8217;s update]]></description><link>https://news.hieudinh.com/p/the-rollercoaster-of-may-compressx</link><guid isPermaLink="false">https://news.hieudinh.com/p/the-rollercoaster-of-may-compressx</guid><dc:creator><![CDATA[Hieu Dinh]]></dc:creator><pubDate>Sun, 02 Jun 2024 15:59:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1d6d3-b62d-47bd-9c9c-787060b9aea5_1290x1995.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>CompressX&#8217;s update</h1><p>I rolled out just one update for CompressX this month, focusing on our users' feature requests and bug reports. I've noticed that frequent app updates, such as weekly ones, aren't overly popular. So, I've switched up my approach. Instead of releasing features straight away to all users, I now target only those who requested them. If you're still using version 1.8.1 or earlier, I recommend updating your app now to benefit from the latest features and bug fixes I've spent many late nights working on.</p><h1>Revenue</h1><p>While May saw the least revenue since our launch, this was expected due to lessened SEO and marketing efforts this month. Previously, I had viral social media posts that have provided significant sales boosts. That said, it's a good reminder of their impact and importance.</p><p>Operating expenses were as follows:</p><ul><li><p>FounderPal: $99</p></li><li><p>Fastmail: $6.35</p></li><li><p>Ad banner: $200</p></li><li><p>Vercel: $20</p></li></ul><p>Regardless, my May revenue amounted to $1,116.26, demonstrating the sustained interest in CompressX.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a0fV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbd6b25-f60e-4512-8313-d6c21e26ae4d.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a0fV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbd6b25-f60e-4512-8313-d6c21e26ae4d.heic 424w, https://substackcdn.com/image/fetch/$s_!a0fV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbd6b25-f60e-4512-8313-d6c21e26ae4d.heic 848w, https://substackcdn.com/image/fetch/$s_!a0fV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbd6b25-f60e-4512-8313-d6c21e26ae4d.heic 1272w, https://substackcdn.com/image/fetch/$s_!a0fV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbd6b25-f60e-4512-8313-d6c21e26ae4d.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a0fV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbd6b25-f60e-4512-8313-d6c21e26ae4d.heic" width="1456" height="856" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0dbd6b25-f60e-4512-8313-d6c21e26ae4d.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:856,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:173689,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!a0fV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbd6b25-f60e-4512-8313-d6c21e26ae4d.heic 424w, https://substackcdn.com/image/fetch/$s_!a0fV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbd6b25-f60e-4512-8313-d6c21e26ae4d.heic 848w, https://substackcdn.com/image/fetch/$s_!a0fV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbd6b25-f60e-4512-8313-d6c21e26ae4d.heic 1272w, https://substackcdn.com/image/fetch/$s_!a0fV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0dbd6b25-f60e-4512-8313-d6c21e26ae4d.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>Ad spending falls short of expectations</h1><p>I invested $200 in ads this month, but the outcome was less than I anticipated.</p><p>I placed ad banners on two websites earlier this month:</p><ol><li><p>The first was a developer's blog that sees ~100K views a month. As a frequent user of my app in my developer role, I assumed others like me would also find CompressX intriguing. However, the results underperformed. The blog only drew in a total of 20 visitors seeing 21 page views. That boils down to a cost of about $5 per visitor, not the return I was hoping for.</p></li><li><p>The second site was a landing page directory attracting between 100K - 150K views a month. Thinking that CompressX's potential to reduce bandwidth and speed up page load times would appeal here, I felt it would be good for an ad. While the result topped the first site with 44 visitors and 49 page views, the cost still came out to about $2.3 per visitor, which still doesn't strike me as worthwhile.</p></li></ol><h1>Team pricing plan's first customer</h1><p>In May, I rolled out a Team pricing plan for CompressX. It costs $19 per device, the same as the Personal License, but it allows one license to manage all devices effortlessly.</p><p>Here's what happened with the first sale of the Team plan:</p><ul><li><p>A customer reached out via email with their existing license, aiming to purchase 10 more seats.</p></li><li><p>I responded by sending them a payment link.</p></li><li><p>They paid and notified me of their transaction.</p></li><li><p>I promptly updated their license and sent a thank you note.</p></li></ul><p>Interestingly, they had no queries! This was quite a surprise. I had braced myself for a potential barrage of questions and a lengthy waiting period for approval, similar to what I had experienced when buying team licenses at work.</p><h1>Partnering with r/macapps Discord server</h1><p>I'm excited to renew my partnership with the r/macapps Discord server! Our previous collaborations included giveaways, which led to CompressX being featured on their Reddit and server. If you're a developer looking for collaborative opportunities, just visit their server and use the command /partner. Join this lively community using this invite link: <a href="https://discord.gg/UhJCuSSn">https://discord.gg/UhJCuSSn</a>. Let's join hands and achieve growth together!</p><h1>Travel update: 2nd trip to Manila</h1><p>Same time last year, I went on a business trip to Manila to support the acquisition process of Grab and Move It apps. Fast forward to this year, and I found myself in the city again, but this time for another project. This year's trip was far more enjoyable, as I had a 5-day stay that included a full day exploring the historic Intramuros district.</p><p>During my visit, I enjoyed some delicious Filipino cuisine like Lechon, Mang Inasal (a type of grilled chicken), and the national soup Sinigang, which I tried both with beef and fish&#8212;some versions even featured watermelon! Adobo was also a must-try. Among all the dishes, the grilled chicken stood out as my favorite. It was surprisingly juicy and tender. One thing I noticed about Filipino food is that it generally lacks vegetables, unlike Vietnamese cuisine, where half of the portion often consists of various greens.</p><p>Additionally, I had the chance to watch a thrilling basketball match between TNT and the Rain or Shine team, which was a lot of fun.</p><p>From my perspective, the Philippines is a unique country. It is the only Asian nation that hasn't been significantly influenced by Buddhism. Instead, it feels like a fascinating blend of Asian and Western cultures.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zI7_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2f8e6f-4841-4d26-903e-cd40b4571274_4160x6240.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zI7_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2f8e6f-4841-4d26-903e-cd40b4571274_4160x6240.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zI7_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2f8e6f-4841-4d26-903e-cd40b4571274_4160x6240.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zI7_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2f8e6f-4841-4d26-903e-cd40b4571274_4160x6240.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zI7_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2f8e6f-4841-4d26-903e-cd40b4571274_4160x6240.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zI7_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2f8e6f-4841-4d26-903e-cd40b4571274_4160x6240.jpeg" width="438" height="657" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef2f8e6f-4841-4d26-903e-cd40b4571274_4160x6240.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2184,&quot;width&quot;:1456,&quot;resizeWidth&quot;:438,&quot;bytes&quot;:1113344,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zI7_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2f8e6f-4841-4d26-903e-cd40b4571274_4160x6240.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zI7_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2f8e6f-4841-4d26-903e-cd40b4571274_4160x6240.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zI7_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2f8e6f-4841-4d26-903e-cd40b4571274_4160x6240.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zI7_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2f8e6f-4841-4d26-903e-cd40b4571274_4160x6240.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>A very nice view of Manila</em></figcaption></figure></div><h1>Almost made it to WWDC 2024</h1><p>I had big hopes for WWDC 2024, but things didn&#8217;t go as planned. Twice, the US Embassy turned down my dream trip to Apple Park! If you don&#8217;t know, WWDC is Apple&#8217;s yearly event where developers from all over the world gather at Apple Park to see the latest tech&#8212;like new iOS, macOS, visionOS, watchOS, iPadOS, and more. Apple announced the event and opened registration on March 26. Tickets are super hard to get; only a few hundred lucky people get them. Every iOS developer dreams of going, not just for the tech but also for the networking. WWDC can change your life.</p><p>My adventure started with my first US visa interview on April 15. I didn&#8217;t have a WWDC ticket yet or any travel plans, so my visa was denied. I almost lost hope, but then Apple sent me a last-minute ticket on Friday, May 3, at 6 PM. I quickly got everything ready and reapplied for the visa. The earliest interview I could get was on May 24, which was nerve-wracking but still gave me two weeks before WWDC if I got the visa. Those three weeks felt like forever! I bought flight tickets, booked a hotel, and prepared for all the questions.</p><p>The interview went well&#8212;the officer was nice and I answered everything correctly. But still, my visa was denied again.</p><p>My friends mentioned that my passport wasn&#8217;t strong enough, so the US Embassy was cautious. They suggested I visit developed countries to show that I won&#8217;t overstay my visa. That might help me get a US visa in the future.</p><p>So, even though missing WWDC was tough, I&#8217;m using this as a reason to travel more this year. &#9992;&#65039; Every setback can be a new opportunity!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ekg5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1d6d3-b62d-47bd-9c9c-787060b9aea5_1290x1995.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ekg5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1d6d3-b62d-47bd-9c9c-787060b9aea5_1290x1995.png 424w, https://substackcdn.com/image/fetch/$s_!ekg5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1d6d3-b62d-47bd-9c9c-787060b9aea5_1290x1995.png 848w, https://substackcdn.com/image/fetch/$s_!ekg5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1d6d3-b62d-47bd-9c9c-787060b9aea5_1290x1995.png 1272w, https://substackcdn.com/image/fetch/$s_!ekg5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1d6d3-b62d-47bd-9c9c-787060b9aea5_1290x1995.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ekg5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1d6d3-b62d-47bd-9c9c-787060b9aea5_1290x1995.png" width="322" height="497.9767441860465" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9f1d6d3-b62d-47bd-9c9c-787060b9aea5_1290x1995.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1995,&quot;width&quot;:1290,&quot;resizeWidth&quot;:322,&quot;bytes&quot;:1267189,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ekg5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1d6d3-b62d-47bd-9c9c-787060b9aea5_1290x1995.png 424w, https://substackcdn.com/image/fetch/$s_!ekg5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1d6d3-b62d-47bd-9c9c-787060b9aea5_1290x1995.png 848w, https://substackcdn.com/image/fetch/$s_!ekg5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1d6d3-b62d-47bd-9c9c-787060b9aea5_1290x1995.png 1272w, https://substackcdn.com/image/fetch/$s_!ekg5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f1d6d3-b62d-47bd-9c9c-787060b9aea5_1290x1995.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>&#128075; That&#8217;s all for May</h1><p>See you all next month. Thanks for reading!</p>]]></content:encoded></item><item><title><![CDATA[April 2024 - Coding, Marketing, and Travels]]></title><description><![CDATA[Highlights from a busy month including user-driven feature additions, a successful Hacker News post, financial breakdown, and marketing insights]]></description><link>https://news.hieudinh.com/p/april-2024-coding-marketing-and-travels</link><guid isPermaLink="false">https://news.hieudinh.com/p/april-2024-coding-marketing-and-travels</guid><dc:creator><![CDATA[Hieu Dinh]]></dc:creator><pubDate>Sat, 04 May 2024 15:46:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!V4tt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c7ece-a657-4456-89c1-954c3bdf98fd_1428x1076.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It's been a hectic month, including about five flights, and it looks like the next one will be just as busy. Still, I wanted to share a quick update with you all.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V4tt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c7ece-a657-4456-89c1-954c3bdf98fd_1428x1076.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V4tt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c7ece-a657-4456-89c1-954c3bdf98fd_1428x1076.png 424w, https://substackcdn.com/image/fetch/$s_!V4tt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c7ece-a657-4456-89c1-954c3bdf98fd_1428x1076.png 848w, https://substackcdn.com/image/fetch/$s_!V4tt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c7ece-a657-4456-89c1-954c3bdf98fd_1428x1076.png 1272w, https://substackcdn.com/image/fetch/$s_!V4tt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c7ece-a657-4456-89c1-954c3bdf98fd_1428x1076.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V4tt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c7ece-a657-4456-89c1-954c3bdf98fd_1428x1076.png" width="1428" height="1076" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be5c7ece-a657-4456-89c1-954c3bdf98fd_1428x1076.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1076,&quot;width&quot;:1428,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3103324,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V4tt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c7ece-a657-4456-89c1-954c3bdf98fd_1428x1076.png 424w, https://substackcdn.com/image/fetch/$s_!V4tt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c7ece-a657-4456-89c1-954c3bdf98fd_1428x1076.png 848w, https://substackcdn.com/image/fetch/$s_!V4tt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c7ece-a657-4456-89c1-954c3bdf98fd_1428x1076.png 1272w, https://substackcdn.com/image/fetch/$s_!V4tt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe5c7ece-a657-4456-89c1-954c3bdf98fd_1428x1076.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><strong>&#128640; Shipping in April</strong></h1><p>In April, I worked on several user-requested features &amp; bug fixes. Major requests included: WebP support, compression history, support for the H.265 codec, and an opt-out for anonymous analytics.</p><p>I appreciated working on these tasks because they were what my users needed. This brought more satisfaction compared to working on something that's based on my assumptions.</p><p>I'm also in the process of adding free tools to the CompressX landing page. So far, three tools have been added, and more are on the way.</p><ul><li><p><a href="https://compressx.app/tools/image-metadata-extractor">Image Metadata Extractor</a></p></li><li><p><a href="https://compressx.app/tools/image-metadata-viewer">Image Metadata Viewer</a></p></li><li><p><a href="https://compressx.app/tools/exif-data-remover">EXIF Data Remover</a></p></li></ul><h1><strong>&#128478;&#65039; Hacker News Highlight</strong></h1><p>On the 10th of April, I shared CompressX&#8217;s story on <a href="https://news.ycombinator.com/item?id=39987579">Hacker News</a>. Despite the platform's reputation for harsh criticism, I decided to go ahead. What was there to lose?</p><p>To my surprise, the post performed quite well. Not only did it spark many comments and incite interesting discussions about the app, but one debate in particular focused on the visual differences of software across various platforms: macOS, Windows, and Electron.</p><p>Remarkably, the post also drove around $1,000 in sales for that week.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://news.ycombinator.com/item?id=39987579" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y-dl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47e23eed-df1a-49d9-90ef-b2fc2ff1a8cb_1395x536.png 424w, https://substackcdn.com/image/fetch/$s_!Y-dl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47e23eed-df1a-49d9-90ef-b2fc2ff1a8cb_1395x536.png 848w, https://substackcdn.com/image/fetch/$s_!Y-dl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47e23eed-df1a-49d9-90ef-b2fc2ff1a8cb_1395x536.png 1272w, https://substackcdn.com/image/fetch/$s_!Y-dl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47e23eed-df1a-49d9-90ef-b2fc2ff1a8cb_1395x536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y-dl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47e23eed-df1a-49d9-90ef-b2fc2ff1a8cb_1395x536.png" width="1395" height="536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/47e23eed-df1a-49d9-90ef-b2fc2ff1a8cb_1395x536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:536,&quot;width&quot;:1395,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:929065,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://news.ycombinator.com/item?id=39987579&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Y-dl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47e23eed-df1a-49d9-90ef-b2fc2ff1a8cb_1395x536.png 424w, https://substackcdn.com/image/fetch/$s_!Y-dl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47e23eed-df1a-49d9-90ef-b2fc2ff1a8cb_1395x536.png 848w, https://substackcdn.com/image/fetch/$s_!Y-dl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47e23eed-df1a-49d9-90ef-b2fc2ff1a8cb_1395x536.png 1272w, https://substackcdn.com/image/fetch/$s_!Y-dl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47e23eed-df1a-49d9-90ef-b2fc2ff1a8cb_1395x536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">https://news.ycombinator.com/item?id=39987579</figcaption></figure></div><h1><strong>&#129297; April Stats &amp; Financial</strong></h1><p>This month, my analytics usage went up which led to higher costs with Vercel and Telemetry Deck as I needed to upgrade my plans.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bNXw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01940d02-6847-41c0-b059-45db2c63a82c_1390x950.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bNXw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01940d02-6847-41c0-b059-45db2c63a82c_1390x950.png 424w, https://substackcdn.com/image/fetch/$s_!bNXw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01940d02-6847-41c0-b059-45db2c63a82c_1390x950.png 848w, https://substackcdn.com/image/fetch/$s_!bNXw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01940d02-6847-41c0-b059-45db2c63a82c_1390x950.png 1272w, https://substackcdn.com/image/fetch/$s_!bNXw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01940d02-6847-41c0-b059-45db2c63a82c_1390x950.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bNXw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01940d02-6847-41c0-b059-45db2c63a82c_1390x950.png" width="1390" height="950" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01940d02-6847-41c0-b059-45db2c63a82c_1390x950.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:950,&quot;width&quot;:1390,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1247204,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bNXw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01940d02-6847-41c0-b059-45db2c63a82c_1390x950.png 424w, https://substackcdn.com/image/fetch/$s_!bNXw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01940d02-6847-41c0-b059-45db2c63a82c_1390x950.png 848w, https://substackcdn.com/image/fetch/$s_!bNXw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01940d02-6847-41c0-b059-45db2c63a82c_1390x950.png 1272w, https://substackcdn.com/image/fetch/$s_!bNXw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01940d02-6847-41c0-b059-45db2c63a82c_1390x950.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>I also bought a new domain, <a href="http://mov2mp4.com">mov2mp4.com</a>, which links back to <a href="https://compressx.app/">compressx.app</a>.</p><p>As for GitHub Copilot, I found it wasn't useful in my Xcode coding sessions, so I stopped using it. It didn't speed up my work, also the Copilot for Xcode didn't work well. Therefore, I decided to put it aside. Currently, TypingMind is my go-to coding assistant.</p><ul><li><p>Operating Costs:</p><ul><li><p>Vercel: $34</p></li><li><p>TelemetryDeck: &#8364;19</p></li><li><p>Domain: $10.46</p></li><li><p>GitHub Copilot: $10</p></li><li><p>SalesPopup: $29</p></li></ul></li><li><p>Revenue: $2,682.34</p></li><li><p>Payouts: $2,366.38</p></li><li><p>Net Revenue: $2,259.08</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!P2L_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a28c24-508b-4a72-80fd-9b7e50d962ab_2002x1354.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P2L_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a28c24-508b-4a72-80fd-9b7e50d962ab_2002x1354.png 424w, https://substackcdn.com/image/fetch/$s_!P2L_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a28c24-508b-4a72-80fd-9b7e50d962ab_2002x1354.png 848w, https://substackcdn.com/image/fetch/$s_!P2L_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a28c24-508b-4a72-80fd-9b7e50d962ab_2002x1354.png 1272w, https://substackcdn.com/image/fetch/$s_!P2L_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a28c24-508b-4a72-80fd-9b7e50d962ab_2002x1354.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P2L_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a28c24-508b-4a72-80fd-9b7e50d962ab_2002x1354.png" width="1456" height="985" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/52a28c24-508b-4a72-80fd-9b7e50d962ab_2002x1354.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:985,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:132598,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!P2L_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a28c24-508b-4a72-80fd-9b7e50d962ab_2002x1354.png 424w, https://substackcdn.com/image/fetch/$s_!P2L_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a28c24-508b-4a72-80fd-9b7e50d962ab_2002x1354.png 848w, https://substackcdn.com/image/fetch/$s_!P2L_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a28c24-508b-4a72-80fd-9b7e50d962ab_2002x1354.png 1272w, https://substackcdn.com/image/fetch/$s_!P2L_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52a28c24-508b-4a72-80fd-9b7e50d962ab_2002x1354.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1><strong>&#128218; Continue to learn marketing</strong></h1><p>A couple of weeks ago, I had a consultation with <a href="https://twitter.com/illyism">Ilias Ism</a>. He walked me through an audit of compressx.app, offering insights on possible improvements to attract more visitors. This brief call was extremely valuable, especially his sharing of SEO expertise.</p><p>Following the session, I drew up a clear plan to upgrade compressx.app. To boost traffic and improve visibility on Google Search, I've created and added new free tools to my landing page. Big-time indie hackers like Tibo for Typeframes, Dan Kulkov for FounderPal, and Tim for Pally have had success with similar approaches.</p><p>I've also signed up for FounderPal to discover more marketing strategies. My focus should shift towards serious marketing study instead of aimless exploration without action.</p><p>Sure, marketing is tough, but it's also an exciting ride, let&#8217;s conquer this together &#128170;</p><h1><strong>&#127881; Affiliate Sales Success</strong></h1><p>My affiliate program has started yielding results. My first affiliated sale came via <a href="https://toolfolio.io">Toolfolio</a>, a SaaS directory. As of today, 14 partners have joined my affiliate program, leading to 6 sales.</p><p>The journey from visitor to paid customer is quite challenging, and even harder through affiliate partners. Perhaps the landing page is lacking the necessary appeal, or it's not effectively demonstrating the product's value to visitors. Nevertheless, what I can do, and will continue doing, is making improvements and experimenting with new strategies.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://x.com/hieudinh_/status/1778604864974762330" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mPJC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3855bd7b-5747-4b93-9f9a-31024fcc7f81_1166x1448.png 424w, https://substackcdn.com/image/fetch/$s_!mPJC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3855bd7b-5747-4b93-9f9a-31024fcc7f81_1166x1448.png 848w, https://substackcdn.com/image/fetch/$s_!mPJC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3855bd7b-5747-4b93-9f9a-31024fcc7f81_1166x1448.png 1272w, https://substackcdn.com/image/fetch/$s_!mPJC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3855bd7b-5747-4b93-9f9a-31024fcc7f81_1166x1448.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mPJC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3855bd7b-5747-4b93-9f9a-31024fcc7f81_1166x1448.png" width="442" height="548.8987993138936" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3855bd7b-5747-4b93-9f9a-31024fcc7f81_1166x1448.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1448,&quot;width&quot;:1166,&quot;resizeWidth&quot;:442,&quot;bytes&quot;:1225616,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://x.com/hieudinh_/status/1778604864974762330&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mPJC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3855bd7b-5747-4b93-9f9a-31024fcc7f81_1166x1448.png 424w, https://substackcdn.com/image/fetch/$s_!mPJC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3855bd7b-5747-4b93-9f9a-31024fcc7f81_1166x1448.png 848w, https://substackcdn.com/image/fetch/$s_!mPJC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3855bd7b-5747-4b93-9f9a-31024fcc7f81_1166x1448.png 1272w, https://substackcdn.com/image/fetch/$s_!mPJC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3855bd7b-5747-4b93-9f9a-31024fcc7f81_1166x1448.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1><strong>&#127965;&#65039;Travelling highlight</strong></h1><p>I took a brief trip to Kuala Lumpur later in the month. Being rather familiar with the city due to its cultural and culinary similarities to Singapore (my current base), it felt like a home away from home...but at a lower cost! But you know what? - the nasi lemak tasted even better than I expected.</p><p>What surprised me was the new requirement of a $50 visa fee for each entry into the country. (Does anyone else have the same issue?)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KpjW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9d1d82-6d14-43f3-8b76-2323b55b91d8_1290x919.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KpjW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9d1d82-6d14-43f3-8b76-2323b55b91d8_1290x919.png 424w, https://substackcdn.com/image/fetch/$s_!KpjW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9d1d82-6d14-43f3-8b76-2323b55b91d8_1290x919.png 848w, https://substackcdn.com/image/fetch/$s_!KpjW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9d1d82-6d14-43f3-8b76-2323b55b91d8_1290x919.png 1272w, https://substackcdn.com/image/fetch/$s_!KpjW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9d1d82-6d14-43f3-8b76-2323b55b91d8_1290x919.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KpjW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9d1d82-6d14-43f3-8b76-2323b55b91d8_1290x919.png" width="362" height="257.88992248062016" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd9d1d82-6d14-43f3-8b76-2323b55b91d8_1290x919.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:919,&quot;width&quot;:1290,&quot;resizeWidth&quot;:362,&quot;bytes&quot;:779287,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KpjW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9d1d82-6d14-43f3-8b76-2323b55b91d8_1290x919.png 424w, https://substackcdn.com/image/fetch/$s_!KpjW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9d1d82-6d14-43f3-8b76-2323b55b91d8_1290x919.png 848w, https://substackcdn.com/image/fetch/$s_!KpjW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9d1d82-6d14-43f3-8b76-2323b55b91d8_1290x919.png 1272w, https://substackcdn.com/image/fetch/$s_!KpjW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd9d1d82-6d14-43f3-8b76-2323b55b91d8_1290x919.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Me looking at Singapore food after trying Malaysian&#8217;</figcaption></figure></div><p>And did I mention how incredibly delicious the nasi lemak was?</p><h1>&#128075; That&#8217;s all for April</h1><p>Subscribe for more updates, and let's continue to grow together!</p><p>&#8212; Hieu</p>]]></content:encoded></item><item><title><![CDATA[March 2024 - Breaking record revenue and the result of going viral]]></title><description><![CDATA[Also in this issue: Getting criticized in public, interview with Starter Story, and personal updates]]></description><link>https://news.hieudinh.com/p/march-2024-breaking-record-revenue</link><guid isPermaLink="false">https://news.hieudinh.com/p/march-2024-breaking-record-revenue</guid><dc:creator><![CDATA[Hieu Dinh]]></dc:creator><pubDate>Tue, 02 Apr 2024 15:29:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!G2sS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff47e10-54c7-42c4-a334-12a47c6be8b1_2002x1354.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi, everyone &#128075; It's Hieu here &#128568;</p><p>In March, CompressX achieved a new revenue record. But first, let see what I shipped this month.</p><h3><strong>Product updates</strong></h3><p>1 major update and 3 minor updates were released in March with one big feature and many small, impactful improvements to CompressX, all based on what my users asked for. The improvements were implemented and shipped immediately as small updates when I received the feedback from users. This strategy let me quickly solve user needs while still making headway on bigger features. </p><p>For more details, you can review CompressX's changelog <a href="https://compressx.app/changelog">here</a>.</p><h3><strong>Revenue milestone</strong></h3><p>Last month, we celebrated $5k in total revenue milestone. While it was a huge achievement, we've hit another notable milestone this month: CompressX achieving a record revenue of $3,743.87.&nbsp;</p><p>Key factors contributing to this success include:</p><ul><li><p><a href="https://x.com/hieudinh_/status/1766409101108465739?s=20">Viral post</a> on &#120143;, generating over 1 million impressions and approximately $1,700 in revenue in just 4 days post-virality.</p></li><li><p>Product launches on platforms like <a href="https://Uneed.best">Uneed.best</a> and <a href="https://IndieAppSales.com">IndieAppSales.com</a>.</p></li><li><p>Additional viral engagement through a <a href="https://x.com/hieudinh_/status/1771358903756030237?s=20">Reddit post</a>.</p></li></ul><h3><strong>Financial breakdown</strong></h3><ul><li><p><strong>Operating Costs</strong>: $330</p><ul><li><p>Vercel hosting: $20</p></li><li><p>Promotional video: $300</p></li><li><p>GitHub Copilot: $10</p></li></ul></li><li><p><strong>Revenue:</strong> $3,743.87</p></li><li><p><strong>Payouts:</strong> $2,458.64</p></li><li><p><strong>Net Revenue: </strong>$2,128.64</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!G2sS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff47e10-54c7-42c4-a334-12a47c6be8b1_2002x1354.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G2sS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff47e10-54c7-42c4-a334-12a47c6be8b1_2002x1354.png 424w, https://substackcdn.com/image/fetch/$s_!G2sS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff47e10-54c7-42c4-a334-12a47c6be8b1_2002x1354.png 848w, https://substackcdn.com/image/fetch/$s_!G2sS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff47e10-54c7-42c4-a334-12a47c6be8b1_2002x1354.png 1272w, https://substackcdn.com/image/fetch/$s_!G2sS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff47e10-54c7-42c4-a334-12a47c6be8b1_2002x1354.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G2sS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff47e10-54c7-42c4-a334-12a47c6be8b1_2002x1354.png" width="1456" height="985" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fff47e10-54c7-42c4-a334-12a47c6be8b1_2002x1354.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:985,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:23726,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!G2sS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff47e10-54c7-42c4-a334-12a47c6be8b1_2002x1354.png 424w, https://substackcdn.com/image/fetch/$s_!G2sS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff47e10-54c7-42c4-a334-12a47c6be8b1_2002x1354.png 848w, https://substackcdn.com/image/fetch/$s_!G2sS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff47e10-54c7-42c4-a334-12a47c6be8b1_2002x1354.png 1272w, https://substackcdn.com/image/fetch/$s_!G2sS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff47e10-54c7-42c4-a334-12a47c6be8b1_2002x1354.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><h3><strong>Getting criticized in public</strong></h3><p>Receiving public criticism is tough for me, and for any founder, especially when it comes to accusations that CompressX is just a wrapper. It can be disheartening to see negative comments questioning the value of the product, especially when I have put in so much time and effort to create it. However, I think it's important to take feedback constructively and use it as an opportunity to improve and showcase the unique features and benefits of the app. Not everyone will see the value in your app, but as long as you believe in its purpose and continue to innovate, you will attract customers who are willing to pay for the value it provides.</p><h3><strong>Starter Story interview</strong></h3><p>As I shared in previous issue, my interview with Starter Story is now live at https://www.starterstory.com/stories/compressx. The story is read by 4,783 founders at the time this issue was written. I hope that my story can inspire and motivate aspiring entrepreneurs to pursue their dreams and overcome any challenges they may face along the way.</p><h3><strong>Typefully challenges</strong></h3><p>Early this month, I decided to join Typefully challenge: post every day for 30 days. If you are wondering this matters, it serves multiple purposes: building a personal brand, expanding your audience, fostering connections, experimenting with new ideas, and ultimately, funneling more traffic to your SaaS.</p><p>Check out the challenge details <a href="https://x.com/typefully/status/1763520946504183856?s=20">here</a>.</p><h3><strong>Personal growth and upcoming launches</strong></h3><p>This month, I also reached 4,000 followers. As I reflect on my journey on &#120143;, I am grateful for each and every follower who has supported me along the way. I am truly blessed to have such an incredible community surrounding me. </p><p>Having returned to Ho Chi Minh City, I&#8217;m also eager to connect with the indie community and fellow tech enthusiasts. If you&#8217;re around, let&#8217;s catch up!</p><p>April holds exciting prospects for CompressX, with launches planned on <a href="https://microlaunch.net/">MicroLaunch</a> and <a href="https://www.indiehunting.com/">IndieHunting</a>. I am keen to see the impact of these platforms on the app's growth and user engagement.</p><h3><strong>That's all for March</strong></h3><p>Subscribe for more updates, and let's continue to grow together!</p><p>&#8212; Hieu</p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[February 2024: $5K revenue, upcoming interview with Starter Story]]></title><description><![CDATA[Also in this issue: why I introduced new pricing plan, and my experience listing CompressX on SaaS directories]]></description><link>https://news.hieudinh.com/p/february-2024</link><guid isPermaLink="false">https://news.hieudinh.com/p/february-2024</guid><dc:creator><![CDATA[Hieu Dinh]]></dc:creator><pubDate>Fri, 01 Mar 2024 10:43:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!IkMk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e57b6b6-c5b0-4715-ba6f-2629e9038bbf_2002x1354.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi, everyone &#128075; It&#8217;s Hieu again &#128568;</p><p>Let&#8217;s kick off this issue with a small celebration: CompressX has hit $5K in total revenue. It took two challenging months to achieve this milestone, thanks to tireless effort and dedication. It&#8217;s a step towards the larger goals we're setting for CompressX's future.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IkMk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e57b6b6-c5b0-4715-ba6f-2629e9038bbf_2002x1354.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IkMk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e57b6b6-c5b0-4715-ba6f-2629e9038bbf_2002x1354.png 424w, https://substackcdn.com/image/fetch/$s_!IkMk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e57b6b6-c5b0-4715-ba6f-2629e9038bbf_2002x1354.png 848w, https://substackcdn.com/image/fetch/$s_!IkMk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e57b6b6-c5b0-4715-ba6f-2629e9038bbf_2002x1354.png 1272w, https://substackcdn.com/image/fetch/$s_!IkMk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e57b6b6-c5b0-4715-ba6f-2629e9038bbf_2002x1354.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IkMk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e57b6b6-c5b0-4715-ba6f-2629e9038bbf_2002x1354.png" width="1456" height="985" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1e57b6b6-c5b0-4715-ba6f-2629e9038bbf_2002x1354.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:985,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:20817,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IkMk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e57b6b6-c5b0-4715-ba6f-2629e9038bbf_2002x1354.png 424w, https://substackcdn.com/image/fetch/$s_!IkMk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e57b6b6-c5b0-4715-ba6f-2629e9038bbf_2002x1354.png 848w, https://substackcdn.com/image/fetch/$s_!IkMk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e57b6b6-c5b0-4715-ba6f-2629e9038bbf_2002x1354.png 1272w, https://substackcdn.com/image/fetch/$s_!IkMk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e57b6b6-c5b0-4715-ba6f-2629e9038bbf_2002x1354.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>New pricing plans</h1><p>Early this month, I rolled out a new pricing plan for CompressX. The Personal plan, priced at $19, grants access to all features on a single device. Meanwhile, the Standard plan, starting at $29, extends app usage to two devices. The intention behind this pricing structure was to encourage more people to opt for the Standard plan, offering a cost-effective solution for individuals with two devices (myself included) by saving 50%. However, the outcome differed from my expectations. In February, only 15% of the total licenses sold by CompressX were for the Standard plan.</p><p>By updating the pricing, I wanted to fix a problem we had with CompressX: no way to control who uses the app. Before, anyone could share the app with others, and I wouldn't know. Now, to continue using the app, users must activate it with a license key upon purchase. This helps me keep track of who's using the app and stops it from being shared with just anyone.</p><h1>Listing on SaaS directories</h1><p>This month, I experimented with listing CompressX on a few SaaS directories to see if these platforms could drive more traffic to the site. Here is a summary of the visitor traffic from each directory and the associated costs:</p><ul><li><p><a href="https://alternativeto.net/">alternativeto.net</a>: 74 visitors - free</p></li><li><p><a href="https://reddit.com/">reddit.com</a>: 62 visitors - 5 licenses for giveaways</p></li><li><p><a href="https://allonce.co/">allonce.co</a>: 17 visitors - free</p></li><li><p><a href="https://indieappsales.com/">indieappsales.com</a>: 7 visitors - discount code</p></li><li><p><a href="https://makerpeak.com/">makerpeak.com</a>: 6 visitors - $5.99</p></li><li><p><a href="https://1payment.tools/">1payments.tools</a>: 6 visitors - free</p></li><li><p><a href="https://1000.tools/">1000.tools</a>: 5 visitors - $5.99</p></li><li><p><a href="https://primeindies.com/">primeindies.com</a>: 5 visitors - free</p></li><li><p><a href="https://indietool.io/">indietool.io</a>: 2 visitors - free</p></li></ul><p>Unfortunately, I&#8217;m unable to track the conversion rate of each source. Based on these results, I plan to discontinue investing in directories with low performance and seek out higher-traffic directories for listing CompressX. Additionally, I invested $99 to hire a freelancer to list CompressX on 179 different startup directories. While the immediate impact of this investment is unclear, I am hopeful it will yield some backlinks to improve SEO. Understanding that SEO is a long-term endeavor, that doesn't show immediate results, I'm eager to learn more about it. My knowledge in SEO is quite limited, so any insights or experiences you could share in the comments below would be immensely valuable.</p><h1>Revenue and expenses</h1><p>In Feb, my expenses were quite significant, totaling $190.98, which is nearly 13% of the revenue. Despite this, CompressX maintained a substantial margin, with a net profit of $1,205.58. Here's a breakdown of the costs and earnings:</p><ul><li><p><a href="http://1000.tools/">1000.tools</a>: $5.99</p></li><li><p>MakerPeak: $5.99</p></li><li><p>Freelancer fee: $99</p></li><li><p>Lemon Squeezy Email Marketing: $60</p></li><li><p>Vercel: $20</p></li><li><p>Revenue: $1,575.08</p></li><li><p>Payouts: $1,396.56</p></li><li><p>Net profit: $1,205.58</p></li></ul><p>Considering the high expenditure this month, I'm looking into ways to reduce costs. A significant fixed monthly expense is the Lemon Squeezy Email Marketing plan, which caters to over 5,000 subscribers across all my products. This large subscriber base primarily stems from the period when CompressX was offered for free. However, the actual number of daily/monthly active users is considerably lower. To lower the email marketing costs, I plan to remove these inactive subscribers from the list.</p><p>I believe that investing strategically in advertising or marketing could significantly boost traffic and sales. Therefore, I plan to allocate my budget wisely this month. If you have any recommendations on effective marketing channels or strategies I should explore, I'd greatly appreciate your input.</p><h1>Interview with Starter Story</h1><p>Following my application to Starter Story, I've been approached for a feature interview. The interview process is conducted in written form; I received a set of questions to respond to. Currently, my responses are under review. Stay alert, and I'll provide the latest updates in next month's newsletter.</p><h1>&#128075; That's all for now</h1><p>March into a fantastic month ahead!</p><p>&#8212; Hieu</p>]]></content:encoded></item><item><title><![CDATA[January 2024 Highlights: Celebrating $3000 in Revenue, Exciting New Features Unveiled & More!]]></title><description><![CDATA[Hello everyone! It's Hieu again with my monthly updates.]]></description><link>https://news.hieudinh.com/p/january-2024-highlights</link><guid isPermaLink="false">https://news.hieudinh.com/p/january-2024-highlights</guid><dc:creator><![CDATA[Hieu Dinh]]></dc:creator><pubDate>Fri, 02 Feb 2024 13:53:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47024f59-f3f8-42c3-9409-bb6d3c01d6f1_3024x4032.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>Business updates</h1><p>In January, my primary focus was on CompressX, which continues into February.</p><h3>Product Hunt Launch</h3><p>On January 4th, I launched CompressX on Product Hunt, where it achieved the &#129352;#2 Product of the Day.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://news.hieudinh.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Hieu Dinh&#8217;s Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>A heartfelt thank you to everyone who supported the launch! &#128155;</p><p>I've compiled a report detailing my launch process, including preparation strategies and how to build an audience for support. You can access it <a href="https://hieudinh.notion.site/CompressX-s-launch-report-learnings-765d14fed55c47bebd2501e36f6d4793?pvs=4">here</a>.</p><p>This wasn't my first experience launching a product on Product Hunt. One thing I really love is how much feedback and support I get from the community. It's super helpful because it shows me what's missing or what people actually want in the product, which can be pretty different from what I initially thought. If you're in the process of launching or planning to launch a product, don't hesitate to send me a direct message. I'm here to support your journey.</p><h3>CompressX New Releases</h3><p>This month, CompressX rolled out two major updates, introducing a suite of exciting features. Here are some of the highlights:</p><ul><li><p>Image compression</p></li><li><p>GIF conversion</p></li><li><p>Batch processing</p></li><li><p>Real-time display of compression progress</p></li></ul><p>Following these updates, CompressX experienced a notable surge in daily usage, nearly matching the levels seen when the app was initially launched as a free download on &#120143;. I believe the introduction of batch processing and the ability to see compression progress in real time were highly anticipated. As soon as these updates went live, a lot of users updated their app to get a hold of the new features.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sK7E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11a67c1-0494-4e87-b43a-4d4b195e737c_2968x1506.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sK7E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11a67c1-0494-4e87-b43a-4d4b195e737c_2968x1506.png 424w, https://substackcdn.com/image/fetch/$s_!sK7E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11a67c1-0494-4e87-b43a-4d4b195e737c_2968x1506.png 848w, https://substackcdn.com/image/fetch/$s_!sK7E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11a67c1-0494-4e87-b43a-4d4b195e737c_2968x1506.png 1272w, https://substackcdn.com/image/fetch/$s_!sK7E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11a67c1-0494-4e87-b43a-4d4b195e737c_2968x1506.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sK7E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11a67c1-0494-4e87-b43a-4d4b195e737c_2968x1506.png" width="1456" height="739" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c11a67c1-0494-4e87-b43a-4d4b195e737c_2968x1506.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:739,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:461590,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sK7E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11a67c1-0494-4e87-b43a-4d4b195e737c_2968x1506.png 424w, https://substackcdn.com/image/fetch/$s_!sK7E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11a67c1-0494-4e87-b43a-4d4b195e737c_2968x1506.png 848w, https://substackcdn.com/image/fetch/$s_!sK7E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11a67c1-0494-4e87-b43a-4d4b195e737c_2968x1506.png 1272w, https://substackcdn.com/image/fetch/$s_!sK7E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc11a67c1-0494-4e87-b43a-4d4b195e737c_2968x1506.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><h3>Revenue and expenses</h3><p>CompressX helped me earn $3,320.51 in January with 177 orders and 9 refunds. Below is the detailed breakdown of January:</p><ul><li><p>Domain fee: $15.16</p></li><li><p>Vercel Pro plan: $20</p></li><li><p>1000.tools listing: $1</p></li><li><p>Lemon Squeezy email marketing: $60</p></li><li><p>Stickers printing for iOSConfSG: $37</p></li><li><p>Revenue before tax &amp; fee: $3,320.51</p></li><li><p>Lemon Squeezy payouts: $2,076.01</p></li><li><p>Net profit: $1,942.85</p></li></ul><p>Lemon Squeezy processes payouts twice a month, meaning orders from the latter half of January will be paid out in February. This timing complicates the calculation of precise net profits for January if I want to include all orders from that month in the January report. As a result, while Lemon Squeezy reported $3,276.33 in revenue for January, only $2,076.01 has been paid out so far. Therefore, I've decided to align with their payout schedule for simplicity.</p><h3>#BuildInPublic</h3><p>Building in public means sharing everything - your lessons, learnings, successes, and failures - openly. It's about adding your own story and journey to the community, and sometimes, the community gives back in amazing ways. For instance, <a href="https://twitter.com/alemalohe">Alohe</a> generously shared his design for a new CompressX app icon with me. His concept cleverly features the 'X' being compressed, perfectly capturing the essence of "CompressX" in a creative way.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://twitter.com/alemalohe/status/1743509062224838675" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wFt1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b22963-8763-4228-8703-4123dafc9054_1140x1092.png 424w, https://substackcdn.com/image/fetch/$s_!wFt1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b22963-8763-4228-8703-4123dafc9054_1140x1092.png 848w, https://substackcdn.com/image/fetch/$s_!wFt1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b22963-8763-4228-8703-4123dafc9054_1140x1092.png 1272w, https://substackcdn.com/image/fetch/$s_!wFt1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b22963-8763-4228-8703-4123dafc9054_1140x1092.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wFt1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b22963-8763-4228-8703-4123dafc9054_1140x1092.png" width="486" height="465.53684210526313" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79b22963-8763-4228-8703-4123dafc9054_1140x1092.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1140,&quot;resizeWidth&quot;:486,&quot;bytes&quot;:18086,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://twitter.com/alemalohe/status/1743509062224838675&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wFt1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b22963-8763-4228-8703-4123dafc9054_1140x1092.png 424w, https://substackcdn.com/image/fetch/$s_!wFt1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b22963-8763-4228-8703-4123dafc9054_1140x1092.png 848w, https://substackcdn.com/image/fetch/$s_!wFt1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b22963-8763-4228-8703-4123dafc9054_1140x1092.png 1272w, https://substackcdn.com/image/fetch/$s_!wFt1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b22963-8763-4228-8703-4123dafc9054_1140x1092.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>Then there's <a href="https://twitter.com/kacperfyi">Kacper</a>, who completely transformed the hero section of the <a href="https://compressx.app/">compressx.app</a> landing page. I was so impressed by the professional look and feel of his design that I decided to bring it to life. After sharing the updated landing page on &#120143;, I received a lot of valuable feedback. If you haven't checked it out yet, please do and let me know your thoughts.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://twitter.com/kacperfyi/status/1743548412975325446" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V8tQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe89df5-91d3-48b7-ad76-6926765b5d7e_1146x1184.png 424w, https://substackcdn.com/image/fetch/$s_!V8tQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe89df5-91d3-48b7-ad76-6926765b5d7e_1146x1184.png 848w, https://substackcdn.com/image/fetch/$s_!V8tQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe89df5-91d3-48b7-ad76-6926765b5d7e_1146x1184.png 1272w, https://substackcdn.com/image/fetch/$s_!V8tQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe89df5-91d3-48b7-ad76-6926765b5d7e_1146x1184.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V8tQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe89df5-91d3-48b7-ad76-6926765b5d7e_1146x1184.png" width="492" height="508.31413612565444" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3fe89df5-91d3-48b7-ad76-6926765b5d7e_1146x1184.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1184,&quot;width&quot;:1146,&quot;resizeWidth&quot;:492,&quot;bytes&quot;:94650,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://twitter.com/kacperfyi/status/1743548412975325446&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V8tQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe89df5-91d3-48b7-ad76-6926765b5d7e_1146x1184.png 424w, https://substackcdn.com/image/fetch/$s_!V8tQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe89df5-91d3-48b7-ad76-6926765b5d7e_1146x1184.png 848w, https://substackcdn.com/image/fetch/$s_!V8tQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe89df5-91d3-48b7-ad76-6926765b5d7e_1146x1184.png 1272w, https://substackcdn.com/image/fetch/$s_!V8tQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe89df5-91d3-48b7-ad76-6926765b5d7e_1146x1184.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><h3>I Printed Some Stickers</h3><p>In an effort to spread the love for CompressX far and wide, I created some cool stickers and shared them with everyone at iOSConfSG. I really hope everyone likes them! I've kept a few pieces with me, so they travel wherever I go. If you happen to spot me out and about, don't hesitate to come over and say hi&#8212;I'd be more than happy to give you a sticker (or two).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qSK_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47024f59-f3f8-42c3-9409-bb6d3c01d6f1_3024x4032.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qSK_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47024f59-f3f8-42c3-9409-bb6d3c01d6f1_3024x4032.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qSK_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47024f59-f3f8-42c3-9409-bb6d3c01d6f1_3024x4032.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qSK_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47024f59-f3f8-42c3-9409-bb6d3c01d6f1_3024x4032.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qSK_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47024f59-f3f8-42c3-9409-bb6d3c01d6f1_3024x4032.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qSK_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47024f59-f3f8-42c3-9409-bb6d3c01d6f1_3024x4032.jpeg" width="380" height="506.5796703296703" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/47024f59-f3f8-42c3-9409-bb6d3c01d6f1_3024x4032.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1941,&quot;width&quot;:1456,&quot;resizeWidth&quot;:380,&quot;bytes&quot;:465511,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qSK_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47024f59-f3f8-42c3-9409-bb6d3c01d6f1_3024x4032.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qSK_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47024f59-f3f8-42c3-9409-bb6d3c01d6f1_3024x4032.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qSK_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47024f59-f3f8-42c3-9409-bb6d3c01d6f1_3024x4032.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qSK_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47024f59-f3f8-42c3-9409-bb6d3c01d6f1_3024x4032.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><h1>Personal growth</h1><h3>&#120143;</h3><p>This month, my main platform was &#120143;, where my account surpassed 3,000 followers. This achievement is a personal reminder of the importance of continuing to build and share publicly.</p><p>On January 18th, Notion introduced the Notion Calendar, a revamped version originally known as the Cron calendar. Despite the popularity of the Cron app icon, Notion opted for a new design for the Notion Calendar icon. While the new icon isn't bad, there's a clear preference for the original Cron design among users. This scenario provided me with a perfect opportunity to reintroduce my IconX app, which I developed last November. The post took off, garnering over 133K impressions and leading to approximately 300 downloads. Some might think I was just lucky, but I think I brought myself into a position that allowed me to be lucky, as well said <a href="https://twitter.com/SebastianRoehl">Sebastian R&#246;hl</a>. Had I not built IconX, I would have missed out on this viral moment.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://x.com/hieudinh_/status/1747827878946115745?s=20" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mxt3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28fe1af-126a-495c-a92b-1495d284506f_904x942.png 424w, https://substackcdn.com/image/fetch/$s_!mxt3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28fe1af-126a-495c-a92b-1495d284506f_904x942.png 848w, https://substackcdn.com/image/fetch/$s_!mxt3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28fe1af-126a-495c-a92b-1495d284506f_904x942.png 1272w, https://substackcdn.com/image/fetch/$s_!mxt3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28fe1af-126a-495c-a92b-1495d284506f_904x942.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mxt3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28fe1af-126a-495c-a92b-1495d284506f_904x942.png" width="476" height="496.0088495575221" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f28fe1af-126a-495c-a92b-1495d284506f_904x942.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:942,&quot;width&quot;:904,&quot;resizeWidth&quot;:476,&quot;bytes&quot;:100000,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://x.com/hieudinh_/status/1747827878946115745?s=20&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mxt3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28fe1af-126a-495c-a92b-1495d284506f_904x942.png 424w, https://substackcdn.com/image/fetch/$s_!mxt3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28fe1af-126a-495c-a92b-1495d284506f_904x942.png 848w, https://substackcdn.com/image/fetch/$s_!mxt3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28fe1af-126a-495c-a92b-1495d284506f_904x942.png 1272w, https://substackcdn.com/image/fetch/$s_!mxt3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff28fe1af-126a-495c-a92b-1495d284506f_904x942.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><h3>Engineering blog</h3><p>In the previous issue, I talked about the utility of deep linking within SwiftUI apps. It's an incredibly useful method for directly accessing specific screens in your app. I've penned a blog post detailing the basic setup required to implement deep linking. Feel free to check it out <a href="https://hieudinh.notion.site/Deep-linking-in-SwiftUI-app-a289d98481c84430b8e294d8b3e70ab1?pvs=4">here</a>.</p><h3>iOS Conf SG</h3><p>iOS Conf SG is the largest gathering of iOS and Apple developers in Southeast Asia. I got to hang out with some seriously cool iOS devs from all over the world and ended up making a bunch of new friends.</p><p>Day one was a blast, especially the SwiftData workshop by Paul Hudson. For anyone diving into SwiftUI, SwiftData is a total game-changer. It&#8217;s like CoreData's got your back but without all the headache-inducing bits.</p><p>The conference was jam-packed with awesome talks over two days, covering everything from iOS and tvOS development to embedded systems and even some inspirational side stories. If you wanna catch up on what went down, all the talks are up on the conference site at https://www.iosconf.sg/</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9qfK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618f536f-0e6d-4bc4-b7f6-ca440b3cc0c7_8468x4508.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9qfK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618f536f-0e6d-4bc4-b7f6-ca440b3cc0c7_8468x4508.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9qfK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618f536f-0e6d-4bc4-b7f6-ca440b3cc0c7_8468x4508.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9qfK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618f536f-0e6d-4bc4-b7f6-ca440b3cc0c7_8468x4508.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9qfK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618f536f-0e6d-4bc4-b7f6-ca440b3cc0c7_8468x4508.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9qfK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618f536f-0e6d-4bc4-b7f6-ca440b3cc0c7_8468x4508.jpeg" width="728" height="387.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/618f536f-0e6d-4bc4-b7f6-ca440b3cc0c7_8468x4508.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:775,&quot;width&quot;:1456,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:4246512,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9qfK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618f536f-0e6d-4bc4-b7f6-ca440b3cc0c7_8468x4508.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9qfK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618f536f-0e6d-4bc4-b7f6-ca440b3cc0c7_8468x4508.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9qfK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618f536f-0e6d-4bc4-b7f6-ca440b3cc0c7_8468x4508.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9qfK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618f536f-0e6d-4bc4-b7f6-ca440b3cc0c7_8468x4508.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Me standing right next to Paul Hudson.</figcaption></figure></div><p>Going to conferences isn't just about soaking up new knowledge; it's also about the people you meet along the way. Back in my uni days in Vietnam, I never missed an iOS conference. Those talks didn't just fill my head with ideas; they solidified my dream of becoming an iOS developer. Paul Hudson nailed it when he said, "Everyone has something to learn and everyone has something to teach." I'm holding onto the hope that, one day, I'll be the one up there on stage, passing on what I've learned to others.</p><h1>Learnings</h1><p>Here are some cool tips and tricks I stumbled upon and definitely think you should check out:</p><ul><li><p>Tired of updating your copyright footer every year? <a href="https://twitter.com/phuctm97">Minh-Phuc Tran</a> shares a genius way to set it and forget it. Don't miss out on this life hack</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://twitter.com/phuctm97/status/1741646477628453061" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yob8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400bd1d-d89c-4e5a-a2e0-b0d85e806175_1118x1112.png 424w, https://substackcdn.com/image/fetch/$s_!yob8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400bd1d-d89c-4e5a-a2e0-b0d85e806175_1118x1112.png 848w, https://substackcdn.com/image/fetch/$s_!yob8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400bd1d-d89c-4e5a-a2e0-b0d85e806175_1118x1112.png 1272w, https://substackcdn.com/image/fetch/$s_!yob8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400bd1d-d89c-4e5a-a2e0-b0d85e806175_1118x1112.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yob8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400bd1d-d89c-4e5a-a2e0-b0d85e806175_1118x1112.png" width="432" height="429.68157423971377" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6400bd1d-d89c-4e5a-a2e0-b0d85e806175_1118x1112.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1112,&quot;width&quot;:1118,&quot;resizeWidth&quot;:432,&quot;bytes&quot;:203113,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://twitter.com/phuctm97/status/1741646477628453061&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yob8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400bd1d-d89c-4e5a-a2e0-b0d85e806175_1118x1112.png 424w, https://substackcdn.com/image/fetch/$s_!yob8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400bd1d-d89c-4e5a-a2e0-b0d85e806175_1118x1112.png 848w, https://substackcdn.com/image/fetch/$s_!yob8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400bd1d-d89c-4e5a-a2e0-b0d85e806175_1118x1112.png 1272w, https://substackcdn.com/image/fetch/$s_!yob8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400bd1d-d89c-4e5a-a2e0-b0d85e806175_1118x1112.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><ul><li><p>Did you know you can add an &#8220;Install&#8221; button for your app directly on the &#120143; timeline, making it super easy for users to download your app from the App Store or Play Store? See how <a href="https://twitter.com/Amani_Art">AMANi</a> pulled it off</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://twitter.com/Amani_Art/status/1742499095091036200" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bZ8H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb62581-faa7-47fa-9df1-4d4679b18664_896x1340.png 424w, https://substackcdn.com/image/fetch/$s_!bZ8H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb62581-faa7-47fa-9df1-4d4679b18664_896x1340.png 848w, https://substackcdn.com/image/fetch/$s_!bZ8H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb62581-faa7-47fa-9df1-4d4679b18664_896x1340.png 1272w, https://substackcdn.com/image/fetch/$s_!bZ8H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb62581-faa7-47fa-9df1-4d4679b18664_896x1340.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bZ8H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb62581-faa7-47fa-9df1-4d4679b18664_896x1340.png" width="414" height="619.1517857142857" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4eb62581-faa7-47fa-9df1-4d4679b18664_896x1340.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1340,&quot;width&quot;:896,&quot;resizeWidth&quot;:414,&quot;bytes&quot;:126603,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://twitter.com/Amani_Art/status/1742499095091036200&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bZ8H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb62581-faa7-47fa-9df1-4d4679b18664_896x1340.png 424w, https://substackcdn.com/image/fetch/$s_!bZ8H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb62581-faa7-47fa-9df1-4d4679b18664_896x1340.png 848w, https://substackcdn.com/image/fetch/$s_!bZ8H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb62581-faa7-47fa-9df1-4d4679b18664_896x1340.png 1272w, https://substackcdn.com/image/fetch/$s_!bZ8H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eb62581-faa7-47fa-9df1-4d4679b18664_896x1340.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><ul><li><p>Ever do something fun or quirky at an Apple Store? Here's something to try on your next visit</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://twitter.com/hieudinh_/status/1745807895948886153" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!arDX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32274ca7-ef3a-49db-9189-411d77ab7777_896x1262.png 424w, https://substackcdn.com/image/fetch/$s_!arDX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32274ca7-ef3a-49db-9189-411d77ab7777_896x1262.png 848w, https://substackcdn.com/image/fetch/$s_!arDX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32274ca7-ef3a-49db-9189-411d77ab7777_896x1262.png 1272w, https://substackcdn.com/image/fetch/$s_!arDX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32274ca7-ef3a-49db-9189-411d77ab7777_896x1262.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!arDX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32274ca7-ef3a-49db-9189-411d77ab7777_896x1262.png" width="406" height="571.84375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32274ca7-ef3a-49db-9189-411d77ab7777_896x1262.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1262,&quot;width&quot;:896,&quot;resizeWidth&quot;:406,&quot;bytes&quot;:327621,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://twitter.com/hieudinh_/status/1745807895948886153&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!arDX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32274ca7-ef3a-49db-9189-411d77ab7777_896x1262.png 424w, https://substackcdn.com/image/fetch/$s_!arDX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32274ca7-ef3a-49db-9189-411d77ab7777_896x1262.png 848w, https://substackcdn.com/image/fetch/$s_!arDX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32274ca7-ef3a-49db-9189-411d77ab7777_896x1262.png 1272w, https://substackcdn.com/image/fetch/$s_!arDX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32274ca7-ef3a-49db-9189-411d77ab7777_896x1262.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><ul><li><p>I learned that SwiftUI View&#8217;s body is marked with @MainActor, so it&#8217;s safe to use Task in the Button&#8217;s action because the system will make sure UI will be updated in the main thread. Also, here&#8217;s a cool way to write async button in SwiftUI, shared by <a href="https://twitter.com/SeanRobinson159">Sean Robinson</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://twitter.com/SeanRobinson159/status/1669364999733776385/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!L_k8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07eb020-db94-4e33-97a8-371516377335_1398x1898.jpeg 424w, https://substackcdn.com/image/fetch/$s_!L_k8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07eb020-db94-4e33-97a8-371516377335_1398x1898.jpeg 848w, https://substackcdn.com/image/fetch/$s_!L_k8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07eb020-db94-4e33-97a8-371516377335_1398x1898.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!L_k8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07eb020-db94-4e33-97a8-371516377335_1398x1898.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!L_k8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07eb020-db94-4e33-97a8-371516377335_1398x1898.jpeg" width="390" height="529.4849785407725" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c07eb020-db94-4e33-97a8-371516377335_1398x1898.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1898,&quot;width&quot;:1398,&quot;resizeWidth&quot;:390,&quot;bytes&quot;:99377,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:&quot;https://twitter.com/SeanRobinson159/status/1669364999733776385/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!L_k8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07eb020-db94-4e33-97a8-371516377335_1398x1898.jpeg 424w, https://substackcdn.com/image/fetch/$s_!L_k8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07eb020-db94-4e33-97a8-371516377335_1398x1898.jpeg 848w, https://substackcdn.com/image/fetch/$s_!L_k8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07eb020-db94-4e33-97a8-371516377335_1398x1898.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!L_k8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc07eb020-db94-4e33-97a8-371516377335_1398x1898.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></li><li><p>When you're sending out emails about product updates, here's a smart tip: always ask for testimonials. I picked up this valuable advice from <a href="https://twitter.com/threehourcoffee">Marie Ng</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://twitter.com/threehourcoffee/status/1747471240888205675" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RPmT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F994b924d-0186-4507-ac0a-d6eb93144194_1008x1218.png 424w, https://substackcdn.com/image/fetch/$s_!RPmT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F994b924d-0186-4507-ac0a-d6eb93144194_1008x1218.png 848w, https://substackcdn.com/image/fetch/$s_!RPmT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F994b924d-0186-4507-ac0a-d6eb93144194_1008x1218.png 1272w, https://substackcdn.com/image/fetch/$s_!RPmT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F994b924d-0186-4507-ac0a-d6eb93144194_1008x1218.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RPmT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F994b924d-0186-4507-ac0a-d6eb93144194_1008x1218.png" width="398" height="480.9166666666667" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/994b924d-0186-4507-ac0a-d6eb93144194_1008x1218.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1218,&quot;width&quot;:1008,&quot;resizeWidth&quot;:398,&quot;bytes&quot;:77526,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://twitter.com/threehourcoffee/status/1747471240888205675&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RPmT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F994b924d-0186-4507-ac0a-d6eb93144194_1008x1218.png 424w, https://substackcdn.com/image/fetch/$s_!RPmT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F994b924d-0186-4507-ac0a-d6eb93144194_1008x1218.png 848w, https://substackcdn.com/image/fetch/$s_!RPmT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F994b924d-0186-4507-ac0a-d6eb93144194_1008x1218.png 1272w, https://substackcdn.com/image/fetch/$s_!RPmT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F994b924d-0186-4507-ac0a-d6eb93144194_1008x1218.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><ul><li><p><a href="https://twitter.com/florianvates">Florian Vates</a> shared his tips to replicate a Figma animation curve 1:1 in Swift</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o3ND!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb06d00-315e-4b57-8784-3e379704ef28_1116x1220.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o3ND!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb06d00-315e-4b57-8784-3e379704ef28_1116x1220.png 424w, https://substackcdn.com/image/fetch/$s_!o3ND!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb06d00-315e-4b57-8784-3e379704ef28_1116x1220.png 848w, https://substackcdn.com/image/fetch/$s_!o3ND!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb06d00-315e-4b57-8784-3e379704ef28_1116x1220.png 1272w, https://substackcdn.com/image/fetch/$s_!o3ND!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb06d00-315e-4b57-8784-3e379704ef28_1116x1220.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o3ND!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb06d00-315e-4b57-8784-3e379704ef28_1116x1220.png" width="390" height="426.3440860215054" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6eb06d00-315e-4b57-8784-3e379704ef28_1116x1220.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1220,&quot;width&quot;:1116,&quot;resizeWidth&quot;:390,&quot;bytes&quot;:103788,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!o3ND!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb06d00-315e-4b57-8784-3e379704ef28_1116x1220.png 424w, https://substackcdn.com/image/fetch/$s_!o3ND!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb06d00-315e-4b57-8784-3e379704ef28_1116x1220.png 848w, https://substackcdn.com/image/fetch/$s_!o3ND!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb06d00-315e-4b57-8784-3e379704ef28_1116x1220.png 1272w, https://substackcdn.com/image/fetch/$s_!o3ND!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb06d00-315e-4b57-8784-3e379704ef28_1116x1220.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>That&#8217;s all for this month</h1><p>Did you embark on any exciting projects or learn something new? Share your highlights with me too. Let's inspire each other as we dive into February!</p><p>Thank you for subscribing to my newsletter and see you all next month!</p><p>&#8212; Hieu</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://news.hieudinh.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Hieu Dinh&#8217;s Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[2023 Look back]]></title><description><![CDATA[Everything I have built and learnt in 2023]]></description><link>https://news.hieudinh.com/p/2023-look-back</link><guid isPermaLink="false">https://news.hieudinh.com/p/2023-look-back</guid><dc:creator><![CDATA[Hieu Dinh]]></dc:creator><pubDate>Sat, 30 Dec 2023 16:02:08 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/1f09d5da-abf3-4b21-ab0a-fc8f931c991c_1495x1102.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This year I built and released four apps, with one of them making a significant impact.</p><p><strong>#1 - <a href="https://apple.co/43ZX1vr">Dad Jokes and Puns</a> - July</strong></p><p>This is a mobile app where I share all my favorite dad jokes from the internet. The app has a simple yet beautiful user interface. It shows a list of jokes and when you tap on each joke you will be navigated to a detail screen. You can also upvote and bookmark your favorite joke.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mgv4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb8e38b-8a14-490e-89c1-087dc134b276_1765x1102.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mgv4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb8e38b-8a14-490e-89c1-087dc134b276_1765x1102.png 424w, https://substackcdn.com/image/fetch/$s_!Mgv4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb8e38b-8a14-490e-89c1-087dc134b276_1765x1102.png 848w, https://substackcdn.com/image/fetch/$s_!Mgv4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb8e38b-8a14-490e-89c1-087dc134b276_1765x1102.png 1272w, https://substackcdn.com/image/fetch/$s_!Mgv4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb8e38b-8a14-490e-89c1-087dc134b276_1765x1102.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mgv4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb8e38b-8a14-490e-89c1-087dc134b276_1765x1102.png" width="1456" height="909" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efb8e38b-8a14-490e-89c1-087dc134b276_1765x1102.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:909,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:223560,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Mgv4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb8e38b-8a14-490e-89c1-087dc134b276_1765x1102.png 424w, https://substackcdn.com/image/fetch/$s_!Mgv4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb8e38b-8a14-490e-89c1-087dc134b276_1765x1102.png 848w, https://substackcdn.com/image/fetch/$s_!Mgv4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb8e38b-8a14-490e-89c1-087dc134b276_1765x1102.png 1272w, https://substackcdn.com/image/fetch/$s_!Mgv4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb8e38b-8a14-490e-89c1-087dc134b276_1765x1102.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>Tech stack I used for this app:</p><ul><li><p>SwiftUI for building the UI</p></li><li><p>Supabase Database and Edge Functions for storing jokes and upvotes</p></li><li><p>TemeletryDeck for anonymous analytics</p></li><li><p>Google AdMob for showing ads</p></li><li><p>Fastlane for automated deployment</p></li></ul><p>The app also supports widgets and deep linking from the widget to the joke detail screen. If you're curious about deep linking and how it enhances user experience, feel free to comment below. I'm more than happy to write an in-depth post about it if there's enough interest.</p><p><strong>#2 - <a href="https://www.eyesbuddy.app/">Eyes Buddy</a> - October</strong></p><p>I created this app following my wife's myopia surgery. It&#8217;s a simple macOS app designed to remind you to take regular breaks and relax your eyes after a set period of time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5ZTk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad531f95-f2fe-4243-a85e-25ef5d0e102f_1765x1102.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5ZTk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad531f95-f2fe-4243-a85e-25ef5d0e102f_1765x1102.png 424w, https://substackcdn.com/image/fetch/$s_!5ZTk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad531f95-f2fe-4243-a85e-25ef5d0e102f_1765x1102.png 848w, https://substackcdn.com/image/fetch/$s_!5ZTk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad531f95-f2fe-4243-a85e-25ef5d0e102f_1765x1102.png 1272w, https://substackcdn.com/image/fetch/$s_!5ZTk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad531f95-f2fe-4243-a85e-25ef5d0e102f_1765x1102.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5ZTk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad531f95-f2fe-4243-a85e-25ef5d0e102f_1765x1102.png" width="1456" height="909" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad531f95-f2fe-4243-a85e-25ef5d0e102f_1765x1102.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:909,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:734149,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5ZTk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad531f95-f2fe-4243-a85e-25ef5d0e102f_1765x1102.png 424w, https://substackcdn.com/image/fetch/$s_!5ZTk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad531f95-f2fe-4243-a85e-25ef5d0e102f_1765x1102.png 848w, https://substackcdn.com/image/fetch/$s_!5ZTk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad531f95-f2fe-4243-a85e-25ef5d0e102f_1765x1102.png 1272w, https://substackcdn.com/image/fetch/$s_!5ZTk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad531f95-f2fe-4243-a85e-25ef5d0e102f_1765x1102.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>In this app, I learned:</p><ul><li><p>How to present a full-screen window above all running applications</p></li><li><p>How to get notified when the screen is locked or unlocked</p></li><li><p>How to make a menu bar app</p></li><li><p>How to hide the dock icon when all windows are closed and still keep the app running</p></li><li><p>How to use macOS-like settings UI</p></li><li><p>How to detect user inactivity</p></li></ul><p>If you are interested in any of the points above, feel free to leave a comment. I will write a post about how I did it.</p><p>Tech stack I used for Eyes Buddy:</p><ul><li><p>SwiftUI for building the UI</p></li><li><p>TemeletryDeck for anonymous analytics</p></li><li><p>Sparkle for software updates</p></li><li><p>LaunchAtLogin to handle launch at login</p></li></ul><p><strong>#3 - <a href="https://hieudinh.com/iconx">IconX</a> - November</strong></p><p>I love personalizing my dock, which led me to develop this app for macOS. It&#8217;s very simple: just select the app whose icon you wish to modify, choose your desired icon, and voil&#224; &#8211; customization made easy!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cAKQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4598a1c3-aa75-4398-ac38-cc799cb7095d_1453x907.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cAKQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4598a1c3-aa75-4398-ac38-cc799cb7095d_1453x907.png 424w, https://substackcdn.com/image/fetch/$s_!cAKQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4598a1c3-aa75-4398-ac38-cc799cb7095d_1453x907.png 848w, https://substackcdn.com/image/fetch/$s_!cAKQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4598a1c3-aa75-4398-ac38-cc799cb7095d_1453x907.png 1272w, https://substackcdn.com/image/fetch/$s_!cAKQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4598a1c3-aa75-4398-ac38-cc799cb7095d_1453x907.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cAKQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4598a1c3-aa75-4398-ac38-cc799cb7095d_1453x907.png" width="412" height="257.1810048176187" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4598a1c3-aa75-4398-ac38-cc799cb7095d_1453x907.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:907,&quot;width&quot;:1453,&quot;resizeWidth&quot;:412,&quot;bytes&quot;:41294,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cAKQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4598a1c3-aa75-4398-ac38-cc799cb7095d_1453x907.png 424w, https://substackcdn.com/image/fetch/$s_!cAKQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4598a1c3-aa75-4398-ac38-cc799cb7095d_1453x907.png 848w, https://substackcdn.com/image/fetch/$s_!cAKQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4598a1c3-aa75-4398-ac38-cc799cb7095d_1453x907.png 1272w, https://substackcdn.com/image/fetch/$s_!cAKQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4598a1c3-aa75-4398-ac38-cc799cb7095d_1453x907.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>Things I learned when building this app:</p><ul><li><p>How to change the icon of an app manually, and programmatically</p></li><li><p>How to open a file in the Finder window programmatically</p></li></ul><p>Tech stack I used for IconX:</p><ul><li><p>SwiftUI for building the UI</p></li><li><p>TemeletryDeck for anonymous analytics</p></li><li><p>Sparkle for software updates</p></li></ul><p><strong>#4 - <a href="https://hieudinh.com/compressx">CompressX</a> - December</strong></p><p>In my role, we have a practice of including a screen record demo with each pull/merge request, which helps code reviewers quickly understand the changes being made. This is a very good practice to improve code quality in our team. However, due to GitLab limitations, the video file must be under 10 MB for upload. While my team typically uses FFmpeg to compress videos, which is quite effective, I find the workflow &#8211; adjusting commands for each video or running scripts &#8211; a bit cumbersome, as I'm not particularly inclined towards terminal-based tasks. To streamline this process, I developed a macOS app that simplifies video compression.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IZ66!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a26bc03-3a68-4720-b4cc-aeeb09adc674_1510x1102.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IZ66!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a26bc03-3a68-4720-b4cc-aeeb09adc674_1510x1102.png 424w, https://substackcdn.com/image/fetch/$s_!IZ66!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a26bc03-3a68-4720-b4cc-aeeb09adc674_1510x1102.png 848w, https://substackcdn.com/image/fetch/$s_!IZ66!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a26bc03-3a68-4720-b4cc-aeeb09adc674_1510x1102.png 1272w, https://substackcdn.com/image/fetch/$s_!IZ66!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a26bc03-3a68-4720-b4cc-aeeb09adc674_1510x1102.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IZ66!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a26bc03-3a68-4720-b4cc-aeeb09adc674_1510x1102.png" width="1456" height="1063" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a26bc03-3a68-4720-b4cc-aeeb09adc674_1510x1102.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1063,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:118963,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IZ66!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a26bc03-3a68-4720-b4cc-aeeb09adc674_1510x1102.png 424w, https://substackcdn.com/image/fetch/$s_!IZ66!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a26bc03-3a68-4720-b4cc-aeeb09adc674_1510x1102.png 848w, https://substackcdn.com/image/fetch/$s_!IZ66!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a26bc03-3a68-4720-b4cc-aeeb09adc674_1510x1102.png 1272w, https://substackcdn.com/image/fetch/$s_!IZ66!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a26bc03-3a68-4720-b4cc-aeeb09adc674_1510x1102.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>Things I learned when building this app:</p><ul><li><p>How to run a terminal command from a macOS app</p></li><li><p>How to handle dropping a file into the app</p></li><li><p>How to calculate file size</p></li><li><p>How to check if the video has an audio track</p></li><li><p>How to check if the video is transparent and preserve the transparency of the video</p></li><li><p>How to handle WebM video</p></li><li><p>How to open the Notifications setting in the System Settings app programmatically</p></li><li><p>How to prevent a user from closing the app window</p></li><li><p>How to make a Raycast extension</p></li><li><p>How to handle Open With when the user right-clicks a file from Finder</p></li></ul><p>Tech stack I used for CompressX:</p><ul><li><p>SwiftUI for building the UI</p></li><li><p>TemeletryDeck for anonymous analytics</p></li><li><p>Sparkle for software updates</p></li></ul><p>Other than building the app itself, I also learned how to build a landing page for it. The page is relatively straightforward but I do love it.</p><p></p><p>Among these 4 apps, CompressX is the one that receives a lot of attention. One day after sharing on &#120143;, the post receives 308K impressions. I got 2,4K downloads and $104 in my pocket (the app is free to download with the &#8220;Pay what you want&#8221; option at that moment). People love it and they are amazed by how much the file size has reduced. I received a lot of feedback and made a bunch of improvements.</p><div><hr></div><p>CompressX is scheduled to launch on Product Hunt on January 4th, 2024. I would like to invite you to join me on the launch date. If you love it, please leave an upvote and review. That would mean a lot to me!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.producthunt.com/posts/compressx" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R80l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fcdc060-57ee-416f-a98f-3867d7aaef4e_2136x1078.png 424w, https://substackcdn.com/image/fetch/$s_!R80l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fcdc060-57ee-416f-a98f-3867d7aaef4e_2136x1078.png 848w, https://substackcdn.com/image/fetch/$s_!R80l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fcdc060-57ee-416f-a98f-3867d7aaef4e_2136x1078.png 1272w, https://substackcdn.com/image/fetch/$s_!R80l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fcdc060-57ee-416f-a98f-3867d7aaef4e_2136x1078.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R80l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fcdc060-57ee-416f-a98f-3867d7aaef4e_2136x1078.png" width="1456" height="735" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7fcdc060-57ee-416f-a98f-3867d7aaef4e_2136x1078.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:735,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47811,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.producthunt.com/posts/compressx&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!R80l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fcdc060-57ee-416f-a98f-3867d7aaef4e_2136x1078.png 424w, https://substackcdn.com/image/fetch/$s_!R80l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fcdc060-57ee-416f-a98f-3867d7aaef4e_2136x1078.png 848w, https://substackcdn.com/image/fetch/$s_!R80l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fcdc060-57ee-416f-a98f-3867d7aaef4e_2136x1078.png 1272w, https://substackcdn.com/image/fetch/$s_!R80l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fcdc060-57ee-416f-a98f-3867d7aaef4e_2136x1078.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><p>Besides all apps I shared above, I also built Apps Everyday but never launched it. The app is a collection of best-in-class apps that I love. The app requires many manual operations but I didn&#8217;t have enough time to automate them, so I dropped.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://twitter.com/hieudinh_/status/1676847928101736450" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fgqx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F582c1af5-2dff-415f-a9ff-70c632bd567e_1192x1564.png 424w, https://substackcdn.com/image/fetch/$s_!fgqx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F582c1af5-2dff-415f-a9ff-70c632bd567e_1192x1564.png 848w, https://substackcdn.com/image/fetch/$s_!fgqx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F582c1af5-2dff-415f-a9ff-70c632bd567e_1192x1564.png 1272w, https://substackcdn.com/image/fetch/$s_!fgqx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F582c1af5-2dff-415f-a9ff-70c632bd567e_1192x1564.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fgqx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F582c1af5-2dff-415f-a9ff-70c632bd567e_1192x1564.png" width="366" height="480.22147651006713" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/582c1af5-2dff-415f-a9ff-70c632bd567e_1192x1564.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1564,&quot;width&quot;:1192,&quot;resizeWidth&quot;:366,&quot;bytes&quot;:208132,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://twitter.com/hieudinh_/status/1676847928101736450&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fgqx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F582c1af5-2dff-415f-a9ff-70c632bd567e_1192x1564.png 424w, https://substackcdn.com/image/fetch/$s_!fgqx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F582c1af5-2dff-415f-a9ff-70c632bd567e_1192x1564.png 848w, https://substackcdn.com/image/fetch/$s_!fgqx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F582c1af5-2dff-415f-a9ff-70c632bd567e_1192x1564.png 1272w, https://substackcdn.com/image/fetch/$s_!fgqx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F582c1af5-2dff-415f-a9ff-70c632bd567e_1192x1564.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>In May, I decided to open source one of my apps: Deeplink Buddy. I use this app every day for my job.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://x.com/hieudinh_/status/1658499977491124224?s=20" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mG0S!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b94ce93-2321-43f8-afdf-5d2a617c254a_1150x744.png 424w, https://substackcdn.com/image/fetch/$s_!mG0S!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b94ce93-2321-43f8-afdf-5d2a617c254a_1150x744.png 848w, https://substackcdn.com/image/fetch/$s_!mG0S!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b94ce93-2321-43f8-afdf-5d2a617c254a_1150x744.png 1272w, https://substackcdn.com/image/fetch/$s_!mG0S!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b94ce93-2321-43f8-afdf-5d2a617c254a_1150x744.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mG0S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b94ce93-2321-43f8-afdf-5d2a617c254a_1150x744.png" width="392" height="253.60695652173914" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b94ce93-2321-43f8-afdf-5d2a617c254a_1150x744.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:744,&quot;width&quot;:1150,&quot;resizeWidth&quot;:392,&quot;bytes&quot;:39781,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://x.com/hieudinh_/status/1658499977491124224?s=20&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mG0S!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b94ce93-2321-43f8-afdf-5d2a617c254a_1150x744.png 424w, https://substackcdn.com/image/fetch/$s_!mG0S!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b94ce93-2321-43f8-afdf-5d2a617c254a_1150x744.png 848w, https://substackcdn.com/image/fetch/$s_!mG0S!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b94ce93-2321-43f8-afdf-5d2a617c254a_1150x744.png 1272w, https://substackcdn.com/image/fetch/$s_!mG0S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b94ce93-2321-43f8-afdf-5d2a617c254a_1150x744.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>I made a demo of the Apple Mail app concept, and it went viral</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://x.com/hieudinh_/status/1696197966602842160?s=20" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zx3T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F130527f1-0276-417b-9ae2-70fe035cf483_1184x1556.png 424w, https://substackcdn.com/image/fetch/$s_!zx3T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F130527f1-0276-417b-9ae2-70fe035cf483_1184x1556.png 848w, https://substackcdn.com/image/fetch/$s_!zx3T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F130527f1-0276-417b-9ae2-70fe035cf483_1184x1556.png 1272w, https://substackcdn.com/image/fetch/$s_!zx3T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F130527f1-0276-417b-9ae2-70fe035cf483_1184x1556.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zx3T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F130527f1-0276-417b-9ae2-70fe035cf483_1184x1556.png" width="412" height="541.4459459459459" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/130527f1-0276-417b-9ae2-70fe035cf483_1184x1556.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1556,&quot;width&quot;:1184,&quot;resizeWidth&quot;:412,&quot;bytes&quot;:1026651,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://x.com/hieudinh_/status/1696197966602842160?s=20&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zx3T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F130527f1-0276-417b-9ae2-70fe035cf483_1184x1556.png 424w, https://substackcdn.com/image/fetch/$s_!zx3T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F130527f1-0276-417b-9ae2-70fe035cf483_1184x1556.png 848w, https://substackcdn.com/image/fetch/$s_!zx3T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F130527f1-0276-417b-9ae2-70fe035cf483_1184x1556.png 1272w, https://substackcdn.com/image/fetch/$s_!zx3T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F130527f1-0276-417b-9ae2-70fe035cf483_1184x1556.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>I also made this cool animation, and people loved it</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://x.com/hieudinh_/status/1695275074901999949?s=20" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lLsq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf990a6a-cf15-4568-8dc6-f8512d7cd393_1166x1606.png 424w, https://substackcdn.com/image/fetch/$s_!lLsq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf990a6a-cf15-4568-8dc6-f8512d7cd393_1166x1606.png 848w, https://substackcdn.com/image/fetch/$s_!lLsq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf990a6a-cf15-4568-8dc6-f8512d7cd393_1166x1606.png 1272w, https://substackcdn.com/image/fetch/$s_!lLsq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf990a6a-cf15-4568-8dc6-f8512d7cd393_1166x1606.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lLsq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf990a6a-cf15-4568-8dc6-f8512d7cd393_1166x1606.png" width="400" height="550.9433962264151" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf990a6a-cf15-4568-8dc6-f8512d7cd393_1166x1606.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1606,&quot;width&quot;:1166,&quot;resizeWidth&quot;:400,&quot;bytes&quot;:715212,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://x.com/hieudinh_/status/1695275074901999949?s=20&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lLsq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf990a6a-cf15-4568-8dc6-f8512d7cd393_1166x1606.png 424w, https://substackcdn.com/image/fetch/$s_!lLsq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf990a6a-cf15-4568-8dc6-f8512d7cd393_1166x1606.png 848w, https://substackcdn.com/image/fetch/$s_!lLsq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf990a6a-cf15-4568-8dc6-f8512d7cd393_1166x1606.png 1272w, https://substackcdn.com/image/fetch/$s_!lLsq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf990a6a-cf15-4568-8dc6-f8512d7cd393_1166x1606.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><p>Some of my favorite tips this year:</p><ul><li><p>If you use Xcode, you can make it pop &#127881;&nbsp;whenever Xcode builds successfully</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://x.com/hieudinh_/status/1615908850493947908?s=20" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!msGU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12420c70-3454-4ce8-bf63-ae5f4474ca29_1172x1106.png 424w, https://substackcdn.com/image/fetch/$s_!msGU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12420c70-3454-4ce8-bf63-ae5f4474ca29_1172x1106.png 848w, https://substackcdn.com/image/fetch/$s_!msGU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12420c70-3454-4ce8-bf63-ae5f4474ca29_1172x1106.png 1272w, https://substackcdn.com/image/fetch/$s_!msGU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12420c70-3454-4ce8-bf63-ae5f4474ca29_1172x1106.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!msGU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12420c70-3454-4ce8-bf63-ae5f4474ca29_1172x1106.png" width="450" height="424.65870307167233" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/12420c70-3454-4ce8-bf63-ae5f4474ca29_1172x1106.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1106,&quot;width&quot;:1172,&quot;resizeWidth&quot;:450,&quot;bytes&quot;:217025,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://x.com/hieudinh_/status/1615908850493947908?s=20&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!msGU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12420c70-3454-4ce8-bf63-ae5f4474ca29_1172x1106.png 424w, https://substackcdn.com/image/fetch/$s_!msGU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12420c70-3454-4ce8-bf63-ae5f4474ca29_1172x1106.png 848w, https://substackcdn.com/image/fetch/$s_!msGU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12420c70-3454-4ce8-bf63-ae5f4474ca29_1172x1106.png 1272w, https://substackcdn.com/image/fetch/$s_!msGU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12420c70-3454-4ce8-bf63-ae5f4474ca29_1172x1106.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><ul><li><p>If your app submission is rejected by Apple, RevenueCat will be there to support you</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://x.com/hieudinh_/status/1692475439204442158?s=20" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QrZM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bfc9d34-379f-457b-add1-df82d6b76a1f_1166x1552.png 424w, https://substackcdn.com/image/fetch/$s_!QrZM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bfc9d34-379f-457b-add1-df82d6b76a1f_1166x1552.png 848w, https://substackcdn.com/image/fetch/$s_!QrZM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bfc9d34-379f-457b-add1-df82d6b76a1f_1166x1552.png 1272w, https://substackcdn.com/image/fetch/$s_!QrZM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bfc9d34-379f-457b-add1-df82d6b76a1f_1166x1552.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QrZM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bfc9d34-379f-457b-add1-df82d6b76a1f_1166x1552.png" width="452" height="601.6329331046312" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7bfc9d34-379f-457b-add1-df82d6b76a1f_1166x1552.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1552,&quot;width&quot;:1166,&quot;resizeWidth&quot;:452,&quot;bytes&quot;:431355,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://x.com/hieudinh_/status/1692475439204442158?s=20&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QrZM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bfc9d34-379f-457b-add1-df82d6b76a1f_1166x1552.png 424w, https://substackcdn.com/image/fetch/$s_!QrZM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bfc9d34-379f-457b-add1-df82d6b76a1f_1166x1552.png 848w, https://substackcdn.com/image/fetch/$s_!QrZM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bfc9d34-379f-457b-add1-df82d6b76a1f_1166x1552.png 1272w, https://substackcdn.com/image/fetch/$s_!QrZM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bfc9d34-379f-457b-add1-df82d6b76a1f_1166x1552.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><p>Overall, this year has been quite fulfilling for me. I explored new cities and a new country, made new friends, learned new sports, acquired new skills, launched new apps, and earned $300 from my side hustle.</p><p></p><p><strong>That&#8217;s everything for now!</strong></p><p>Thank you for reading my first issue.</p><p>I wish you and your family a Happy New Year!</p><p>See you in 2024 &#128075;</p><p>&#8212; Hieu</p><p></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://news.hieudinh.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Hieu Dinh&#8217;s Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Hieu's newsletter!]]></title><description><![CDATA[Welcome to my newsletter! Subscribe for my less-than-once-per-month updates about: What I have built What I have learned Tips/resources for developers and indie hackers Sign up now so you don&#8217;t miss the first issue.]]></description><link>https://news.hieudinh.com/p/coming-soon</link><guid isPermaLink="false">https://news.hieudinh.com/p/coming-soon</guid><dc:creator><![CDATA[Hieu Dinh]]></dc:creator><pubDate>Thu, 28 Dec 2023 04:48:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c484996-bac1-4c6b-9071-6fc1bd5bb6ee_600x600.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to my newsletter! Subscribe for my monthly<strong> </strong>updates about:</p><ul><li><p>What I have learned</p></li><li><p>What I have built</p></li><li><p>Tips/resources for developers and indie hackers</p></li></ul><p>Subscribe now so you don&#8217;t miss the first issue.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://news.hieudinh.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://news.hieudinh.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item></channel></rss>