<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: orville wang</title>
    <description>The latest articles on DEV Community by orville wang (@orville_wang_d2758f1be203).</description>
    <link>https://dev.to/orville_wang_d2758f1be203</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3991699%2F2dfbd35a-3ea2-4438-92b1-090e2092789a.png</url>
      <title>DEV Community: orville wang</title>
      <link>https://dev.to/orville_wang_d2758f1be203</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/orville_wang_d2758f1be203"/>
    <language>en</language>
    <item>
      <title>Apple's Recently Deleted Is Not a Cleanup Strategy</title>
      <dc:creator>orville wang</dc:creator>
      <pubDate>Tue, 21 Jul 2026 13:07:19 +0000</pubDate>
      <link>https://dev.to/orville_wang_d2758f1be203/apples-recently-deleted-is-not-a-cleanup-strategy-40d0</link>
      <guid>https://dev.to/orville_wang_d2758f1be203/apples-recently-deleted-is-not-a-cleanup-strategy-40d0</guid>
      <description>&lt;p&gt;Apple gives you a Recently Deleted folder that holds your photos for 30 days before they are gone for good. It is a thoughtful safety net. But here is the thing nobody talks about: a safety net is not a cleanup strategy.&lt;/p&gt;

&lt;p&gt;Recently Deleted answers the question, what happens after I delete something by mistake. It does nothing to answer the far harder question that actually keeps people hoarding: what should I delete in the first place.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Bottleneck Is Judgment, Not Deletion
&lt;/h2&gt;

&lt;p&gt;Deleting a photo takes one second. Deciding whether to delete it can take ten. Now multiply that by the thousands of photos sitting in your camera roll, and you can see why most people never get started. The friction was never in the act of deletion. It was always in the decision.&lt;/p&gt;

&lt;p&gt;Apple built an excellent mechanism for the easy part. The hard part, figuring out what is worth keeping, is still entirely on you. And so the library grows, because choosing feels risky and not choosing feels safe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Choosing Feels Risky
&lt;/h2&gt;

&lt;p&gt;Every photo carries a small fear: what if this is the one I will regret deleting? The last picture of a grandparent. The only shot of a trip that cannot be repeated. The blurry frame that somehow captured the exact right moment.&lt;/p&gt;

&lt;p&gt;That fear is rational, but it has a disproportionate effect. Because we cannot perfectly predict which photos will matter later, we keep all of them. We trade storage and mental clutter for the comfort of never having to decide. The Recently Deleted folder, ironically, can reinforce this. It tells us deletion is reversible for 30 days, which makes us think we have made a decision, when really we have just postponed it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a Real Cleanup Strategy Looks Like
&lt;/h2&gt;

&lt;p&gt;A genuine cleanup strategy does not ask you to make thousands of individual decisions. It changes the shape of the decision so you can act in batches, with confidence.&lt;/p&gt;

&lt;p&gt;In practice, photo clutter falls into a few predictable categories, and most of them are safe to remove in bulk:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Screenshots.&lt;/strong&gt; Menus, receipts, chat snippets, recipes. Useful for five minutes, worthless after. They accumulate by the hundreds because nobody circles back to delete them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Near-duplicates.&lt;/strong&gt; Burst mode and accidental double-taps produce clusters of nearly identical frames. You do not need all six, you need the sharpest one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blurry and accidental shots.&lt;/strong&gt; Pocket photos, half-pressed captures, pictures of the floor. Zero sentimental value, hiding among the real photos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These categories are not edge cases. They typically make up a large share of any camera roll. And critically, removing them does not feel like loss, because you can see at a glance that they are not the photos that matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Trust Requirement
&lt;/h2&gt;

&lt;p&gt;This only works if the grouping is trustworthy. If a tool suggests a batch of photos to delete, and you cannot tell why, you will not delete them. You will hover, doubt, and close the app. Trust is built by showing your work: here is the duplicate set, here is the sharpest frame highlighted, here is why these three are flagged as blurry.&lt;/p&gt;

&lt;p&gt;The goal is not to automate the decision away from you. It is to organize the decision so that you can make it quickly and confidently, in bulk, without the paralyzing fear of the one photo that matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why On-Device Matters Here
&lt;/h2&gt;

&lt;p&gt;Curation is intimate. It means looking at the most personal collection on your phone and making judgments about what to keep. For that reason, this kind of processing should happen on the device, not on a server.&lt;/p&gt;

&lt;p&gt;Modern phones have more than enough power to do it locally. Apple's Core ML and Vision frameworks can classify screenshots, cluster near-duplicates by perceptual similarity, and detect blur entirely on the Neural Engine. Thousands of photos can be grouped in minutes, with nothing ever leaving the device. For an intimate task like this, that privacy guarantee is not a nice-to-have. It is table stakes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building Toward Curation, Not Just Deletion
&lt;/h2&gt;

&lt;p&gt;This is the philosophy behind Swipe Cleaner, a project I have been working on. Instead of another delete button or another 30-day holding pen, it focuses on the part Apple leaves to you: judgment. It groups the obvious clutter on-device, shows you why each batch is flagged, and lets you clear the safe categories in bulk while keeping full control over anything ambiguous.&lt;/p&gt;

&lt;p&gt;You can see the project here: &lt;a href="https://www.opennomos.com/en/project/01KW95TC7VFJXZNYHNV3SJ04CN" rel="noopener noreferrer"&gt;https://www.opennomos.com/en/project/01KW95TC7VFJXZNYHNV3SJ04CN&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Recently Deleted is a fine safety net. But a safety net only catches you after you fall. A real cleanup strategy helps you decide where to step. Your camera roll does not need a longer grace period. It needs a smarter way to choose what stays.&lt;/p&gt;

</description>
      <category>ios</category>
      <category>mobile</category>
      <category>ux</category>
      <category>photography</category>
    </item>
    <item>
      <title>Your Camera Roll Is a Museum: Why Curation Matters More Than Storage</title>
      <dc:creator>orville wang</dc:creator>
      <pubDate>Mon, 20 Jul 2026 06:44:07 +0000</pubDate>
      <link>https://dev.to/orville_wang_d2758f1be203/your-camera-roll-is-a-museum-why-curation-matters-more-than-storage-33p0</link>
      <guid>https://dev.to/orville_wang_d2758f1be203/your-camera-roll-is-a-museum-why-curation-matters-more-than-storage-33p0</guid>
      <description>&lt;p&gt;Open your phone's photo library right now. Scroll down. Past the first twenty photos. Past the first hundred. How far do you actually go before you give up?&lt;/p&gt;

