<?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: IAMUU</title>
    <description>The latest articles on DEV Community by IAMUU (@iamuu).</description>
    <link>https://dev.to/iamuu</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%2F4010612%2Fb281aac2-31f6-407f-af3a-3e42cf2fa07f.png</url>
      <title>DEV Community: IAMUU</title>
      <link>https://dev.to/iamuu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/iamuu"/>
    <language>en</language>
    <item>
      <title>AI Image Upscaling in 2026: What's Real, What's Hype, and What Actually Works</title>
      <dc:creator>IAMUU</dc:creator>
      <pubDate>Mon, 06 Jul 2026 08:16:21 +0000</pubDate>
      <link>https://dev.to/iamuu/ai-image-upscaling-in-2026-whats-real-whats-hype-and-what-actually-works-46gc</link>
      <guid>https://dev.to/iamuu/ai-image-upscaling-in-2026-whats-real-whats-hype-and-what-actually-works-46gc</guid>
      <description>&lt;p&gt;AI upscaling has gotten remarkably good. But the marketing is ahead of reality in several important ways.&lt;/p&gt;

&lt;p&gt;What actually works well in 2026:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Photos (faces, landscapes, objects): 2x-4x upscaling with preserved detail. The models are genuinely impressive at this.&lt;/li&gt;
&lt;li&gt;Line art and logos: Vectorization (not upscaling) is still the right approach here. Trace → SVG → scale infinitely.&lt;/li&gt;
&lt;li&gt;Text in images: Hit or miss. Clear text at high-ish resolution → usually fine. Blurry phone photo of a sign → still bad.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What the marketing claims that isn't quite true:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Enhance any image" — No. Garbage in, garbage out still applies. A 100px thumbnail won't become a 4K wallpaper.&lt;/li&gt;
&lt;li&gt;"Restore old photos perfectly" — It helps, but can hallucinate details that weren't there. Great-grandma didn't have that mole.&lt;/li&gt;
&lt;li&gt;"Real-time 8K upscaling" — Technically possible with hardware acceleration, but the processing time on consumer devices is still seconds, not milliseconds.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When to use AI upscaling vs traditional methods:&lt;/p&gt;

&lt;p&gt;┌──────────────────────────────────┬────────────────────────────────────────────────────────┐&lt;br&gt;
│             Scenario             │                     Best Approach                      │&lt;br&gt;
├──────────────────────────────────┼────────────────────────────────────────────────────────┤&lt;br&gt;
│ Print a web image at poster size │ AI upscale 2x, then bicubic resize to exact dimensions │&lt;br&gt;
├──────────────────────────────────┼────────────────────────────────────────────────────────┤&lt;br&gt;
│ Enlarge a logo                   │ Vector trace (not AI)                                  │ ├──────────────────────────────────┼────────────────────────────────────────────────────────┤&lt;br&gt;
│ Fix a pixelated screenshot       │ Bicubic sharper — AI adds artifacts to UI elements     │  ├──────────────────────────────────┼────────────────────────────────────────────────────────┤&lt;br&gt;
│ Enlarge an old family photo      │ AI upscale, then manual touch-up                       │  └──────────────────────────────────┴────────────────────────────────────────────────────────┘&lt;/p&gt;

&lt;p&gt;I've been testing these tools for a while. The biggest practical insight: AI upscaling works best as part of a pipeline, not as a one-click magic button. Upscale → spot-fix artifacts → sharpen. Three steps, not one.&lt;/p&gt;

&lt;p&gt;For quick one-off upscaling without installing anything, browser-based tools like &lt;a href="https://www.iamuu.com/image" rel="noopener noreferrer"&gt;U-Ultra/Unity&lt;/a&gt;'s image enhancer handle the common cases. For batch work, I use a combination of CLI tools and manual QA.&lt;/p&gt;

