<?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: leo song</title>
    <description>The latest articles on DEV Community by leo song (@leosong).</description>
    <link>https://dev.to/leosong</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%2F4054879%2Fd14bde8b-bd5e-429d-846f-e462c4996122.png</url>
      <title>DEV Community: leo song</title>
      <link>https://dev.to/leosong</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leosong"/>
    <language>en</language>
    <item>
      <title>I Didn’t Realize How Much Data Could Be Hidden Inside an Image</title>
      <dc:creator>leo song</dc:creator>
      <pubDate>Tue, 04 Aug 2026 07:08:38 +0000</pubDate>
      <link>https://dev.to/leosong/i-didnt-realize-how-much-data-could-be-hidden-inside-an-image-gon</link>
      <guid>https://dev.to/leosong/i-didnt-realize-how-much-data-could-be-hidden-inside-an-image-gon</guid>
      <description>&lt;p&gt;I’ve been working on a browser-based metadata tool recently, and one thing surprised me: an image can contain much more information than what we see on the screen.&lt;/p&gt;

&lt;p&gt;Depending on the device and software, a photo may include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The camera or phone model&lt;/li&gt;
&lt;li&gt;The date and time it was taken&lt;/li&gt;
&lt;li&gt;GPS coordinates&lt;/li&gt;
&lt;li&gt;Editing software&lt;/li&gt;
&lt;li&gt;Copyright and author information&lt;/li&gt;
&lt;li&gt;AI generation parameters or workflow data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most of this information is harmless. But sometimes it can reveal more than the person sharing the image intended.&lt;/p&gt;

&lt;p&gt;The interesting technical challenge is that metadata is not stored in exactly the same way across JPEG, PNG, WebP, and other formats. Each format has its own structure, chunks, and edge cases.&lt;/p&gt;

&lt;p&gt;I’m currently exploring how much of this processing can be done directly in the browser, without uploading the file to a server.&lt;/p&gt;

&lt;p&gt;Browser-side processing has some clear advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The file stays on the user’s device&lt;/li&gt;
&lt;li&gt;There is no upload delay&lt;/li&gt;
&lt;li&gt;The server does not need to store private files&lt;/li&gt;
&lt;li&gt;The tool can remain lightweight&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are also challenges, especially with large files, uncommon formats, and preserving the original image quality.&lt;/p&gt;

&lt;p&gt;It has been a useful reminder that even seemingly simple tools can involve a lot of small technical and privacy decisions.&lt;/p&gt;

&lt;p&gt;I’ll share more of what I learn as I continue building.&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>webdev</category>
      <category>indiedev</category>
    </item>
    <item>
      <title>Why I Like Building Small Web Tools</title>
      <dc:creator>leo song</dc:creator>
      <pubDate>Thu, 30 Jul 2026 11:07:46 +0000</pubDate>
      <link>https://dev.to/leosong/why-i-like-building-small-web-tools-2b8o</link>
      <guid>https://dev.to/leosong/why-i-like-building-small-web-tools-2b8o</guid>
      <description>&lt;p&gt;Lately, I’ve been spending more time building small web tools.&lt;/p&gt;

&lt;p&gt;Nothing fancy. Usually just one simple problem, one page, and one useful result.&lt;/p&gt;

&lt;p&gt;What I like most is that I can build a rough version quickly and see whether the idea actually makes sense.&lt;/p&gt;

&lt;p&gt;The hard part is often not the code. It’s deciding what to remove.&lt;/p&gt;

&lt;p&gt;I’m trying to build smaller, simpler things instead of adding features too early.&lt;/p&gt;

&lt;p&gt;Do you prefer building small tools or larger projects?&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
  </channel>
</rss>
