<?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: lori shui</title>
    <description>The latest articles on DEV Community by lori shui (@loriwave).</description>
    <link>https://dev.to/loriwave</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3736707%2Fb992b3ff-fe11-4a83-a5fd-7fd93ac436e2.png</url>
      <title>DEV Community: lori shui</title>
      <link>https://dev.to/loriwave</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/loriwave"/>
    <language>en</language>
    <item>
      <title>9 Privacy-First Mac Apps Built with SwiftUI &amp; CoreML — No Cloud Required</title>
      <dc:creator>lori shui</dc:creator>
      <pubDate>Wed, 04 Mar 2026 08:54:37 +0000</pubDate>
      <link>https://dev.to/loriwave/9-privacy-first-mac-apps-built-with-swiftui-coreml-no-cloud-required-4jlm</link>
      <guid>https://dev.to/loriwave/9-privacy-first-mac-apps-built-with-swiftui-coreml-no-cloud-required-4jlm</guid>
      <description>&lt;p&gt;I’ve been exploring a portfolio of indie Mac/iOS apps built by a solo developer — all sharing the same philosophy: &lt;strong&gt;your data stays on your device&lt;/strong&gt;. No accounts, no uploads, no cloud dependency. Just SwiftUI + CoreML doing the heavy lifting locally.&lt;/p&gt;

&lt;p&gt;Here’s a rundown of all 9 apps from &lt;a href="https://apps.h53d.xyz/" rel="noopener noreferrer"&gt;H53D&lt;/a&gt;, and what makes each one worth a look.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Shine3D — 3D Viewer That Actually Looks Good
&lt;/h2&gt;

&lt;p&gt;Most 3D viewers are functional but dull. Shine3D takes a different approach: it’s designed to make your models look &lt;em&gt;beautiful&lt;/em&gt;. Whether you’re showing off a design to a client or just exploring a model, the rendering quality stands out.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://apps.apple.com/us/app/shine3d-pro-3d-viewer/id6757391542?platform=mac" rel="noopener noreferrer"&gt;Mac App Store&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. 3D Model Viewer — Lightweight Converter for Offline Use
&lt;/h2&gt;

&lt;p&gt;If you work with SAM 3D outputs or just need to convert between 3D formats without going online, this tool covers it. It handles a wide range of formats and works entirely offline — useful when you’re on a plane or in a restricted network environment.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://apps.apple.com/us/app/3d-model-viewer/id6748610196" rel="noopener noreferrer"&gt;Mac App Store&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3. DXF Assistant — View &amp;amp; Convert DXF on Mac, iPad, iPhone
&lt;/h2&gt;

&lt;p&gt;DXF files are everywhere in engineering and CAD workflows, but decent viewers are surprisingly rare on Apple platforms. DXF Assistant handles both 2D and 3D navigation smoothly, and lets you export to PDF, SVG, or PNG. Works across macOS, iPad, and iPhone.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://apps.apple.com/us/app/dxf-assistant/id6742348600" rel="noopener noreferrer"&gt;Mac App Store&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  4. P2V Converter — Pixel to Vector, Instantly
&lt;/h2&gt;

&lt;p&gt;Converting raster images to vector graphics usually means wrestling with Illustrator or running a web service that keeps your files. P2V Converter does the conversion on-device in moments. Particularly handy for pixel art or logo cleanup work.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://apps.apple.com/us/app/p2v-converter/id6752116587" rel="noopener noreferrer"&gt;Mac App Store&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  5. SheetCollector — Import Tables from Files and Images
&lt;/h2&gt;

&lt;p&gt;This one solves a specific but common pain: extracting tables from PDFs, images, or various file formats and getting them into a clean spreadsheet. You can organize, edit, and export as polished PDF or JPEG. No OCR service calls — it all runs locally.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://apps.apple.com/us/app/sheetcollector/id6733222153" rel="noopener noreferrer"&gt;Mac App Store&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. STEP File Viewer — CAD on iPhone? Seriously.
&lt;/h2&gt;

&lt;p&gt;STEP files are the standard format for 3D CAD exchange, and this viewer lets you open them on macOS, iPad, &lt;em&gt;and&lt;/em&gt; iPhone. The impressive part: projected views, section views, and even exploded views on mobile. Lightweight and ad-free.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://apps.apple.com/us/app/step-file-viewer/id6755721056" rel="noopener noreferrer"&gt;Mac App Store&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  7. pcAI Photo Retouch — Local AI Image Enhancement
&lt;/h2&gt;