&lt;p&gt;For most people, the answer is: not far. We take thousands of photos and look at a tiny fraction of them. The rest sit there, untouched, taking up space and mental bandwidth. Your camera roll has become a museum — a vast collection of things you will never look at again.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Storage Myth
&lt;/h2&gt;

&lt;p&gt;When our phones fill up, our first instinct is to buy more storage. 128GB becomes 256GB becomes 512GB. We treat the symptom, not the cause. But here is the uncomfortable truth: more storage does not make us happier with our photos. It just lets the collection grow larger and more unmanageable.&lt;/p&gt;

&lt;p&gt;I upgraded from 128GB to 256GB last year, convinced that would solve my photo anxiety. Eight months later, I was full again. The extra space did not change my behavior — it just delayed the reckoning.&lt;/p&gt;

&lt;p&gt;The problem was never storage. The problem was curation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Curation Is a Trust Problem
&lt;/h2&gt;

&lt;p&gt;Why do we keep photos we never look at? Because deleting feels risky. We are afraid of losing the one photo that matters — the last picture of a loved one, the only shot of a moment we cannot recreate. This fear is completely rational.&lt;/p&gt;

&lt;p&gt;But it leads to paralysis. We keep everything because we cannot confidently identify what to let go of. The result is a library so large that finding the meaningful photos becomes its own exhausting project.&lt;/p&gt;

&lt;p&gt;Good curation is not about being ruthless. It is about being confident. It is about knowing, with certainty, that the photos you are removing are not the ones that matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Three Categories of Photo Junk
&lt;/h2&gt;

&lt;p&gt;After helping friends and family clean up their libraries, I have found that photo junk falls into three predictable buckets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Screenshots.&lt;/strong&gt; Menus, receipts, chat conversations, recipes, error messages. These are useful for five minutes and worthless forever after. Yet they accumulate by the hundreds because we never circle back to delete them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Duplicates and near-duplicates.&lt;/strong&gt; Burst mode, accidental double-taps, the same subject shot six times in a row. We keep all of them because picking the best one feels like work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blurry and accidental shots.&lt;/strong&gt; Pocket photos, half-pressed shutter captures, shots of the floor. Zero sentimental value, but they hide among the real photos and dilute the collection.&lt;/p&gt;

&lt;p&gt;These three categories typically make up 40 to 60 percent of a camera roll. Removing them does not feel like loss — it feels like relief.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why On-Device Matters
&lt;/h2&gt;

&lt;p&gt;There are plenty of cloud-based photo cleaners, but for this kind of intimate curation, on-device processing is not optional. A photo library is one of the most personal datasets a person owns. Uploading it to a third-party server to save a few gigabytes is a trade most people should not make.&lt;/p&gt;

&lt;p&gt;Modern phones have the horsepower to do this locally. Apple's Core ML and Vision frameworks can classify screenshots, cluster near-duplicates, and detect blur entirely on the Neural Engine. Thousands of photos scanned in minutes, with nothing ever leaving the device.&lt;/p&gt;

&lt;p&gt;This is the approach I took with Swipe Cleaner — on-device classification that groups the obvious junk and lets you review in bulk, rather than agonizing over individual photos. You can see the project here: &lt;a href="https://www.opennomos.com/en/project/01KW95TC7VFJXZNYHNV3SJ04CN" rel="noopener noreferrer"&gt;https://www.opennomos.com/en/project/01KW95TC7VFJXZNYHNV3SJ04CN&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Museum Needs a Curator
&lt;/h2&gt;

&lt;p&gt;A museum without a curator is just a warehouse of stuff. The value of a museum is not in how much it holds — it is in what it chooses to display.&lt;/p&gt;

&lt;p&gt;Your camera roll deserves the same care. Not endless storage, but thoughtful curation. The goal is not the biggest library. It is a library where the photos that matter are easy to find, and the ones that do not are gone.&lt;/p&gt;

&lt;p&gt;Stop buying more storage for a problem that storage cannot fix. Curate instead. Your future self, scrolling through a clean and meaningful collection, will thank you.&lt;/p&gt;

</description>
      <category>ios</category>
      <category>mobile</category>
      <category>photography</category>
      <category>ux</category>
    </item>
    <item>
      <title>I Tried Every Productivity Method. Silence Won.</title>
      <dc:creator>orville wang</dc:creator>
      <pubDate>Sun, 19 Jul 2026 14:22:55 +0000</pubDate>
      <link>https://dev.to/orville_wang_d2758f1be203/i-tried-every-productivity-method-silence-won-1c16</link>
      <guid>https://dev.to/orville_wang_d2758f1be203/i-tried-every-productivity-method-silence-won-1c16</guid>
      <description>&lt;p&gt;I have tried Pomodoro. I have tried time-blocking. I have tried 4 AM wake-ups, cold showers, binaural beats, bullet journaling, and at least six different to-do-list philosophies. I have been chasing productivity for over a decade, and I have a confession to make: the most effective thing I ever tried was silence.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Noise Tax
&lt;/h2&gt;

&lt;p&gt;Every popular productivity method has a common thread: they add something to your environment. A timer. A notification. A list to check. A habit to track. A soundtrack to curate. Each addition is sold as a feature, but it is also a cognitive tax. You are now managing your productivity system in addition to actually doing your work.&lt;/p&gt;

&lt;p&gt;I did not realize how much this tax added up until I stripped everything away.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Experiment
&lt;/h2&gt;

&lt;p&gt;Three months ago I ran a simple experiment. For one week, I worked with no music. No podcasts. No ambient noise app. No timer. No Pomodoro. No productivity stack at all. Just a blank screen with what I needed to write, and silence.&lt;/p&gt;

&lt;p&gt;The first two days were uncomfortable. My brain kept reaching for something to fill the quiet. I realized I had been using background sound as a crutch — it was not that music helped me focus, it was that silence made me aware of how unfocused I was. Once I sat with that discomfort, something shifted.&lt;/p&gt;

&lt;p&gt;By day three, I was finishing tasks in half the time. Not because silence is magic — because I stopped switching contexts. Every time I opened a timer app, I checked a notification. Every time I switched a playlist, I lost my place. Every time a track ended and I noticed the silence, I had already broken flow. Removing all of it removed the triggers that pulled me out of deep work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why We Reach for Noise
&lt;/h2&gt;

&lt;p&gt;I think most people use background sound as a barrier. It signals to others (and to ourselves) that we are working. It fills a space that would otherwise feel empty. But silence is not empty — it is just unmediated. And unmediated attention is exactly what deep work requires.&lt;/p&gt;

&lt;p&gt;This is not an argument against music or podcasts in general. They have their place. But if you are using them as a productivity tool, ask yourself: does this actually help, or does it just make silence feel less uncomfortable?&lt;/p&gt;

