<?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: zhouhua xiao</title>
    <description>The latest articles on DEV Community by zhouhua xiao (@zhouhua_xiao_3dca968c47d6).</description>
    <link>https://dev.to/zhouhua_xiao_3dca968c47d6</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%2F4113001%2Fc11da099-9cae-4bf5-b0bb-f89451931181.png</url>
      <title>DEV Community: zhouhua xiao</title>
      <link>https://dev.to/zhouhua_xiao_3dca968c47d6</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zhouhua_xiao_3dca968c47d6"/>
    <language>en</language>
    <item>
      <title>Before You Rewrite the Prompt, Check the Photo</title>
      <dc:creator>zhouhua xiao</dc:creator>
      <pubDate>Tue, 08 Sep 2026 12:07:04 +0000</pubDate>
      <link>https://dev.to/zhouhua_xiao_3dca968c47d6/before-you-rewrite-the-prompt-check-the-photo-427k</link>
      <guid>https://dev.to/zhouhua_xiao_3dca968c47d6/before-you-rewrite-the-prompt-check-the-photo-427k</guid>
      <description>&lt;p&gt;Picture this: you want AI to give your bathroom a new look. Your prompt reads like a dissertation, but the result seems to come from a parallel universe.&lt;br&gt;
Before adding an eighteenth “premium, elegant, realistic,” look at the input photo. Towels hide the vanity, only a corner of the floor is visible, and the mirror is trying to reflect the entire world.&lt;br&gt;
It’s a little like filing a bug report that says “it’s broken.” Even a capable assistant needs enough context to work with.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fufrcsbmx0zbjomqbf7b9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fufrcsbmx0zbjomqbf7b9.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
AI-generated conceptual illustration of an input problem.&lt;br&gt;
Give the model a photo that explains the room&lt;br&gt;
&lt;a href="https://aibathroomdesigns.com/" rel="noopener noreferrer"&gt;AI Bathroom Designs&lt;/a&gt; uses bathroom photos to generate visual concepts in different styles, helping you compare tile, vanity finishes, and color palettes. With tools like this, the photo is part of the brief.&lt;br&gt;
Before taking it, try four small adjustments:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Show the space. Shoot from a suitable position, such as the doorway, and try to include the floor, vanity, shower, and wall boundaries.&lt;/li&gt;
&lt;li&gt;Make the light useful. Avoid a bright window turning the rest of the room into a silhouette. Keep the main areas visible.&lt;/li&gt;
&lt;li&gt;Reduce obstructions. Move towels and clutter that cover fixtures. Check the mirror for people or personal items, too.&lt;/li&gt;
&lt;li&gt;Watch the perspective. Keep the camera reasonably level and avoid obvious distortion just to fit everything into the shot.
You don’t need a real-estate advertisement. You need a picture that helps someone understand the room.
Treat redesigning as a small experiment
Once you have a suitable photo, keep it fixed and ask one clear design question at a time. For example: “Do I prefer warm walls or cooler tones?”
Focus on color in that round and materials in the next. Generated concepts may still alter several details, so keep the original alongside each result and check whether the changes match your intention.
If you change the camera angle, style, floor, and lighting all at once, it becomes hard to explain which change you actually liked. It’s like adjusting ten variables while debugging: you have an outcome, but you’ve lost the explanation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2c7sc1uwwkkvrplqle50.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2c7sc1uwwkkvrplqle50.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
AI-generated conceptual illustration of a photo-taking approach.&lt;br&gt;
A small UX idea for AI product developers&lt;br&gt;
A specific sentence beside the upload field may be worth testing before you write a long prompting tutorial.&lt;br&gt;
Consider a clear preview, a reminder to include major fixtures and the floor, and a way to state what should change and what should stay. These are interaction ideas to evaluate, not claims that the website implements every suggestion.&lt;br&gt;
A successful upload tells you the transfer worked. Whether the input provides enough information is a separate question.&lt;br&gt;
Next time, start with another photo&lt;br&gt;
For a practical starting point, read the &lt;a href="https://aibathroomdesigns.com/guides/how-to-photograph-a-bathroom" rel="noopener noreferrer"&gt;bathroom photography guide&lt;/a&gt;, then use your own photo to compare design directions.&lt;br&gt;
A clearer photo still doesn’t guarantee accurate dimensions or a perfectly preserved layout. It gives the process a clearer input; the output still needs checking.&lt;br&gt;
If you build image-based AI features, what one reminder would you put beside the upload button?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>ux</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Your Tool Collection Is Growing. Your Project Folder Is Still Empty</title>
      <dc:creator>zhouhua xiao</dc:creator>
      <pubDate>Tue, 08 Sep 2026 04:43:30 +0000</pubDate>
      <link>https://dev.to/zhouhua_xiao_3dca968c47d6/your-tool-collection-is-growing-your-project-folder-is-still-empty-4g0n</link>
      <guid>https://dev.to/zhouhua_xiao_3dca968c47d6/your-tool-collection-is-growing-your-project-folder-is-still-empty-4g0n</guid>
      <description>&lt;p&gt;Picture this: you need one handy AI tool to save some time on your weekend project.&lt;br&gt;