&lt;p&gt;Want to restore an old blurry photo or apply an artistic style like oil painting or Van Gogh? The typical answer is “upload to some cloud API.” pcAI says no: all the AI processing runs on your device via CoreML. The privacy angle isn’t just a selling point — it’s the architecture.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://apps.apple.com/us/app/pcai-photo-retouch/id6751140211" rel="noopener noreferrer"&gt;Mac App Store&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  8. CutoutCraft — Background Removal Without the Subscription
&lt;/h2&gt;

&lt;p&gt;Background removal, image restyling, layout creation — CutoutCraft handles all of it with on-device AI. No registration, no uploads, no monthly fee. Just tap, cut, style, export. The kind of tool that should have existed years ago.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://apps.apple.com/us/app/cutoutcraft/id6745748800" rel="noopener noreferrer"&gt;Mac App Store&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  9. ShareGuard — Protect Sensitive Info Before You Share
&lt;/h2&gt;

&lt;p&gt;This one is quietly important. Before you share a screenshot or photo, ShareGuard lets you strip hidden EXIF metadata, mask faces, and blur or mosaic sensitive text — all on-device. In a world where people routinely leak private data in screenshots, this fills a real gap.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://apps.apple.com/us/app/shareguard/id6752704315" rel="noopener noreferrer"&gt;Mac App Store&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Common Thread
&lt;/h2&gt;

&lt;p&gt;What ties all these apps together is the &lt;strong&gt;local-first, privacy-first&lt;/strong&gt; approach. In an era where almost everything phones home, it’s refreshing to see a developer consistently choose to do the work on-device — whether that’s CoreML inference, file conversion, or metadata stripping.&lt;/p&gt;

&lt;p&gt;The full portfolio is at &lt;a href="https://apps.h53d.xyz/" rel="noopener noreferrer"&gt;apps.h53d.xyz&lt;/a&gt; if you want to browse the previews. Worth bookmarking if you work in design, engineering, or just care about keeping your files off other people’s servers.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: I’m sharing this as a fan of the approach, not as the developer. The apps are built and maintained by a friend.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>swift</category>
      <category>macos</category>
      <category>ai</category>
      <category>privacy</category>
    </item>
    <item>
      <title>Why I built a free TV wall in the browser — and what I learned</title>
      <dc:creator>lori shui</dc:creator>
      <pubDate>Fri, 27 Feb 2026 08:49:23 +0000</pubDate>
      <link>https://dev.to/loriwave/why-i-built-a-free-tv-wall-in-the-browser-and-what-i-learned-okh</link>
      <guid>https://dev.to/loriwave/why-i-built-a-free-tv-wall-in-the-browser-and-what-i-learned-okh</guid>
      <description>&lt;p&gt;It started with a simple moment.&lt;/p&gt;

&lt;p&gt;I was sitting at my desk during a major breaking news event, flipping between CNN, BBC, and Al Jazeera tabs. I wanted to see how different networks were covering the same story — at the same time, on the same screen.&lt;/p&gt;

&lt;p&gt;I Googled "watch multiple TV channels at once." Everything I found was either a paid app, required a download, or needed me to create yet another account. All I wanted was to open a browser tab and watch.&lt;/p&gt;

&lt;p&gt;So I built it myself.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is LiveGrid?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://livegrid.app/welcome" rel="noopener noreferrer"&gt;LiveGrid&lt;/a&gt;&lt;/strong&gt; is a free, browser-based TV wall. Open it, pick your channels, and watch them all at once on a single screen. No login. No install. No paywall.&lt;/p&gt;

&lt;p&gt;It currently has 5000+ live channels from around the world — news, sports, entertainment, music — organized by country and category. You can choose different layouts: a classic grid, a command center with one main channel and smaller side channels, or a hero layout that emphasizes one stream while keeping others visible.&lt;/p&gt;

&lt;h3&gt;
  
  
  The moment I knew this was worth building
&lt;/h3&gt;