&lt;h2&gt;
  
  
  The OneZen Approach
&lt;/h2&gt;

&lt;p&gt;This insight is what led me to work on OneZen — an app that takes the opposite approach from every productivity tool I used to rely on.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No timer. You do not need a countdown to do deep work.&lt;/li&gt;
&lt;li&gt;No playlists to manage. Just real field-recorded nature sounds, or pure silence.&lt;/li&gt;
&lt;li&gt;No streaks tracking you. If you find your rhythm without the app for a week, great. The app is not competing for your attention.&lt;/li&gt;
&lt;li&gt;No notifications. Ever.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OneZen is built on the idea that the best focus tool does the least. It is basically a door you open, walk through, and leave behind. You can check it out here: &lt;a href="https://www.opennomos.com/en/project/01KW9BJYTZ8R30NHT81PBBZB8Y" rel="noopener noreferrer"&gt;https://www.opennomos.com/en/project/01KW9BJYTZ8R30NHT81PBBZB8Y&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What to Try Tomorrow
&lt;/h2&gt;

&lt;p&gt;If you want to test this for yourself: pick one 90-minute block tomorrow. No phone. No music. No timer. Just your work and silence. See how it feels. It might be uncomfortable for the first 30 minutes. That discomfort is not a sign that silence does not work — it is a sign that you have trained your brain to need constant input.&lt;/p&gt;

&lt;p&gt;The best productivity hack I have found in ten years is not a new app or system. It is turning everything off and listening to nothing. Try it for one session. You might be surprised.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>focus</category>
      <category>wellness</category>
      <category>deepwork</category>
    </item>
    <item>
      <title>Why a Focus Timer Shouldn't Have a Leaderboard</title>
      <dc:creator>orville wang</dc:creator>
      <pubDate>Fri, 17 Jul 2026 04:34:26 +0000</pubDate>
      <link>https://dev.to/orville_wang_d2758f1be203/why-a-focus-timer-shouldnt-have-a-leaderboard-453d</link>
      <guid>https://dev.to/orville_wang_d2758f1be203/why-a-focus-timer-shouldnt-have-a-leaderboard-453d</guid>
      <description>&lt;p&gt;I was testing a popular focus app last month when I noticed something strange. It had a leaderboard. People in my city were ranked by how many minutes they focused that week. The top entry had 47 hours logged.&lt;/p&gt;

&lt;p&gt;I closed the app and did not open it again.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Gamification Trap
&lt;/h2&gt;

&lt;p&gt;Gamification in productivity tools follows a seductive logic: people like games, games have points and leaderboards, therefore adding points and leaderboards will make people use the tool more. This is not wrong — it does make people use the tool more. But that is exactly the problem.&lt;/p&gt;

&lt;p&gt;The goal of a focus app is not engagement. It is the opposite. You are supposed to open it, start a session, and forget the app exists for the next 25 minutes. A leaderboard makes that impossible. It turns your solitude into a spectator sport. You are no longer focused — you are performing focus for an invisible audience, and the difference between those two states is the entire game.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Gamification Actually Measures
&lt;/h2&gt;

&lt;p&gt;Streaks, badges, and leaderboards measure one thing: whether you opened the app. They do not measure whether you actually focused. A 90-day streak could mean 90 days of deep work, or 90 days of opening the app, starting a timer, and scrolling Twitter. The app has no idea which one happened, so it rewards both equally.&lt;/p&gt;

&lt;p&gt;This creates a perverse incentive. If checking the box counts the same whether you tried or not, the rational behavior is to check the box. The system trains you to optimize for the metric that is easy to measure (opens, minutes logged) instead of the one that matters (actual focused work produced).&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Design Challenge
&lt;/h2&gt;

&lt;p&gt;Designing a good focus tool is a subtraction exercise. Every feature you add is a potential distraction you are embedding into the user's environment. A notification about a streak is still a notification. A badge unlock animation is still a thing that moves on the screen and hijacks attention.&lt;/p&gt;

&lt;p&gt;The best focus tools I have used are the ones that have nothing to look at. Dark screen. One button. Sound that stays the same whether you have done this once or a thousand times.&lt;/p&gt;

&lt;h2&gt;
  
  
  What OneZen Does Differently
&lt;/h2&gt;

&lt;p&gt;This is the design philosophy behind OneZen — an app I have been working on that takes minimalism to its logical conclusion.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No streaks.&lt;/strong&gt; The app does not know or care how many days in a row you used it. Your focus session is not competing with yesterday's session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No feed.&lt;/strong&gt; There is nothing to scroll. Nothing to browse. Nothing to discover.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No social.&lt;/strong&gt; No friends, no followers, no shared playlists. Your focus session is yours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real field-recorded sound.&lt;/strong&gt; Rain, ocean, forest, campfire. Recorded in the field, not synthesized in a DAW. The micro-variations in real sound prevent your brain from adapting and tuning out — a well-known problem with short synthetic loops.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can check out OneZen here: &lt;a href="https://www.opennomos.com/en/project/01KW9BJYTZ8R30NHT81PBBZB8Y" rel="noopener noreferrer"&gt;https://www.opennomos.com/en/project/01KW9BJYTZ8R30NHT81PBBZB8Y&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters for Builders
&lt;/h2&gt;

&lt;p&gt;If you are building a productivity or wellness tool, I have one question: does your feature make the user need you more, or does it make them need you less?&lt;/p&gt;

&lt;p&gt;A streak counter makes them need you more. It creates anxiety about breaking the chain. A notification makes them need you more. It pings them back into the app.&lt;/p&gt;

&lt;p&gt;A timer that works in the background and says nothing makes them need you less. And that is the mark of a tool that actually works. The best focus app is the one you only notice when you stop using it, look up, and realize two hours have passed in deep work.&lt;/p&gt;

&lt;p&gt;Build tools that make themselves unnecessary. That is the real product.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>wellness</category>
      <category>ux</category>
      <category>focus</category>
    </item>
    <item>
      <title>Deleting Photos Is Not a Storage Problem</title>
      <dc:creator>orville wang</dc:creator>
      <pubDate>Thu, 16 Jul 2026 09:52:04 +0000</pubDate>
      <link>https://dev.to/orville_wang_d2758f1be203/deleting-photos-is-not-a-storage-problem-gad</link>
      <guid>https://dev.to/orville_wang_d2758f1be203/deleting-photos-is-not-a-storage-problem-gad</guid>
      <description>&lt;p&gt;I have built photo cleanup software, and the most surprising thing I learned has nothing to do with machine learning or storage optimization. It is about trust.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Problem
&lt;/h2&gt;