&lt;p&gt;What's your experience been with AI image tools? Any workflow tips to share?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Don't Email That PDF Before Reading Its Metadata</title>
      <dc:creator>IAMUU</dc:creator>
      <pubDate>Mon, 06 Jul 2026 08:13:44 +0000</pubDate>
      <link>https://dev.to/iamuu/dont-email-that-pdf-before-reading-its-metadata-42kj</link>
      <guid>https://dev.to/iamuu/dont-email-that-pdf-before-reading-its-metadata-42kj</guid>
      <description>&lt;p&gt;A PDF contains more than what you see. Before emailing a document, check what's hidden:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Author name and edit history&lt;br&gt;
File → Properties shows who created it, what software was used, and sometimes the edit chain. Your client doesn't need to know you used a cracked copy of Acrobat in 2019.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GPS coordinates&lt;br&gt;
Photos embedded in PDFs often carry EXIF location data. That "confidential proposal" might be broadcasting your office coordinates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deleted content&lt;br&gt;
PDFs support incremental saves. Redacted text can sometimes be recovered because the original content is still in the file.Use proper redaction tools, not black rectangles.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Embedded fonts and scripts&lt;br&gt;
Some PDFs ship with JavaScript. Not common, but worth stripping before forwarding.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Quick fix checklist before sending any PDF:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inspect metadata: &lt;a href="https://www.iamuu.com/pdf" rel="noopener noreferrer"&gt;iamuu.com PDF inspector&lt;/a&gt; shows everything in one click&lt;/li&gt;
&lt;li&gt;Strip metadata: Remove author, software, and timestamps&lt;/li&gt;
&lt;li&gt;Redact properly: Use actual redaction (content deletion), not annotation overlays&lt;/li&gt;
&lt;li&gt;Add password: For sensitive documents, encryption is the only real protection&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I learned this the hard way — sent a contract proposal to a client and they replied "cool, but why does your PDF say you worked on this at 11:42 PM from Starbucks?"&lt;/p&gt;

&lt;p&gt;Five minutes of cleanup before every send. Build it into your workflow.&lt;/p&gt;

</description>
      <category>security</category>
      <category>privacy</category>
      <category>productivity</category>
    </item>
    <item>
      <title>SVG vs PNG vs WebP: Pick the Wrong Format and Your Users Pay</title>
      <dc:creator>IAMUU</dc:creator>
      <pubDate>Mon, 06 Jul 2026 08:12:08 +0000</pubDate>
      <link>https://dev.to/iamuu/svg-vs-png-vs-webp-pick-the-wrong-format-and-your-users-pay-300i</link>
      <guid>https://dev.to/iamuu/svg-vs-png-vs-webp-pick-the-wrong-format-and-your-users-pay-300i</guid>
      <description>&lt;p&gt;Choosing the right image format isn't about aesthetics — it's about bytes. The wrong choice costs your users real bandwidth.&lt;/p&gt;

&lt;p&gt;Here's a practical decision framework:&lt;/p&gt;