Soon, your browser is throwing a party. One tool promises to write your code. Another will build your website. A third sounds ready to take your job on Monday. Your coffee is cold, your bookmarks are full, and your project folder is still empty.&lt;br&gt;
When did choosing tools become another job?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frat0jz1gtxavcyzy8p21.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frat0jz1gtxavcyzy8p21.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
Start with the job you need done&lt;br&gt;
You don’t need a dragon-slaying sword to chop an onion. Software shopping works the same way.&lt;br&gt;
Are you fixing an error, sorting through a few documents, or building a landing page that actually opens? A specific task makes it easier to separate useful features from landing-page confetti.&lt;br&gt;
&lt;a href="https://makerjury.com/" rel="noopener noreferrer"&gt;MakerJury&lt;/a&gt; is a software and AI tool discovery site with evidence-led reviews. It brings together product information, test procedures, and limitations so you can judge whether a tool fits your work.&lt;br&gt;
It also distinguishes listings from tested products: being listed doesn’t mean a tool has been reviewed, and scores appear only after a documented test.&lt;br&gt;
Give your shortlist a tiny audition&lt;br&gt;
You don’t have to start with “build me a billion-dollar company.” Ask three smaller questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What can it finish? Give it a concrete task, such as fixing a reproducible bug.&lt;/li&gt;
&lt;li&gt;How can I check the result? Does the code run? Can I find the cited source? Does the exported file open?&lt;/li&gt;
&lt;li&gt;How much cleanup is left for me? What needs manual editing? Is there a paywall? Does it disrupt my existing workflow?
The demo gets you excited. The audition tells you whether you can work together.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgxmhq8anyf5fstvit125.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgxmhq8anyf5fstvit125.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
Read the test, not just the score&lt;br&gt;
For example, &lt;a href="https://makerjury.com/reviews/cursor-three-task-coding-agent-review" rel="noopener noreferrer"&gt;MakerJury’s&lt;/a&gt; three-task Cursor review separates bug fixing, feature work, and refactoring. It identifies the small public codebase used for testing and explains why those results cannot establish performance on production projects.&lt;br&gt;
That gives you more to work with than “Amazing. Must buy.” You can ask: does this resemble my problem, and what do I still need to verify?&lt;br&gt;
Give yourself a stopping rule, too. If the tool completes the task, the result is checkable, and the cost works for you, start using it. Don’t hand your entire weekend to a comparison spreadsheet while searching for the perfect option.&lt;br&gt;
Before your next software shopping spree, browse &lt;a href="https://makerjury.com/reviews" rel="noopener noreferrer"&gt;MakerJury’s reviews&lt;/a&gt;, then try a candidate on your own task.&lt;br&gt;
Your bookmark collection can keep growing. Your project deserves a turn.&lt;br&gt;
What’s one tool you bookmarked thinking “I’ll use this immediately” and then never opened again?&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Remove GPS Metadata from Photos and Verify the Result</title>
      <dc:creator>zhouhua xiao</dc:creator>
      <pubDate>Tue, 08 Sep 2026 03:24:59 +0000</pubDate>
      <link>https://dev.to/zhouhua_xiao_3dca968c47d6/how-to-remove-gps-metadata-from-photos-and-verify-the-result-eke</link>
      <guid>https://dev.to/zhouhua_xiao_3dca968c47d6/how-to-remove-gps-metadata-from-photos-and-verify-the-result-eke</guid>
      <description>&lt;p&gt;A photo can reveal more than what appears in the frame.&lt;br&gt;