&lt;p&gt;Storage is technically simple. You buy more iCloud space. You delete duplicates. You offload to an external drive. If storage were the real blocker, everyone with a 256 GB phone would have a clean camera roll.&lt;/p&gt;

&lt;p&gt;They do not. People with 512 GB phones have a messy camera roll. People with 2 TB iCloud plans have a messy camera roll. Storage is not the constraint — it is the excuse.&lt;/p&gt;

&lt;p&gt;The real constraint is fear.&lt;/p&gt;

&lt;p&gt;Fear of deleting the one photo that mattered. Fear of losing the last picture of someone. Fear of realizing three weeks later that you need that screenshot and it is gone forever. This is not irrational. It is a completely reasonable response to tools that ask you to make irreversible decisions with incomplete information.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Trust Deficit
&lt;/h2&gt;

&lt;p&gt;Most photo cleanup tools operate on one assumption: the user wants to delete as much as possible. They sort by size, surface the biggest files, and say "click here to free up 12 GB." They are optimized for storage recovery, not for trust.&lt;/p&gt;

&lt;p&gt;But deleting photos is fundamentally different from deleting files. A duplicate of a tax document can be deleted safely. A duplicate of your child's first steps is not a duplicate — it is the angle from a slightly different moment, and people can tell the difference.&lt;/p&gt;

&lt;p&gt;This is why the trust deficit exists. The tool cannot know which photos matter, so it optimizes for what it can measure: file size, similarity scores, blur detection. The user feels the gap between what the tool suggests and what they value, and they respond rationally: they ignore the tool entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Different Approach
&lt;/h2&gt;

&lt;p&gt;What if a photo cleaner did not ask you to decide? What if it grouped similar items, labeled them by type (screenshot, duplicate set, blurry shot), and let you review in bulk?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Screenshots&lt;/strong&gt; are visually distinct from real photos — flat UI regions, status bars, text density. A Core ML classifier can flag them with high precision, no cloud required.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Duplicates and near-duplicates&lt;/strong&gt; can be clustered by perceptual hash and ranked by sharpness. Show the set, highlight the best one, let the user swipe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blurry shots&lt;/strong&gt; — pocket photos, motion blur, accidental captures — have zero sentimental value and a blur-detection model catches them reliably.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key difference: the tool does not decide. It organizes. The user reviews groups, not individual photos. Deleting 300 screenshots at once feels safe. Deleting one at a time feels risky.&lt;/p&gt;

&lt;h2&gt;
  
  
  On-Device Is Not Optional
&lt;/h2&gt;

&lt;p&gt;For this kind of tool, on-device processing is not a nice-to-have. A person's photo library is the most intimate dataset they own. Uploading it to a server to classify screenshots is a terrible trade. Core ML and the Vision framework run classification, feature extraction, and perceptual hashing directly on the Neural Engine. A modern iPhone can scan thousands of photos locally in minutes.&lt;/p&gt;

&lt;p&gt;This is the approach behind Swipe Cleaner: on-device Core ML classification for screenshots, duplicates, and blurry shots, with nothing ever leaving the phone. You can check out the project here: &lt;a href="https://www.opennomos.com/en/project/01KW95TC7VFJXZNYHNV3SJ04CN" rel="noopener noreferrer"&gt;https://www.opennomos.com/en/project/01KW95TC7VFJXZNYHNV3SJ04CN&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Builders Should Take Away
&lt;/h2&gt;

&lt;p&gt;If you are building a cleanup tool, a recommendation system, or anything that asks users to delete their own data: the trust deficit is your actual product problem. Until you solve for "what if I delete the wrong thing," every gigabyte freed is an accident the user suspects might have cost them something.&lt;/p&gt;

&lt;p&gt;Group. Label. Let the user review. Never decide for them. That is how you build a photo cleaner people actually use.&lt;/p&gt;

</description>
      <category>ios</category>
      <category>machinelearning</category>
      <category>mobile</category>
      <category>photography</category>
    </item>
    <item>
      <title>I Cleaned My Mom's Phone: A Case Study in Photo Junk</title>
      <dc:creator>orville wang</dc:creator>
      <pubDate>Wed, 15 Jul 2026 14:00:01 +0000</pubDate>
      <link>https://dev.to/orville_wang_d2758f1be203/i-cleaned-my-moms-phone-a-case-study-in-photo-junk-2bem</link>
      <guid>https://dev.to/orville_wang_d2758f1be203/i-cleaned-my-moms-phone-a-case-study-in-photo-junk-2bem</guid>
      <description>&lt;p&gt;My mom called me on a Sunday. "My phone says storage full and I can't take pictures of your niece." I drove over expecting a five-minute fix. Two hours later I had a small taxonomy of digital clutter and a new appreciation for why photo storage is a genuinely hard product problem.&lt;/p&gt;

&lt;p&gt;Here is what I found, and what it taught me about building on-device photo cleanup.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Three Categories of Photo Junk
&lt;/h2&gt;

&lt;p&gt;When I actually looked at her 8,000-photo library, the junk fell into three clean buckets.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Screenshots
&lt;/h3&gt;

&lt;p&gt;She had 47 screenshots of the &lt;em&gt;same recipe&lt;/em&gt;. Not similar recipes — the identical page, screenshotted every time she wanted to cook it because she never trusted that the last one was still there. Add receipts, WhatsApp conversations, and "how do I do X" tutorials, and screenshots were roughly 30% of her library.&lt;/p&gt;

&lt;p&gt;The insight: screenshots are visually distinct from real photos. They have flat UI regions, status bars, and text density that a classifier can learn. This is a tractable ML problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Duplicates and Near-Duplicates
&lt;/h3&gt;

&lt;p&gt;Every important moment existed 4-8 times. She'd tap the shutter repeatedly to "make sure one came out." The result: bursts of nearly identical frames where only one is worth keeping.&lt;/p&gt;

&lt;p&gt;True duplicates are easy (hash the pixels). Near-duplicates are the hard part — you need perceptual similarity, and then you need to pick the &lt;em&gt;best&lt;/em&gt; frame (sharpest, eyes open, best framing). That's a ranking problem on top of a clustering problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Blurry and Accidental Shots
&lt;/h3&gt;

&lt;p&gt;Pocket photos. Motion blur. The floor. The inside of a bag. These are pure waste with zero sentimental value, and a blur-detection model catches them with high precision.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Should Run On-Device
&lt;/h2&gt;

