The best Hacker News stories from Show from the past day
Latest posts:
Show HN: White-Label TikTok
Show HN: White-Label TikTok
Launch HN: Emerge (YC W21) – Monitor and reduce iOS app size
Hi everyone!<p>We’re Noah and Josh from Emerge (<a href="https://www.emergetools.com" rel="nofollow">https://www.emergetools.com</a>). Our company is building a monitoring and analysis tool to help iOS developers reduce their app’s size.<p>You might have heard about app size challenges faced by large iOS apps, particularly those with Swift codebases. I was an iOS engineer at Airbnb for 4.5 years and personally worked on their size reduction efforts.<p>App size is tricky to quantify. The size users most commonly see (what’s on the App Store page) is the install size thinned for their device. This is the size measured after stripping out assets like images and other media not needed for your screen size, or code that doesn’t run on your device’s architecture. However, this isn’t the only size metric out there, there’s also download and universal size (read more about this in our docs [1]).<p>Our tool makes app size easy to understand by visualizing the size contribution of every file in your app, from localized strings to machine learning models. To better our understanding, we even reverse engineered compiled asset catalogs and Mach-O binaries to show size contributions of original images, source files and Swift modules. With this perspective we often see files that don’t belong or are suspiciously large.<p>While testing our tool we analyzed and learned from over 150 iOS applications and found that keeping app size in check is really hard— even for industry leaders. Here are some of our more interesting findings.<p>Dropbox (<a href="https://www.emergetools.com/apps/dropbox" rel="nofollow">https://www.emergetools.com/apps/dropbox</a>)
From the visualization, you can clearly see why Dropbox’s iOS app is 270 MB— it’s 35% localization files. These files are duplicated from the main app into 7 different app extensions and they all include comments that provide translators with context for the strings. Just removing these comments from the production app could save 46 MB.<p>eBay (<a href="https://www.emergetools.com/apps/ebay" rel="nofollow">https://www.emergetools.com/apps/ebay</a>)
This is an interesting architecture because although the main app’s executable is only ~150 KB, 86% of the app’s size comes from executables, the biggest one (32 MB) being EbayApp.framework. When building a Swift framework, the binary contains symbols which are not needed in the build uploaded to the App Store. These symbols can be stripped using the method described in our docs [2]. Stripping binary symbols would reduce Ebay’s app size by over 40%. Emerge can generate a script to add to your Xcode build phase to strip symbols for you.<p>Spark (<a href="https://www.emergetools.com/apps/spark" rel="nofollow">https://www.emergetools.com/apps/spark</a>)
About 1/10th of Spark’s ~230 MB app is font files. 10 MB of those font files are duplicates found in an app extension. After a closer look, the fonts duplicated are all SF-Pro-Text, look familiar? These have been system fonts since iOS 11 (the minimum version for Spark). If the system font was used directly, 10% of the whole app could be deleted!<p>If you want to dive in a bit deeper you can check out our Medium post which goes into detail on some other popular apps [3].<p>Our analysis consistently shows that without guardrails in place, app size can get out of hand very quickly. Emerge wants to help developers reduce their size and keep it that way. Our continuous monitoring and binary size profiling prevents regressions by alerting developers of size changes in their pull requests, helping teams build better, smaller apps.<p>We offer a free Growth plan designed for independent developers and small startups. Our paid plans start at $499/month, you can view more details here: <a href="https://www.emergetools.com/pricing" rel="nofollow">https://www.emergetools.com/pricing</a>.<p>If app size has come up in your development process, we’d love to hear about how you handled it. We’re always looking to improve and grow our product and we’re especially excited to hear feedback from the HN community!<p>Thanks, Noah + Josh<p>[1] <a href="https://docs.emergetools.com/docs/what-is-app-size" rel="nofollow">https://docs.emergetools.com/docs/what-is-app-size</a>
[2] <a href="https://docs.emergetools.com/docs/strip-binary-symbols" rel="nofollow">https://docs.emergetools.com/docs/strip-binary-symbols</a>
[3] <a href="https://medium.com/swlh/how-7-ios-apps-could-save-you-500mb-of-storage-a828782c973e" rel="nofollow">https://medium.com/swlh/how-7-ios-apps-could-save-you-500mb-...</a>
Launch HN: Emerge (YC W21) – Monitor and reduce iOS app size
Hi everyone!<p>We’re Noah and Josh from Emerge (<a href="https://www.emergetools.com" rel="nofollow">https://www.emergetools.com</a>). Our company is building a monitoring and analysis tool to help iOS developers reduce their app’s size.<p>You might have heard about app size challenges faced by large iOS apps, particularly those with Swift codebases. I was an iOS engineer at Airbnb for 4.5 years and personally worked on their size reduction efforts.<p>App size is tricky to quantify. The size users most commonly see (what’s on the App Store page) is the install size thinned for their device. This is the size measured after stripping out assets like images and other media not needed for your screen size, or code that doesn’t run on your device’s architecture. However, this isn’t the only size metric out there, there’s also download and universal size (read more about this in our docs [1]).<p>Our tool makes app size easy to understand by visualizing the size contribution of every file in your app, from localized strings to machine learning models. To better our understanding, we even reverse engineered compiled asset catalogs and Mach-O binaries to show size contributions of original images, source files and Swift modules. With this perspective we often see files that don’t belong or are suspiciously large.<p>While testing our tool we analyzed and learned from over 150 iOS applications and found that keeping app size in check is really hard— even for industry leaders. Here are some of our more interesting findings.<p>Dropbox (<a href="https://www.emergetools.com/apps/dropbox" rel="nofollow">https://www.emergetools.com/apps/dropbox</a>)
From the visualization, you can clearly see why Dropbox’s iOS app is 270 MB— it’s 35% localization files. These files are duplicated from the main app into 7 different app extensions and they all include comments that provide translators with context for the strings. Just removing these comments from the production app could save 46 MB.<p>eBay (<a href="https://www.emergetools.com/apps/ebay" rel="nofollow">https://www.emergetools.com/apps/ebay</a>)
This is an interesting architecture because although the main app’s executable is only ~150 KB, 86% of the app’s size comes from executables, the biggest one (32 MB) being EbayApp.framework. When building a Swift framework, the binary contains symbols which are not needed in the build uploaded to the App Store. These symbols can be stripped using the method described in our docs [2]. Stripping binary symbols would reduce Ebay’s app size by over 40%. Emerge can generate a script to add to your Xcode build phase to strip symbols for you.<p>Spark (<a href="https://www.emergetools.com/apps/spark" rel="nofollow">https://www.emergetools.com/apps/spark</a>)
About 1/10th of Spark’s ~230 MB app is font files. 10 MB of those font files are duplicates found in an app extension. After a closer look, the fonts duplicated are all SF-Pro-Text, look familiar? These have been system fonts since iOS 11 (the minimum version for Spark). If the system font was used directly, 10% of the whole app could be deleted!<p>If you want to dive in a bit deeper you can check out our Medium post which goes into detail on some other popular apps [3].<p>Our analysis consistently shows that without guardrails in place, app size can get out of hand very quickly. Emerge wants to help developers reduce their size and keep it that way. Our continuous monitoring and binary size profiling prevents regressions by alerting developers of size changes in their pull requests, helping teams build better, smaller apps.<p>We offer a free Growth plan designed for independent developers and small startups. Our paid plans start at $499/month, you can view more details here: <a href="https://www.emergetools.com/pricing" rel="nofollow">https://www.emergetools.com/pricing</a>.<p>If app size has come up in your development process, we’d love to hear about how you handled it. We’re always looking to improve and grow our product and we’re especially excited to hear feedback from the HN community!<p>Thanks, Noah + Josh<p>[1] <a href="https://docs.emergetools.com/docs/what-is-app-size" rel="nofollow">https://docs.emergetools.com/docs/what-is-app-size</a>
[2] <a href="https://docs.emergetools.com/docs/strip-binary-symbols" rel="nofollow">https://docs.emergetools.com/docs/strip-binary-symbols</a>
[3] <a href="https://medium.com/swlh/how-7-ios-apps-could-save-you-500mb-of-storage-a828782c973e" rel="nofollow">https://medium.com/swlh/how-7-ios-apps-could-save-you-500mb-...</a>
Launch HN: Emerge (YC W21) – Monitor and reduce iOS app size
Hi everyone!<p>We’re Noah and Josh from Emerge (<a href="https://www.emergetools.com" rel="nofollow">https://www.emergetools.com</a>). Our company is building a monitoring and analysis tool to help iOS developers reduce their app’s size.<p>You might have heard about app size challenges faced by large iOS apps, particularly those with Swift codebases. I was an iOS engineer at Airbnb for 4.5 years and personally worked on their size reduction efforts.<p>App size is tricky to quantify. The size users most commonly see (what’s on the App Store page) is the install size thinned for their device. This is the size measured after stripping out assets like images and other media not needed for your screen size, or code that doesn’t run on your device’s architecture. However, this isn’t the only size metric out there, there’s also download and universal size (read more about this in our docs [1]).<p>Our tool makes app size easy to understand by visualizing the size contribution of every file in your app, from localized strings to machine learning models. To better our understanding, we even reverse engineered compiled asset catalogs and Mach-O binaries to show size contributions of original images, source files and Swift modules. With this perspective we often see files that don’t belong or are suspiciously large.<p>While testing our tool we analyzed and learned from over 150 iOS applications and found that keeping app size in check is really hard— even for industry leaders. Here are some of our more interesting findings.<p>Dropbox (<a href="https://www.emergetools.com/apps/dropbox" rel="nofollow">https://www.emergetools.com/apps/dropbox</a>)
From the visualization, you can clearly see why Dropbox’s iOS app is 270 MB— it’s 35% localization files. These files are duplicated from the main app into 7 different app extensions and they all include comments that provide translators with context for the strings. Just removing these comments from the production app could save 46 MB.<p>eBay (<a href="https://www.emergetools.com/apps/ebay" rel="nofollow">https://www.emergetools.com/apps/ebay</a>)
This is an interesting architecture because although the main app’s executable is only ~150 KB, 86% of the app’s size comes from executables, the biggest one (32 MB) being EbayApp.framework. When building a Swift framework, the binary contains symbols which are not needed in the build uploaded to the App Store. These symbols can be stripped using the method described in our docs [2]. Stripping binary symbols would reduce Ebay’s app size by over 40%. Emerge can generate a script to add to your Xcode build phase to strip symbols for you.<p>Spark (<a href="https://www.emergetools.com/apps/spark" rel="nofollow">https://www.emergetools.com/apps/spark</a>)
About 1/10th of Spark’s ~230 MB app is font files. 10 MB of those font files are duplicates found in an app extension. After a closer look, the fonts duplicated are all SF-Pro-Text, look familiar? These have been system fonts since iOS 11 (the minimum version for Spark). If the system font was used directly, 10% of the whole app could be deleted!<p>If you want to dive in a bit deeper you can check out our Medium post which goes into detail on some other popular apps [3].<p>Our analysis consistently shows that without guardrails in place, app size can get out of hand very quickly. Emerge wants to help developers reduce their size and keep it that way. Our continuous monitoring and binary size profiling prevents regressions by alerting developers of size changes in their pull requests, helping teams build better, smaller apps.<p>We offer a free Growth plan designed for independent developers and small startups. Our paid plans start at $499/month, you can view more details here: <a href="https://www.emergetools.com/pricing" rel="nofollow">https://www.emergetools.com/pricing</a>.<p>If app size has come up in your development process, we’d love to hear about how you handled it. We’re always looking to improve and grow our product and we’re especially excited to hear feedback from the HN community!<p>Thanks, Noah + Josh<p>[1] <a href="https://docs.emergetools.com/docs/what-is-app-size" rel="nofollow">https://docs.emergetools.com/docs/what-is-app-size</a>
[2] <a href="https://docs.emergetools.com/docs/strip-binary-symbols" rel="nofollow">https://docs.emergetools.com/docs/strip-binary-symbols</a>
[3] <a href="https://medium.com/swlh/how-7-ios-apps-could-save-you-500mb-of-storage-a828782c973e" rel="nofollow">https://medium.com/swlh/how-7-ios-apps-could-save-you-500mb-...</a>
Show HN: Pairagraph – our attempt to build a new high-quality discussion forum
Show HN: Pairagraph – our attempt to build a new high-quality discussion forum
Show HN: Espanso: detect a typed keyword and replace it while you're typing
Show HN: Espanso: detect a typed keyword and replace it while you're typing
Show HN: YTT Tech – My curated database of instructional YouTube Videos
Show HN: YTT Tech – My curated database of instructional YouTube Videos
Show HN: YTT Tech – My curated database of instructional YouTube Videos
Show HN: Haven – Run a private website to share with only the people you choose
Show HN: Haven – Run a private website to share with only the people you choose
Show HN: Haven – Run a private website to share with only the people you choose
Show HN: Haven – Run a private website to share with only the people you choose
Launch HN: Routable (YC S17) – Scale payouts without building in-house tools
Hey HN! I’m Omri and I co-founded Routable (<a href="https://routable.com" rel="nofollow">https://routable.com</a>) with Tom Harel. We are a business payments platform built to make bill payments and mass payouts fast and seamless, especially as your company scales. We were in YC's S17 batch, but are doing a Launch HN now because we recently completed a huge integration with NetSuite, which will help larger enterprises automate their business payment workflows.<p>Tom and I started working on Routable in early 2017. The idea was sparked while we were eating hummus in Tel Aviv. When we first met up, we had no intention of spending years of our lives trying to figure out how to make bill payments and invoicing easier. But we realized after a three hour conversation that at our two different marketplace companies we had both spent 40% of our engineering resources on building internal tooling to pay out sellers, drivers, restaurants, etc.<p>After we realized we'd experienced the same pain at different startups, we asked ourselves, “what did we do wrong?” Was there a solution that worked across finance, engineering, and operations that we were simply not aware of? To find out, we interviewed over 300 people - CFOs, VPs of Finance, Heads of Engineering, you name it - to understand how businesses scaled their business payouts and invoicing (think: growing from 1,000 payments per month to 400,000+ payments per month).<p>The two main answers we received were: (a) Like us, they'd spent thousands of hours and engineering dollars to build an in-house internal tool, on top of processors, and wrote their own custom integration to an ERP; or (b) they hired an army of overqualified individuals to run daily data entry across thousands of bill payments and invoices (which was tedious, not to mention very expensive).<p>These conversations confirmed what we had suspected: There was no tool for easy payments that worked across multiple departments. We realized that what we had built at our marketplace start-ups could potentially help hundreds of other companies. In 6 weeks we spun up a Routable MVP and were making money for customers. Today, we're deployed across some of the largest marketplaces and gig economy companies. We’ve focused on working with engineering and finance departments as much as possible to save them from building custom in-house solutions.<p>Our recent integration with NetSuite has been by far the hardest we’ve done – especially since we built it on top of a SOAP API and extended native functionality with SuiteScript – but it was worth it, because we gained a deep appreciation for how complex enterprise business payment operations can be. To make sure we “got it right,” we again did plenty of customer development interviews to best understand what data needs to go into and out of NetSuite, and made sure to record each interview so we could share their unique pain points with our engineering team.<p>Before we wrote the first line of code, we interviewed a bunch of NetSuite users and learned what was lacking in other NetSuite integrations out there: tools that only synced in one direction, needing to recreate fields multiple in different platforms, processes that were breaking because the workflow had changed in your ERP, but not in your AP software. The one thing we learned throughout this whole process is that once you build an integration to an ERP, you’re never really done, so we expect as a team to forever tinker on sending data back and forth with the goal of continuously improving our integration and hopefully saving our customers 30 seconds to 10 minutes of work at a time.<p>Thank you for reading this story - I hope it was interesting. We’d love to hear your feedback about Routable, your experiences in this space, and answer any questions you have!
Show HN: I wrote a rust program to translate images into textual line art
Show HN: Time tracking with plain text files
Show HN: Time tracking with plain text files