<?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>Forem: Serac</title>
    <description>The latest articles on Forem by Serac (@serac).</description>
    <link>https://forem.com/serac</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%2F3730586%2Fdcf6b4ac-e920-46ff-b359-2b39c69759d0.jpg</url>
      <title>Forem: Serac</title>
      <link>https://forem.com/serac</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/serac"/>
    <language>en</language>
    <item>
      <title>I Built a Free, Privacy-First Coordinate Converter That Runs Entirely in Your Browser</title>
      <dc:creator>Serac</dc:creator>
      <pubDate>Tue, 24 Mar 2026 12:47:55 +0000</pubDate>
      <link>https://forem.com/serac/i-built-a-free-privacy-first-coordinate-converter-that-runs-entirely-in-your-browser-3k1g</link>
      <guid>https://forem.com/serac/i-built-a-free-privacy-first-coordinate-converter-that-runs-entirely-in-your-browser-3k1g</guid>
      <description>&lt;p&gt;If you've ever worked with GPS data, GIS pipelines, or geospatial APIs, &lt;br&gt;
you know the pain: your data is in UTM, your map expects Decimal Degrees, &lt;br&gt;
your colleague sends you MGRS, and your database stores Geohash.&lt;/p&gt;

&lt;p&gt;Switching between coordinate formats is a small but constant friction &lt;br&gt;
point for developers, surveyors, drone operators, and anyone doing field &lt;br&gt;
work. Most online tools require sign-ups, ship your data to a server, &lt;br&gt;
or support only 2–3 formats.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;&lt;a href="https://coordconv.com" rel="noopener noreferrer"&gt;CoordConv&lt;/a&gt;&lt;/strong&gt; — a fast, &lt;br&gt;
browser-based coordinate converter that handles 7 formats in one place.&lt;/p&gt;




&lt;h2&gt;
  
  
  What It Supports
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Format&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;th&gt;Common Use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;DD&lt;/strong&gt; Decimal Degrees&lt;/td&gt;
&lt;td&gt;&lt;code&gt;40.7128, -74.0060&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Google Maps, GPS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;DMS&lt;/strong&gt; Degrees Minutes Seconds&lt;/td&gt;
&lt;td&gt;&lt;code&gt;40°42'46"N 74°00'21"W&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Aviation, nautical&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;DDM&lt;/strong&gt; Degrees Decimal Minutes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;40°42.767'N&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Marine, geocaching&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;UTM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;18T 583960 4507523&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Surveying, topo maps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MGRS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;18TWL8395907523&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Military, SAR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Plus Code&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;87G7PX7V+4H&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Delivery, field ops&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Geohash&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dr5regw3pg&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Spatial indexing, dev tools&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;⚡ &lt;strong&gt;Instant conversion&lt;/strong&gt; — paste any format, get all 7 outputs at once&lt;/li&gt;
&lt;li&gt;🗺️ &lt;strong&gt;Interactive map preview&lt;/strong&gt; — verify your location visually before copying&lt;/li&gt;
&lt;li&gt;📋 &lt;strong&gt;One-click copy&lt;/strong&gt; for every output format&lt;/li&gt;
&lt;li&gt;📦 &lt;strong&gt;Batch Converter&lt;/strong&gt; — handles CSV files or pasted tables with hundreds of rows&lt;/li&gt;
&lt;li&gt;🔄 &lt;strong&gt;Lat/Lon and Lon/Lat&lt;/strong&gt; order toggle (because GeoJSON vs GPS is a real gotcha)&lt;/li&gt;
&lt;li&gt;🎯 &lt;strong&gt;6 decimal place precision&lt;/strong&gt; (~±0.11 meters accuracy)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;👉 &lt;a href="https://coordconv.com" rel="noopener noreferrer"&gt;coordconv.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Specific tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://coordconv.com/utm-to-lat-long/" rel="noopener noreferrer"&gt;UTM ↔ Lat/Long&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordconv.com/dms-to-decimal-degrees/" rel="noopener noreferrer"&gt;DMS ↔ Decimal Degrees&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordconv.com/batch-coordinate-converter/" rel="noopener noreferrer"&gt;Batch Converter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Happy to answer questions about how the projection math works under the &lt;br&gt;
hood, or how to handle the WGS84 vs NAD83 vs GCJ-02 datum differences &lt;br&gt;
in your own projects. Drop them in the comments! 🗺️&lt;/p&gt;

</description>
      <category>gis</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>map</category>
    </item>
    <item>
      <title>I built a satellite city guessing game using Next.js &amp; MapLibre</title>
      <dc:creator>Serac</dc:creator>
      <pubDate>Sat, 24 Jan 2026 18:53:09 +0000</pubDate>
      <link>https://forem.com/serac/i-built-a-satellite-city-guessing-game-using-nextjs-maplibre-116j</link>
      <guid>https://forem.com/serac/i-built-a-satellite-city-guessing-game-using-nextjs-maplibre-116j</guid>
      <description>&lt;p&gt;Hey developers! 👋&lt;/p&gt;

&lt;p&gt;I've always been a fan of geography games, but I wanted to build something different: a game that tests your &lt;strong&gt;"vertical" intuition&lt;/strong&gt;—recognizing cities from high-resolution satellite imagery rather than the typical street view.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;&lt;a href="https://satpixel.com" rel="noopener noreferrer"&gt;SatPixel&lt;/a&gt;&lt;/strong&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2Fakzf4t8o3e2ez40u4cki.jpg" 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.amazonaws.com%2Fuploads%2Farticles%2Fakzf4t8o3e2ez40u4cki.jpg" alt=" " width="800" height="433"&gt;&lt;/a&gt;&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.amazonaws.com%2Fuploads%2Farticles%2F436cq1b6vvwkz0q3a2ru.jpg" 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.amazonaws.com%2Fuploads%2Farticles%2F436cq1b6vvwkz0q3a2ru.jpg" alt=" " width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Tech Stack 🛠️
&lt;/h3&gt;

&lt;p&gt;Since this is a side project, I wanted a stack that was fast, free to host, and easy to scale:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework:&lt;/strong&gt; &lt;a href="https://nextjs.org/" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; (App Router)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment:&lt;/strong&gt; Vercel&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maps Engine:&lt;/strong&gt; &lt;a href="https://maplibre.org/" rel="noopener noreferrer"&gt;MapLibre GL JS&lt;/a&gt; (Open source alternative to Mapbox)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Imagery:&lt;/strong&gt; Primarily &lt;strong&gt;ESRI World Imagery&lt;/strong&gt; for high-res clarity.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;I'd love to get some feedback from the dev community on the UI and game difficulty.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Play it here:&lt;/strong&gt; &lt;a href="https://satpixel.com" rel="noopener noreferrer"&gt;https://satpixel.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me know what you think!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>gamedev</category>
      <category>nextjs</category>
      <category>map</category>
    </item>
  </channel>
</rss>