&lt;p&gt;Here's the part that matters. Every instinct in modern app development says "upload it to the cloud and process it there." For photos, that's the wrong call.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Privacy.&lt;/strong&gt; A person's photo library is the most intimate dataset they own. My mom's library has photos of her grandkids, her medical documents, her passport. Uploading that to &lt;em&gt;anyone's&lt;/em&gt; server to save space is a terrible trade.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost and latency.&lt;/strong&gt; Uploading 8,000 full-resolution photos over her home Wi-Fi would take hours and hammer her data if it fell back to cellular.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It's unnecessary.&lt;/strong&gt; Apple's Core ML and the Vision framework run classification, feature extraction, and perceptual hashing directly on the Neural Engine. A modern iPhone can scan thousands of photos locally in a couple of minutes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;On-device isn't a limitation to work around — for this problem it's strictly better on every axis that matters to the user.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Took Away
&lt;/h2&gt;

&lt;p&gt;The hard part of photo cleanup isn't detection. Detecting screenshots, duplicates, and blur are all solved-ish problems. The hard part is &lt;em&gt;trust&lt;/em&gt;: people don't delete because they're afraid of losing the one photo that mattered. Good cleanup tooling is really a trust-building exercise — group the obvious junk, make deletion reversible, and never touch anything ambiguous without asking.&lt;/p&gt;

&lt;p&gt;That's the philosophy behind the app I've been working on, Swipe Cleaner: on-device Core ML classification for screenshots, duplicates, and blurry shots, with nothing ever leaving the phone. My mom went from "storage full" to 12 GB free in about ten minutes of swiping.&lt;/p&gt;

&lt;p&gt;If you're curious about the approach, the project is here: &lt;a href="https://www.opennomos.com/en/project/01KW95TC7VFJXZNYHNV3SJ04CN" rel="noopener noreferrer"&gt;https://www.opennomos.com/en/project/01KW95TC7VFJXZNYHNV3SJ04CN&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What's the weirdest thing you've found cleaning a family member's photo library? I'm collecting stories.&lt;/p&gt;

</description>
      <category>ios</category>
      <category>mobile</category>
      <category>machinelearning</category>
      <category>family</category>
    </item>
    <item>
      <title>The Case for Boring Meditation Apps</title>
      <dc:creator>orville wang</dc:creator>
      <pubDate>Tue, 14 Jul 2026 05:02:44 +0000</pubDate>
      <link>https://dev.to/orville_wang_d2758f1be203/the-case-for-boring-meditation-apps-444l</link>
      <guid>https://dev.to/orville_wang_d2758f1be203/the-case-for-boring-meditation-apps-444l</guid>
      <description>&lt;p&gt;Open the App Store, search "meditation," and you'll find the same thing over and over: streak counters, achievement badges, daily push reminders, leaderboards, social sharing, and a subscription paywall that appears mid-breath. Somewhere along the way, the industry decided that calm needed to be gamified.&lt;/p&gt;

&lt;p&gt;It doesn't. In fact, gamification actively works against the goal.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Paradox of Engagement Metrics
&lt;/h2&gt;

&lt;p&gt;Every consumer app is optimized for one thing: engagement. Daily active users, session length, retention curves. These are the numbers that raise funding rounds.&lt;/p&gt;

&lt;p&gt;But a meditation app optimized for engagement is a contradiction. The entire point of meditation is &lt;em&gt;disengagement&lt;/em&gt; — from your phone, your notifications, your endless mental to-do list. An app that pings you three times a day to "keep your streak alive" is not helping you disengage. It's another dopamine loop wearing a calming color palette.&lt;/p&gt;

&lt;p&gt;I deleted a popular meditation app mid-session once. I was five minutes into a breathing exercise when a full-screen banner appeared: "Unlock 500+ premium sessions — 50% off today only!" The irony was almost funny. I was there to quiet my mind, and the app interrupted to sell me something.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Gamification Does to Calm
&lt;/h2&gt;

&lt;p&gt;Streak counters create anxiety, not consistency. Miss a day and you feel guilty — the exact opposite of what a mindfulness practice should produce. You end up meditating to protect a number, not to feel present.&lt;/p&gt;

&lt;p&gt;Badges and achievements turn an internal practice into an external performance. You start chasing the reward instead of the experience. Research on intrinsic vs. extrinsic motivation has shown this for decades: external rewards can crowd out the internal motivation that made the activity meaningful in the first place.&lt;/p&gt;

&lt;p&gt;Notifications are the worst offender. A tool designed to reduce mental noise should never be a &lt;em&gt;source&lt;/em&gt; of mental noise. Every push reminder is a small demand on your attention — the very thing you were trying to reclaim.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Subtraction Approach
&lt;/h2&gt;

&lt;p&gt;The best tools disappear. A great meditation app should feel less like an app and more like a light switch: you use it when you need it, and it asks nothing of you the rest of the time.&lt;/p&gt;

&lt;p&gt;This is the design philosophy behind OneZen. No login. No account. No streaks. No badges. No push notifications. No courses to complete. No premium tier dangled in front of you mid-session.&lt;/p&gt;

&lt;p&gt;What it does have: real, field-recorded natural sound. Actual rain, ocean waves, and forest ambience — not synthetic loops. The subtle, unpredictable micro-variations in real recordings prevent the auditory habituation that makes synthetic white noise fade into an annoying drone after a few minutes. You can listen for hours.&lt;/p&gt;

&lt;p&gt;That's the whole product. And that restraint is the feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters Beyond Meditation
&lt;/h2&gt;

&lt;p&gt;The boring-app argument extends to any tool that touches your attention or well-being. Habit trackers, focus timers, sleep apps — the more they gamify, the more they compete for the mental space they claim to protect.&lt;/p&gt;

&lt;p&gt;The next time you evaluate a wellness app, run a simple test: open it, close your eyes for 30 seconds, and ask what you noticed. If you felt the sound, the app is doing its job. If you felt the app — its features, its prompts, its cleverness — it has already failed.&lt;/p&gt;

&lt;p&gt;Boring is underrated. Especially when the goal is peace.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;OneZen is a deliberately minimal meditation and focus tool built around real field-recorded sound. &lt;a href="https://www.opennomos.com/en/project/01KW9BJYTZ8R30NHT81PBBZB8Y" rel="noopener noreferrer"&gt;View it on OpenNomos&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>wellness</category>
      <category>design</category>
      <category>ux</category>
    </item>
    <item>
      <title>Your iPhone Storage Numbers Are Lying to You — Here's What Actually Fills It</title>
      <dc:creator>orville wang</dc:creator>
      <pubDate>Mon, 13 Jul 2026 01:32:17 +0000</pubDate>
      <link>https://dev.to/orville_wang_d2758f1be203/your-iphone-storage-numbers-are-lying-to-you-heres-what-actually-fills-it-5go8</link>
      <guid>https://dev.to/orville_wang_d2758f1be203/your-iphone-storage-numbers-are-lying-to-you-heres-what-actually-fills-it-5go8</guid>
      <description>&lt;p&gt;Every iPhone user knows the moment. iCloud says 5GB free. Settings says storage full. You ask yourself: who's lying?&lt;/p&gt;