Depending on the device, camera settings, and export process, the file may contain GPS coordinates, a capture timestamp, camera details, or editing information. None of those fields need to be visible when you open the image.&lt;br&gt;
Before publishing a photo in a blog post, attaching it to a public issue, or adding it to a marketplace listing, it is worth checking the actual file you are about to share.&lt;br&gt;
Disclosure: I run &lt;a href="https://metadataremover.ai/" rel="noopener noreferrer"&gt;MetadataRemover.ai&lt;/a&gt;. This article explains the workflow and includes an independent way to inspect the result.&lt;br&gt;
What should you check?&lt;br&gt;
GPS coordinates are commonly stored inside EXIF metadata, alongside fields such as camera make, model, and capture time.&lt;br&gt;
However, EXIF is only one part of the picture. Depending on the format and the applications that touched the file, other information may appear in XMP, IPTC, or image text chunks.&lt;br&gt;
Useful fields to review include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPS coordinates and altitude.&lt;/li&gt;
&lt;li&gt;Original capture date and time.&lt;/li&gt;
&lt;li&gt;Camera model and device identifiers, where present.&lt;/li&gt;
&lt;li&gt;Author, description, and editing-software fields.
Not every image contains these fields. Inspect the file instead of assuming they are present—or already gone.
A browser workflow: inspect, remove, verify
For a local browser workflow, you can use the &lt;a href="https://metadataremover.ai/exif-remover" rel="noopener noreferrer"&gt;EXIF remover&lt;/a&gt;.
The current image tool supports JPG, PNG, and WebP files up to 25 MB each. Inspection, cleaning, and output verification happen locally in the browser; the image file does not need to be uploaded to the service.
The steps are:&lt;/li&gt;
&lt;li&gt;Keep an untouched original for your own archive.&lt;/li&gt;
&lt;li&gt;Select the final exported image you intend to share.&lt;/li&gt;
&lt;li&gt;Review the detected metadata groups.&lt;/li&gt;
&lt;li&gt;Choose Privacy Safe, or use Custom to select supported groups for removal.&lt;/li&gt;
&lt;li&gt;Download the cleaned copy and inspect it before publishing.
Check the final export, not just the original photo. An editor or conversion step can preserve existing metadata or add new fields.
Also, make sure you share the downloaded copy rather than accidentally selecting the original again.
Verify the downloaded file with ExifTool
The tool checks its generated output, but a second metadata reader provides an additional check.
If you have &lt;a href="https://exiftool.org/" rel="noopener noreferrer"&gt;ExifTool&lt;/a&gt; installed, run these read-only commands with your own filenames:
exiftool -a -G1 -s original.jpg
exiftool -a -G1 -s cleaned.jpg
The options show duplicate tags, include group names, and use short tag names, making the output easier to compare.
Review the fields you intended to remove. Pay attention to GPS entries and any relevant EXIF, XMP, or IPTC fields.
Do not expect the cleaned file to produce empty output. ExifTool can still report file-system information, image dimensions, compression details, and other properties. A file modification timestamp is different from an embedded original capture timestamp.
The useful question is whether the targeted embedded fields remain within the reader’s supported coverage.
Open the image as well. Metadata inspection does not tell you whether its appearance still meets your needs.
Two details developers should watch
EXIF Orientation affects how an image displays. Some photos store pixels in one orientation and rely on an EXIF value to display them correctly. Removing that value without handling the pixel orientation can produce a sideways image.
Normalizing the orientation may require re-encoding, so “remove metadata” should not automatically be described as “always lossless.”
ICC profiles affect color rendering. They have a different purpose from GPS coordinates or author fields. Preserving a color profile does not mean privacy cleanup failed.
These are reasons to use a deliberate cleanup policy and check rotation, color, and dimensions afterward.
Know the limits
Metadata removal does not hide an address visible on a package, a reflection, or a recognizable landmark. It also does not remove pixel-level invisible watermarks or erase copies previously uploaded elsewhere.
Some platforms strip metadata during processing, but behavior can differ between upload methods and downloaded versions. Checking before upload gives you control over the file that leaves your device.
For an image-sharing workflow, a useful sequence is:
Export → inspect → remove selected metadata → verify → publish.
If you work on an upload or publishing pipeline, where do you handle metadata checks: in the browser, on the server, or both?&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>privacy</category>
      <category>security</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