&lt;p&gt;The first time I had 6 news channels playing simultaneously on my screen, I felt something I didn't expect — &lt;strong&gt;a sense of connection to the world&lt;/strong&gt;. I could see BBC covering a story from one angle while Al Jazeera showed a completely different perspective. I could watch Japanese NHK news even though I don't speak Japanese, just to see what they were focusing on.&lt;/p&gt;

&lt;p&gt;It wasn't just about information. It was about &lt;strong&gt;seeing the world through multiple windows at the same time&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's when I stopped thinking of this as a side project and started taking it seriously.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who actually uses this?
&lt;/h3&gt;

&lt;p&gt;I originally built it for myself, but after sharing it on Reddit, I found that people use it for very different reasons:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;News junkies&lt;/strong&gt; — Journalists and news enthusiasts who want to compare how different networks cover the same event. During elections, natural disasters, or major geopolitical events, having multiple perspectives on one screen is incredibly valuable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sports fans&lt;/strong&gt; — When there are multiple games happening at the same time (think NFL Sunday, Champions League nights, or March Madness), you don't want to pick just one. You want to see them all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expats and digital nomads&lt;/strong&gt; — People living abroad who miss TV from home. A Brazilian in Tokyo watching Globo. An Indian in Berlin catching IPL matches. LiveGrid makes it easy to find and watch channels from your home country.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;People who just think it's cool&lt;/strong&gt; — And honestly? That was me at the beginning. I just thought the idea of a TV wall in a browser was cool. Turns out, "cool" can be a valid reason to build something.&lt;/p&gt;

&lt;h3&gt;
  
  
  The challenges I didn't expect
&lt;/h3&gt;

&lt;p&gt;Building a multi-stream video player sounds straightforward. It's not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Streams break. A lot.&lt;/strong&gt; Live IPTV streams are notoriously unreliable. They stall, buffer, drop out, and sometimes just die. I had to build automatic stall detection and recovery — if a stream freezes for too long, LiveGrid automatically tries to restart it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Devices have limits.&lt;/strong&gt; Playing 16 simultaneous video streams will melt a cheap laptop. I built a Performance Guard that monitors your device's FPS in real-time and automatically pauses excess streams when your device is under pressure. On a powerful desktop, you get all 16 streams. On a modest laptop, it gracefully drops to 4. The user doesn't have to think about it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Audio is tricky.&lt;/strong&gt; When you have 9 channels playing, whose audio do you hear? I built a focus system — click any tile to hear its audio. You can also lock audio to a specific channel, adjust volume per tile, or mute everything. It sounds simple, but getting the UX right took several iterations.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I learned
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Start with "cool," iterate toward "useful."&lt;/strong&gt; I didn't have a product-market fit hypothesis. I didn't do user research. I just built something I thought was cool. But by sharing it and listening to feedback, I discovered real use cases I never imagined.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zero-friction matters more than features.&lt;/strong&gt; The #1 thing people appreciate about LiveGrid isn't any specific feature — it's that they can open a link and immediately start watching. No signup flow. No onboarding. No "choose a plan." Just TV.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The world is more interesting when you see it from multiple angles.&lt;/strong&gt; This is the philosophical takeaway. We're used to consuming media one stream at a time — one article, one video, one channel. But when you put 6 different countries' news side by side, you realize how different the world looks depending on where you're standing.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's next
&lt;/h3&gt;

&lt;p&gt;I'm actively working on LiveGrid and exploring ideas like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;More layout options&lt;/strong&gt; — Custom arrangements beyond the current presets&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better channel discovery&lt;/strong&gt; — Smarter recommendations based on what you're watching&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community features&lt;/strong&gt; — Ways for users to share and discover interesting channel combinations&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Try it
&lt;/h3&gt;

&lt;p&gt;If any of this resonates with you: &lt;strong&gt;&lt;a href="https://livegrid.app/welcome" rel="noopener noreferrer"&gt;livegrid.app/welcome&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No login. No install. Just open it and start watching. Pick a country you've never been to and see what's on their TV right now. You might be surprised by what you discover.&lt;/p&gt;

&lt;p&gt;I'd love to hear your feedback — what channels you found interesting, what features you'd want, or just what you think about the idea. Drop a comment below or reach out at &lt;a href="mailto:support@livegrid.app"&gt;support@livegrid.app&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>showdev</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