&lt;p&gt;The answer is both — and neither. They're measuring completely different things, and Apple designed it to be confusing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Two Numbers
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;iCloud free tier (5GB)&lt;/strong&gt; tracks your total cloud allocation: backups, iCloud Photos, Messages, app data, documents. It does NOT tell you how much space is left on your device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local iPhone storage&lt;/strong&gt; is the physical NAND inside your phone. Apps, caches, system data, and your photo library all fight for this. The mysterious "System Data" can bloat to 20GB with zero explanation.&lt;/p&gt;

&lt;p&gt;These numbers use similar-sounding names but measure entirely different systems. Result: millions of people buying iCloud storage when what they really need is local cleanup.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Storage Villains
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Screenshots: 20-30% of Your Camera Roll
&lt;/h3&gt;

&lt;p&gt;Memes. Flight bookings. Screenshots of conversations you kept by accident. iOS treats them identically to vacation photos. They sit there forever.&lt;/p&gt;

&lt;h3&gt;
  
  
  Near-Duplicates: Burst Mode Fallout
&lt;/h3&gt;

&lt;p&gt;Take 5 photos of the same sunset to get one good one? All 5 stay forever. Each is 2-5MB. Over 3 years, that's gigabytes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blurry Photos: The Pocket Shots
&lt;/h3&gt;

&lt;p&gt;Pure black squares, motion-blur smears, accidental photos. iOS doesn't flag these. Each one eats 2-3MB.&lt;/p&gt;

&lt;h3&gt;
  
  
  App Caches: The Black Box
&lt;/h3&gt;

&lt;p&gt;TikTok: 5GB+. Instagram: 3GB+. You can't clear them per-app. Your only option is reinstalling.&lt;/p&gt;

&lt;h2&gt;
  
  
  What On-Device ML Can Do
&lt;/h2&gt;

&lt;p&gt;Swipe Cleaner uses Core ML on the Neural Engine to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Detect screenshots via status bar patterns, UI elements, text overlays — locally&lt;/li&gt;
&lt;li&gt;Find near-duplicates with perceptual hashing&lt;/li&gt;
&lt;li&gt;Flag blurry photos using Laplacian variance&lt;/li&gt;
&lt;li&gt;OCR to surface sensitive content (IDs, documents) — for review, never auto-deleted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything runs on-device. Zero cloud. Zero uploads.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Swipe Cleaner: on-device Core ML for iOS photo management. &lt;a href="https://www.opennomos.com/en/project/01KW95TC7VFJXZNYHNV3SJ04CN" rel="noopener noreferrer"&gt;View on OpenNomos&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ios</category>
      <category>storage</category>
      <category>privacy</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Why iOS Storage Numbers Are Misleading — And What Actually Fills Your iPhone</title>
      <dc:creator>orville wang</dc:creator>
      <pubDate>Sun, 12 Jul 2026 05:46:11 +0000</pubDate>
      <link>https://dev.to/orville_wang_d2758f1be203/why-ios-storage-numbers-are-misleading-and-what-actually-fills-your-iphone-16p1</link>
      <guid>https://dev.to/orville_wang_d2758f1be203/why-ios-storage-numbers-are-misleading-and-what-actually-fills-your-iphone-16p1</guid>
      <description>&lt;p&gt;Every iPhone owner has seen the contradiction: iCloud says you have 5GB free, but Settings says storage is full. One is lying. Both, actually.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Two Numbers That Don't Talk
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;iCloud (5GB free tier)&lt;/strong&gt; measures your cloud allocation: backups, iCloud Photos, Messages, app data, and documents. It has nothing to do with how much space is left on your phone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local storage&lt;/strong&gt; is the physical NAND on your device. It competes with apps, caches, system data, and your photo library. "System Data" alone can bloat to 20GB with zero explanation.&lt;/p&gt;

&lt;p&gt;Apple designed these as separate systems and gave them similar-sounding names. The result: millions of users who think deleting photos frees iCloud space, or that buying more iCloud fixes a full phone.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Actually Consumes Your Storage
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Screenshots: 20-30% of Most Camera Rolls
&lt;/h3&gt;

&lt;p&gt;Memes from social media. Flight bookings you never deleted. Screenshots of conversations you already archived. iOS treats them identically to vacation photos. They sit there forever unless you manually prune them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Near-Duplicates: Burst Mode Fallout
&lt;/h3&gt;

&lt;p&gt;Most people take 3-5 shots of the same scene to get one good one. These near-identical photos each consume 2-5MB. Over 3 years, that is gigabytes of redundant data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blurry Photos: Pocket Shots and Motion Blur
&lt;/h3&gt;

&lt;p&gt;Every phone has dozens of accidental photos: pure black squares, motion-blur smears, inside-the-pocket shots. iOS does not flag them. It just keeps them.&lt;/p&gt;

&lt;h3&gt;
  
  
  App Caches: The Black Box
&lt;/h3&gt;

&lt;p&gt;TikTok can cache 5GB+. Instagram another 3GB. Spotify stores offline playlists as "cache." There is no per-app cache clearing in iOS. Your only option is deleting and reinstalling the app.&lt;/p&gt;

&lt;h3&gt;
  
  
  "System Data": The Most Opaque Metric in Consumer Tech
&lt;/h3&gt;

&lt;p&gt;It grows. It shrinks. Sometimes it takes 40GB for no reason. Apple provides zero visibility into what constitutes System Data. The official fix is "restore your phone."&lt;/p&gt;

&lt;h2&gt;
  
  
  What On-Device ML Can Do
&lt;/h2&gt;