&lt;p&gt;SVG&lt;br&gt;
Best for: logos, icons, illustrations, charts&lt;br&gt;
File size: tiny (text-based)&lt;br&gt;
Scaling: infinite (it's math, not pixels)&lt;br&gt;
Don't use for: photos (file size explodes — a single photo as SVG = megabytes)&lt;/p&gt;

&lt;p&gt;PNG&lt;br&gt;
Best for: screenshots, UI mockups, images needing transparency&lt;br&gt;
Compression: lossless (every pixel preserved)&lt;br&gt;
Trade-off: larger than lossy formats. A PNG screenshot at 2400px wide is often 500KB+ while the JPG equivalent is 80KB.&lt;/p&gt;

&lt;p&gt;WebP&lt;br&gt;
Best for: photos on the web, hero images, anything currently JPG or PNG&lt;br&gt;
Compression: lossy (like JPG) or lossless (like PNG) — your choice&lt;br&gt;
Real-world: 25-35% smaller than equivalent JPG at same quality. Google's format, supported everywhere now (97% browser coverage).&lt;/p&gt;

&lt;p&gt;JPEG&lt;br&gt;
Still the universal fallback. Use when you need guaranteed compatibility (email attachments, legacy CMS).&lt;/p&gt;

&lt;p&gt;My personal defaults:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Screenshots for docs → PNG (need pixel-perfect)&lt;/li&gt;
&lt;li&gt;Hero images, blog photos → WebP at quality 80&lt;/li&gt;
&lt;li&gt;User uploads, email → JPEG at quality 85&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A quick benchmark from my own site: switching hero images from PNG to WebP saved 1.2MB on first load. That's 0.3s on 3G.&lt;/p&gt;

&lt;p&gt;If you need to batch-convert existing images, &lt;a href="https://www.iamuu.com/image" rel="noopener noreferrer"&gt;U-Ultra/Unity's format converter&lt;/a&gt; handles SVG↔PNG, HEIC→WebP, and RAW→JPG without installing anything. For local CLI work, I use imgbatch convert *.png --to webp.&lt;/p&gt;

&lt;p&gt;What's your go-to format stack?&lt;/p&gt;

</description>
      <category>webperf</category>
      <category>frontend</category>
      <category>design</category>
    </item>
    <item>
      <title>Batch Processing Images Without Writing a Script — Resize, Compress, Rename 500 Files in 30 Seconds</title>
      <dc:creator>IAMUU</dc:creator>
      <pubDate>Mon, 06 Jul 2026 08:09:34 +0000</pubDate>
      <link>https://dev.to/iamuu/batch-processing-images-without-writing-a-script-resize-compress-rename-500-files-in-30-seconds-lp0</link>
      <guid>https://dev.to/iamuu/batch-processing-images-without-writing-a-script-resize-compress-rename-500-files-in-30-seconds-lp0</guid>
      <description>&lt;p&gt;I recently had to prepare 500 product photos for a client's e-commerce migration. Each needed to be: resized to 1200px wide,compressed under 200KB, and renamed to SKU-001.jpg format.&lt;/p&gt;

&lt;p&gt;Here's what I learned about doing this efficiently:&lt;/p&gt;

&lt;p&gt;The manual way (please don't):&lt;br&gt;
Open each photo → ⌘+Option+I → type width → Export As → set quality → save. That's 1,500 clicks for 500 images.&lt;/p&gt;

&lt;p&gt;The scripting way:&lt;br&gt;
for f in *.jpg; do&lt;br&gt;
  convert "$f" -resize 1200 -quality 80 "processed/$f"&lt;br&gt;
done&lt;br&gt;
Works great. ImageMagick dependency, need to handle edge cases.&lt;/p&gt;

&lt;p&gt;The pipeline approach:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Resize everything in one batch&lt;/li&gt;
&lt;li&gt;Compress in one batch&lt;/li&gt;
&lt;li&gt;Rename with a pattern&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Three operations, one command each. No custom script needed.&lt;/p&gt;

&lt;p&gt;I built a small CLI tool for this called &lt;a href="https://github.com/beenkevin25/imgbatch" rel="noopener noreferrer"&gt;imgbatch&lt;/a&gt; (pip install imgbatch):&lt;br&gt;
imgbatch resize photos/&lt;em&gt;.jpg --width 1200&lt;br&gt;
imgbatch compress photos/&lt;/em&gt;.jpg --quality 80&lt;br&gt;
imgbatch rename photos/*.jpg --pattern "SKU-{n:03d}{ext}"&lt;/p&gt;

&lt;p&gt;For PDFs and more advanced operations (merge, split, OCR, watermark), I use &lt;a href="https://www.iamuu.com" rel="noopener noreferrer"&gt;U-Ultra/Unity&lt;/a&gt; as a zero-install alternative. The free tier handles files up to 50MB with no registration.&lt;/p&gt;

&lt;p&gt;The key lesson: batch processing is about doing the same transform to many files at once. Whether you use a CLI, a script, or a web tool, the pattern is always: select → transform → output. Don't do repetitive work manually.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>automation</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Color Profiles Explained: sRGB vs Adobe RGB vs Display P3 — Stop Your Exports Looking Wrong</title>
      <dc:creator>IAMUU</dc:creator>
      <pubDate>Mon, 06 Jul 2026 08:06:24 +0000</pubDate>
      <link>https://dev.to/iamuu/color-profiles-explained-srgb-vs-adobe-rgb-vs-display-p3-stop-your-exports-looking-wrong-4j37</link>
      <guid>https://dev.to/iamuu/color-profiles-explained-srgb-vs-adobe-rgb-vs-display-p3-stop-your-exports-looking-wrong-4j37</guid>
      <description>&lt;p&gt;If you've ever exported an image and thought "the colors look off," you're not alone. The culprit is almost always a color profile mismatch.&lt;/p&gt;

&lt;p&gt;Here's what actually matters:&lt;/p&gt;

&lt;p&gt;sRGB is the lowest common denominator. Every screen supports it. Every browser defaults to it. If your image is going on the web, this is what you want. Period.&lt;/p&gt;

&lt;p&gt;Adobe RGB has a 35% wider gamut — mainly in greens and cyans. It's useful for print workflows where your printer can reproduce those extra colors. But here's the trap: if you upload an Adobe RGB image to the web without converting, browsers clamp the gamut to sRGB and everything looks desaturated.&lt;/p&gt;

&lt;p&gt;Display P3 is Apple's standard. iPhones shoot in P3. MacBooks display P3. It sits between sRGB and Adobe RGB in gamut size.Most social media platforms now handle P3 correctly, but random CMS systems? Hit or miss.&lt;/p&gt;

&lt;p&gt;My rule of thumb after years of exporting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Print → Adobe RGB or CMYK, ask your printer.&lt;/li&gt;
&lt;li&gt;iOS photos to stay on Apple devices → P3 is fine.&lt;/li&gt;
&lt;li&gt;Client delivery → sRGB unless they specifically ask otherwise.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The simplest workflow: work in whatever space you want, but export a final sRGB copy for the web. Tools like &lt;a href="https://www.iamuu.com" rel="noopener noreferrer"&gt;U-Ultra/Unity&lt;/a&gt; let you convert color profiles and formats in one step without installing anything.&lt;/p&gt;

&lt;p&gt;One more thing — check your Export As / Save for Web dialog. If "Embed Color Profile" is checked and the platform strips it,you're back to square one. Uncheck it and convert to sRGB explicitly.&lt;/p&gt;

&lt;p&gt;What profile do you default to? Have you been burned by a mismatch before?&lt;/p&gt;

</description>
      <category>design</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>ai</category>
    </item>
    <item>
      <title>How I Built a Free Online Image &amp; PDF Processing Platform with Vue 3 + FastAPI</title>
      <dc:creator>IAMUU</dc:creator>
      <pubDate>Wed, 01 Jul 2026 09:02:50 +0000</pubDate>
      <link>https://dev.to/iamuu/how-i-built-a-free-online-image-pdf-processing-platform-with-vue-3-fastapi-4p4o</link>
      <guid>https://dev.to/iamuu/how-i-built-a-free-online-image-pdf-processing-platform-with-vue-3-fastapi-4p4o</guid>
      <description>&lt;h1&gt;
  
  
  How I Built a Free Online Image &amp;amp; PDF Processing Platform with Vue 3 + FastAPI
&lt;/h1&gt;

&lt;p&gt;I was tired of online file tools that watermarked my output, forced me to create an account, or secretly limited "free" to 2 files per day. So I spent 6 months building my own.&lt;/p&gt;

&lt;p&gt;The result is &lt;a href="https://www.iamuu.com" rel="noopener noreferrer"&gt;iamuu&lt;/a&gt; — a free platform with 100+ image format conversions, 40+ PDF tools, AI background removal, OCR, and digital signatures. No registration required for basic use, no watermarks, files auto-deleted after processing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Stack
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Choice&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;Vue 3 + TypeScript + Vite + Pinia&lt;/td&gt;
&lt;td&gt;Composition API, great DX, small bundle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Python 3.12 + FastAPI&lt;/td&gt;
&lt;td&gt;Async by default, Pydantic validation, excellent performance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Queue&lt;/td&gt;
&lt;td&gt;Celery + Redis&lt;/td&gt;
&lt;td&gt;Image/PDF processing is CPU-heavy — must be async&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;MinIO (S3-compatible)&lt;/td&gt;
&lt;td&gt;Self-hosted object storage, no vendor lock-in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DB&lt;/td&gt;
&lt;td&gt;PostgreSQL + SQLAlchemy 2.0 async&lt;/td&gt;
&lt;td&gt;Battle-tested, full async support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployment&lt;/td&gt;
&lt;td&gt;Docker Compose + Nginx&lt;/td&gt;
&lt;td&gt;Single server, cost-efficient for MVP stage&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The Hardest Problems
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;CMYK color profiles.&lt;/strong&gt; Most online converters silently convert CMYK to RGB, destroying print-ready color information. Pillow can read CMYK, but saving to PNG/JPEG requires careful mode management. We preserve CMYK when converting between formats that support it (TIFF, PDF, JPEG), and only convert to RGB when the target format demands it. Getting this right took weeks of edge-case testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Large file streaming.&lt;/strong&gt; Users upload files up to 5GB. You cannot load a 5GB file into memory. The upload service streams chunks directly to MinIO via presigned URLs, and workers stream-process from there. Celery task chains handle preprocessing → main processing → postprocessing without keeping the full file in memory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HEIC/RAW conversion without codecs.&lt;/strong&gt; HEIC is Apple's format based on HEVC compression. RAW files are proprietary camera formats. Both require native libraries (libheif, libraw) that are painful to install and version. We compile specific versions into our Docker image and wrap them behind a clean Python interface so the application code never touches native bindings directly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PDF digital signatures.&lt;/strong&gt; A real PKCS#12 certificate-based digital signature is completely different from pasting a signature image onto a page. The signature must be cryptographically embedded in the PDF structure per ISO 32000. pyHanko handles the heavy lifting, but configuring certificate chains, timestamp authorities, and signature appearances (visible vs. invisible) was a deep rabbit hole.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10-language i18n without flash.&lt;/strong&gt; Vue i18n loads asynchronously. If you mount the app before the locale bundle arrives, users briefly see Chinese (the fallback) before switching to their language. The fix: resolve locale synchronously from the URL path before creating the i18n instance, preload the target locale, and only mount afterwards. Prerendered pages (830 routes × 10 languages) made this extra tricky — every page shares the same &lt;code&gt;localhost&lt;/code&gt; origin during prerender, so localStorage and cookies cross-contaminate locale detection.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Prerendering is both a blessing and a curse.&lt;/strong&gt; Vite + vite-plugin-prerender generates static HTML for every route, giving near-instant TTFB (1ms from nginx). But it introduces problems you do not have in a pure SPA: locale detection cannot rely on cookies, flash-of-unstyled-content requires inline critical CSS, and a single prerender failure silently produces empty HTML without failing the build.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User trust matters more than features.&lt;/strong&gt; The most common question I get is "what happens to my files?" A clear privacy policy, a visible "files auto-deleted" notice, and TLS 1.3 everywhere matter more to users than having one more format option.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Online processing is genuinely useful infrastructure.&lt;/strong&gt; Most people cannot install desktop software on their work computer, and even fewer have the right codecs and tools. A reliable online tool that just works — with generous free limits and no dark patterns — actually helps people get work done.&lt;/p&gt;




&lt;p&gt;Try it: &lt;a href="https://www.iamuu.com" rel="noopener noreferrer"&gt;https://www.iamuu.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://github.com/beenkevin25/xyzenith-xyz" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; (README only — the platform is not open source)&lt;/p&gt;

&lt;p&gt;Happy to answer questions about the stack, the file processing pipeline, or running a production online tool platform.&lt;/p&gt;

</description>
      <category>vue</category>
      <category>fastapi</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