&lt;p&gt;Swipe Cleaner uses Core ML running on the Neural Engine to classify photos on-device:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Screenshot detection:&lt;/strong&gt; Status bar patterns, UI elements, text overlays — classified locally with &amp;gt;95% accuracy&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Perceptual hashing:&lt;/strong&gt; pHash fingerprints catch near-duplicates even when file names differ&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blur detection:&lt;/strong&gt; Laplacian variance computed in sub-milliseconds per image&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sensitive content:&lt;/strong&gt; OCR-based detection of documents, IDs, financial info — surfaced for user review, never auto-deleted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything runs locally. No photos leave your phone. No cloud API calls. Your privacy is preserved.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;iOS storage management is designed to be invisible, not transparent. Apple benefits from the confusion — you buy more iCloud instead of cleaning your phone. Understanding what actually consumes your storage is the first step to reclaiming it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Swipe Cleaner uses on-device Core ML to classify screenshots, duplicates, and blurry photos. No cloud, no privacy tradeoffs. &lt;a href="https://www.opennomos.com/en/project/01KW95TC7VFJXZNYHNV3SJ04CN" rel="noopener noreferrer"&gt;View on OpenNomos&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ios</category>
      <category>storage</category>
      <category>ai</category>
      <category>privacy</category>
    </item>
    <item>
      <title>The Illusion of Free Storage: How iOS Misleads Users About Their Photo Library</title>
      <dc:creator>orville wang</dc:creator>
      <pubDate>Sat, 11 Jul 2026 09:51:15 +0000</pubDate>
      <link>https://dev.to/orville_wang_d2758f1be203/the-illusion-of-free-storage-how-ios-misleads-users-about-their-photo-library-1e9m</link>
      <guid>https://dev.to/orville_wang_d2758f1be203/the-illusion-of-free-storage-how-ios-misleads-users-about-their-photo-library-1e9m</guid>
      <description>&lt;p&gt;Your iPhone says "Storage Full" while iCloud happily claims you have 5GB free. Somebody is lying. The answer is: both, and neither.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Two Storage Games
&lt;/h2&gt;

&lt;p&gt;iCloud measures one thing. Your iPhone measures another. They do not talk to each other in any useful way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;iCloud free tier (5GB)&lt;/strong&gt;: Your total cloud allocation. It includes backups, iCloud Photos, Messages in iCloud, app data, and documents. It does not mean your phone can hold 5GB more photos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;iPhone local storage&lt;/strong&gt;: The physical NAND on your device. iOS caches, system data, apps, and your photo library all compete for this space. "System Data" alone can balloon to 20GB with no explanation.&lt;/p&gt;

&lt;p&gt;The result? You see both numbers, assume they are about the same thing, and feel gaslit.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Storage Culprits
&lt;/h2&gt;

&lt;p&gt;Through building Swipe Cleaner — an on-device photo management tool — I have spent months analyzing what actually fills phone storage. The answer is boring and infuriating.&lt;/p&gt;

&lt;h3&gt;
  
  
  Screenshots: The Silent Killer
&lt;/h3&gt;

&lt;p&gt;Screenshots make up 20-30% of most camera rolls. Memes saved from social media. Screenshots of flight bookings you never deleted. Screenshots of conversations you already archived. iOS treats them identically to photos you took on vacation. They sit there forever unless you manually delete them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Near-Duplicates: Burst Mode Fallout
&lt;/h3&gt;

&lt;p&gt;Take 12 photos of the same sunset to get one good one? iOS keeps all 12. Burst mode nominally groups them, but if you use the regular shutter multiple times — which everyone does — they are independent files. 5 shots of your dog = 5 separate 3MB files.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blurry Photos: Pocket Shots
&lt;/h3&gt;

&lt;p&gt;Every phone owner has dozens of accidental photos: pure black squares, motion-blur smears, inside-the-pocket shots. These average 2-3MB each. iOS does not flag them. It just keeps them.&lt;/p&gt;

&lt;h3&gt;
  
  
  App Caches: The Unexplained Black Box
&lt;/h3&gt;

&lt;p&gt;"System Data" in iPhone Storage is the most opaque metric in consumer tech. It can grow by gigabytes in a day. It shrinks when it feels like it. There is no way to clear it except waiting or wiping the phone. Apps like TikTok and Instagram routinely cache 5GB+ each without telling you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Apple Could Fix Tomorrow
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unified storage language.&lt;/strong&gt; Show one number that represents actual remaining space across local and cloud.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto-classify photos.&lt;/strong&gt; Screenshots, duplicates, and blurry shots should be surfaced as cleanup targets, not hidden among 10,000 vacation photos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transparent caches.&lt;/strong&gt; Tell me which app is using how much cache. Let me clear it per-app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart storage recommendations.&lt;/strong&gt; iCloud already runs ML on-device. Use that same Neural Engine to suggest what to delete instead of just saying "Storage Almost Full."&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What You Can Do Right Now
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Audit your largest apps.&lt;/strong&gt; Settings &amp;gt; General &amp;gt; iPhone Storage. Sort by size. Offload apps you do not use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delete screenshots in bulk.&lt;/strong&gt; Search "Screenshot" in Photos, select all, delete. You will free 5-15GB on average.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clear Safari cache.&lt;/strong&gt; Settings &amp;gt; Safari &amp;gt; Clear History and Website Data. This alone can free 2-5GB.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disable iCloud Photos if you don not need it.&lt;/strong&gt; It syncs your entire library, filling both local and cloud storage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use on-device tools.&lt;/strong&gt; Photo management tools that run locally — no uploads — can identify what is safe to delete without privacy tradeoffs.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;Storage management on iOS is designed to be invisible, not transparent. Apple banks on you paying for iCloud rather than actually cleaning your phone. As long as the numbers are confusing, the subscription revenue keeps flowing.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Swipe Cleaner uses on-device Core ML to classify screenshots, duplicates, and blurry photos. No cloud, no privacy tradeoffs. &lt;a href="https://www.opennomos.com/en/project/01KW95TC7VFJXZNYHNV3SJ04CN" rel="noopener noreferrer"&gt;View on OpenNomos&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ios</category>
      <category>storage</category>
      <category>privacy</category>
      <category>mobile</category>
    </item>
    <item>
      <title>Building On-Device ML for iOS Photo Management</title>
      <dc:creator>orville wang</dc:creator>
      <pubDate>Fri, 10 Jul 2026 15:15:44 +0000</pubDate>
      <link>https://dev.to/orville_wang_d2758f1be203/building-on-device-ml-for-ios-photo-management-2iii</link>
      <guid>https://dev.to/orville_wang_d2758f1be203/building-on-device-ml-for-ios-photo-management-2iii</guid>
      <description>&lt;p&gt;The average iPhone camera roll has over 10,000 photos. Most are never looked at again. Manual cleanup does not scale. Sending your photo library to a cloud API for classification is a privacy disaster waiting to happen. The answer is on-device machine learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why On-Device Matters
&lt;/h2&gt;

&lt;p&gt;Your camera roll contains the most personal data on your phone. Passport photos, bank screenshots, private conversations, medical documents. Uploading this to any server breaks fundamental trust.&lt;/p&gt;

&lt;p&gt;Apple built the Neural Engine into every iPhone since the A11 chip. It runs ML inference at low power with exceptional throughput. For photo classification, it is the perfect workload — embarrassingly parallel, latency-sensitive, and privacy-critical.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Model Pipeline
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Screenshot Detection
&lt;/h3&gt;

&lt;p&gt;Screenshots have distinct visual signatures: UI elements, status bars, text overlays, app chrome. A fine-tuned vision model classifies them with &amp;gt;95% accuracy. The key insight: status bar patterns are highly consistent across iOS versions, making them reliable features.&lt;/p&gt;

&lt;h3&gt;
  
  
  Perceptual Hashing for Duplicates
&lt;/h3&gt;

&lt;p&gt;Perceptual hashing (pHash) computes a fingerprint for each image. Similar photos cluster below a distance threshold. This catches burst-mode variants, re-downloaded files, and near-identical edits. Running pHash on the CPU while the Neural Engine handles classification maximizes throughput.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blur Detection via Laplacian Variance
&lt;/h3&gt;

&lt;p&gt;Laplacian variance measures sharpness. Low variance indicates motion blur or a pocket shot. This is fast enough to compute during scrolling — sub-millisecond per image.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sensitive Content Detection
&lt;/h3&gt;

&lt;p&gt;OCR extracts text from images. The system flags document-like patterns: ID cards, passports, tax forms, bank statements. These are not auto-deleted — they are surfaced for user review. Privacy means never making decisions without consent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance Considerations
&lt;/h2&gt;

&lt;p&gt;Processing 10,000 photos requires careful orchestration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Batch inference via VNImageRequestHandler with a serial queue to avoid thread explosion&lt;/li&gt;
&lt;li&gt;Thumbnail-first approach: classify using low-resolution thumbnails first, full-resolution only for comparison&lt;/li&gt;
&lt;li&gt;Background processing with BGTaskScheduler so the user never sees a loading spinner&lt;/li&gt;
&lt;li&gt;Result caching: pHash values and classifications stored in a local SQLite database, avoiding recomputation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  UX: The Swipe Interface
&lt;/h2&gt;

&lt;p&gt;Classification is half the problem. The other half is making decisions fast. A Tinder-like card interface — swipe right to keep, left to delete — turns a tedious chore into a 5-minute activity. The AI pre-selects the likely action so most swipes are confirmations, not decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Start with one model. We shipped three ML features at launch (screenshots, duplicates, blur). Focusing on duplicates alone would have been a cleaner v1.&lt;/li&gt;
&lt;li&gt;Privacy messaging outperforms feature messaging. Users care more about on-device processing than any feature we could list.&lt;/li&gt;
&lt;li&gt;Screenshots are the #1 storage culprit. Most users have 20-30% of their camera roll as forgotten screenshots.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On-device ML is no longer a differentiator — it is table stakes for any app that touches personal data.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Swipe Cleaner uses on-device Core ML for iOS photo management. &lt;a href="https://www.opennomos.com/en/project/01KW95TC7VFJXZNYHNV3SJ04CN" rel="noopener noreferrer"&gt;View on OpenNomos&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ios</category>
      <category>ai</category>
      <category>machinelearning</category>
      <category>mobile</category>
    </item>
    <item>
      <title>How On-Device AI Is Changing Photo Management</title>
      <dc:creator>orville wang</dc:creator>
      <pubDate>Wed, 08 Jul 2026 04:06:21 +0000</pubDate>
      <link>https://dev.to/orville_wang_d2758f1be203/how-on-device-ai-is-changing-photo-management-2aj7</link>
      <guid>https://dev.to/orville_wang_d2758f1be203/how-on-device-ai-is-changing-photo-management-2aj7</guid>
      <description>&lt;p&gt;The average iPhone camera roll has over 5,000 photos. Most are never looked at again. Screenshots from 2023. Burst shots with 15 variants of the same sunset. Downloads from messaging apps you forgot about.&lt;/p&gt;

&lt;p&gt;Manual cleanup does not scale. But sending your photo library to a cloud API for classification is a privacy disaster waiting to happen. The answer is on-device machine learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Local AI Matters
&lt;/h2&gt;

&lt;p&gt;Your camera roll is the most personal dataset on your phone. Passport photos, bank screenshots, private conversations. Uploading this to a cloud service breaks the fundamental trust users have with their devices.&lt;/p&gt;

&lt;p&gt;Apple built the Neural Engine into every iPhone since the A11 chip. It sits idle most of the time. Photo classification is the perfect workload — embarrassingly parallel, privacy-sensitive, and benefits from instant feedback.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Swipe Cleaner Works
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Screenshot Detection
&lt;/h3&gt;

&lt;p&gt;Screenshots have distinct visual signatures: UI elements, status bars, text overlays, app chrome. A fine-tuned vision model running on Core ML detects these patterns in milliseconds.&lt;/p&gt;

&lt;h3&gt;
  
  
  Duplicate Detection
&lt;/h3&gt;

&lt;p&gt;Perceptual hashing (pHash) computes a fingerprint for each image. Similar photos — burst shots, re-downloaded files, near-identical edits — cluster below a distance threshold. The system groups them so you can compare and delete.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blur Detection
&lt;/h3&gt;

&lt;p&gt;Laplacian variance measures sharpness. Low variance means motion blur or a pocket shot. These get flagged for quick review.&lt;/p&gt;

&lt;h3&gt;
  
  
  Privacy by Design
&lt;/h3&gt;

&lt;p&gt;All processing stays on-device. No network requests for image analysis. The ML models are bundled with the app and updated through the standard App Store review process — not through a hidden API.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Swipe UX
&lt;/h2&gt;

&lt;p&gt;Classification is half the problem. The other half is making decisions fast. A Tinder-like card interface — swipe right to keep, left to delete — turns a tedious chore into a 5-minute game. The AI pre-selects the likely action so most swipes are just confirmations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Launch with one killer feature.&lt;/strong&gt; We shipped similar-photo, screenshot, and blur detection all at once. Should have focused on duplicates alone for v1.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy messaging matters.&lt;/strong&gt; Users care more about on-device processing than any feature we could add. Lead with privacy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screenshots are the #1 storage culprit.&lt;/strong&gt; Most users have 20-30% of their camera roll as screenshots they do not remember taking.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is Next
&lt;/h2&gt;

&lt;p&gt;On-device AI in iOS apps is still in its early stages. As Apple opens more Neural Engine APIs and models become more efficient, we will see a new category of privacy-first utility apps that do not touch the cloud.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Swipe Cleaner uses on-device AI for photo management. &lt;a href="https://www.opennomos.com/en/project/01KW95TC7VFJXZNYHNV3SJ04CN" rel="noopener noreferrer"&gt;View on OpenNomos&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ios</category>
      <category>ai</category>
      <category>machinelearning</category>
      <category>mobile</category>
    </item>
  </channel>
</rss>
