<?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: Jun</title>
    <description>The latest articles on DEV Community by Jun (@jundata).</description>
    <link>https://dev.to/jundata</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%2F3580352%2F1c43b7b8-4408-43a9-9f84-d2cf5ad26731.jpg</url>
      <title>DEV Community: Jun</title>
      <link>https://dev.to/jundata</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jundata"/>
    <language>en</language>
    <item>
      <title>What I Learned Launching a Modern Photo Sharing Site</title>
      <dc:creator>Jun</dc:creator>
      <pubDate>Fri, 14 Nov 2025 08:26:08 +0000</pubDate>
      <link>https://dev.to/jundata/lessons-learned-from-deploying-a-federated-photo-sharing-service-2kh0</link>
      <guid>https://dev.to/jundata/lessons-learned-from-deploying-a-federated-photo-sharing-service-2kh0</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Recently, I set out to create a privacy-focused social platform that connects with other similar sites. My goal was to build a space that is easy to use, secure, and runs smoothly—while supporting open source values and learning from the wider community.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Deployment Journey
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Planning and Preparation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Listed what the project needed, with a focus on protecting user privacy, making sure it could grow, and keeping it reliable.&lt;/li&gt;
&lt;li&gt;Looked up best ways to set up this kind of platform, especially how to keep user information safe and avoid sharing unnecessary details about how the site runs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Implementation Highlights
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Used automation tools to make setting up and maintaining the site easier.&lt;/li&gt;
&lt;li&gt;Put several layers of security in place, like encrypted connections and limiting who can access certain parts of the platform.&lt;/li&gt;
&lt;li&gt;Took extra steps to avoid sharing technical details about the site publicly, to help protect it from unwanted attention.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Overcoming Challenges
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Worked through common issues with connecting to other similar platforms by asking questions in the community and reading official guides.&lt;/li&gt;
&lt;li&gt;Fixed unexpected problems by testing changes and listening to user feedback.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Ongoing Refinements and Federation Nuances
&lt;/h3&gt;

&lt;p&gt;While the platform is up and running, I’ve noticed a few small issues when trying to connect with users on other sites. Sometimes, following users on other platforms—or having them follow me—doesn’t work right away. After checking settings on both sides, I found that some networks limit new websites for the first month or so to prevent spam. As my site becomes more established, I expect these connections to improve.&lt;/p&gt;

&lt;p&gt;These kinds of issues are normal when working with platforms that are designed to connect with many different sites.&lt;/p&gt;

&lt;h2&gt;
  
  
  Going Live and Measuring Success
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;After launching, I kept an eye on how the site was working and how people were using it, making small improvements based on what I saw.&lt;/li&gt;
&lt;li&gt;The platform is now stable and responsive, with positive feedback from early users.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Reflections
&lt;/h2&gt;

&lt;p&gt;This project taught me the value of careful planning, ongoing learning, and working with others. By focusing on privacy and security from the start, I was able to build a strong platform that users can trust.&lt;/p&gt;

</description>
      <category>sideprojects</category>
      <category>devjournal</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>Server Ops Report #1</title>
      <dc:creator>Jun</dc:creator>
      <pubDate>Sat, 25 Oct 2025 14:09:02 +0000</pubDate>
      <link>https://dev.to/jundata/mastodon-ops-report-3egf</link>
      <guid>https://dev.to/jundata/mastodon-ops-report-3egf</guid>
      <description>&lt;p&gt;&lt;em&gt;Purpose: Capture the architecture, basic operation, and recent statistics of my self‑hosted Mastodon setup.&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Overview
&lt;/h3&gt;

&lt;p&gt;I run a private Mastodon instance on a cloud based VM (2 CPU cores, 4 GB RAM). In attempt to assure that the service stays reliable, I’ve recently started collecting statistics for the first time.&lt;/p&gt;




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

&lt;p&gt;I'm collecting CPU, disk, memory and network data. The server has crashed a couple times on the initial launch. My thought process is that documenting will provide solid data that I can share with anyone interested in the project. As well as providing an idea whether or not to upgrade or downgrade to stay cost efficient.&lt;/p&gt;




&lt;h3&gt;
  
  
  Current Performance Snapshot of a 24hr window
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CPU&lt;/strong&gt; is at approx. 12% average, peaked once going over 100% (&lt;em&gt;full core saturation for a short burst&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disk I/O&lt;/strong&gt; is at approx. 20 blocks/s average, peak approx. 320 blocks/s.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swap&lt;/strong&gt; is near zero (&lt;em&gt;not noteworthy to annotate&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IPv4 traffic&lt;/strong&gt; is at approx. 40 Mb/s IN average, approx. 66 KB/s OUT average; peak approx. 2.7Mb/s IN, approx. 2 KB/s OUT.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IPv6 traffic&lt;/strong&gt; is at approx. 70 KB/s IN average, approx. 2KB/s OUT average; peak approx. 5.5 Mb/s IN, approx. 170 KB/s OUT.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  What the numbers tell us
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The instance is performing well overall. The average CPU and disk usage are low and swap is unused.&lt;/li&gt;
&lt;li&gt;The brief CPU spike above 100% indicates a short period of high background activity. Peak only lasted a few seconds and mitigated on its own. The extra headroom that I previously implemented after the last crash possibly helped avoid another accidental shutdown of the service.&lt;/li&gt;
&lt;li&gt;Disk activity remains decent. This suggests media uploads and background jobs are not stressing the storage.&lt;/li&gt;
&lt;li&gt;Inbound traffic is slowly increasing, especially on IPv6. Outbound traffic stayed low, as expected. It's a frontend service that primarily serves content rather than streams large amounts of data.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Why it matters
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Reliability:&lt;/strong&gt; The server never ran out of memory or CPU, so the user experience should have been zero to minimal lag. At least, no users have reported issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scalability:&lt;/strong&gt; Traffic is increasing, especially on IPv6. This shows that the service can attract new users without a major redesign.&lt;/p&gt;




&lt;h3&gt;
  
  
  Takeaway
&lt;/h3&gt;

&lt;p&gt;The Mastodon server is operating well with the current build. Lessons learned from issues from my initial launch. The CPU peak is an anomaly that fixed itself. It did not impact the user experience.&lt;/p&gt;




&lt;h3&gt;
  
  
  What I did next
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Added an alert:&lt;/strong&gt; A simple setting now alerts me if CPU stays &amp;gt; 90% for more than an hour.&lt;/p&gt;




&lt;p&gt;I’m hoping that documenting this data set will sharpen my documentation skills for future projects. If you have suggestions on additional metrics to track or ways to strengthen this writeup, please let me know.&lt;/p&gt;

</description>
      <category>sideprojects</category>
      <category>devjournal</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>DNS Block‑Rate Report #1</title>
      <dc:creator>Jun</dc:creator>
      <pubDate>Fri, 24 Oct 2025 12:36:34 +0000</pubDate>
      <link>https://dev.to/jundata/dns-block-rate-report-594g</link>
      <guid>https://dev.to/jundata/dns-block-rate-report-594g</guid>
      <description>&lt;p&gt;&lt;em&gt;Purpose: Capture the architecture, basic operation, and recent statistics of my self‑hosted DNS filtering setup.&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Overview
&lt;/h3&gt;

&lt;p&gt;I’ve been running my own DNS &lt;strong&gt;resolver&lt;/strong&gt; for the past ≈ 2 years. It’s a hobby‑grade service deployed on servers in several regions, heavily customized to stay reliable on diverse networks and ISP environments. Whenever the resolver is rolled out to a new region, I manually update the blocklist with region‑specific ads and trackers. I’ve recently started collecting statistics for the first time.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why I’m measuring
&lt;/h3&gt;

&lt;p&gt;Capturing query volumes and block rates gives me confidence that the filter is doing its job, helps spot regressions quickly, and provides concrete data I can share with anyone interested in the project.&lt;/p&gt;




&lt;h3&gt;
  
  
  What the resolver does
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Receives DNS queries&lt;/strong&gt; from my devices (and a few trusted friends’ devices).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Looks up&lt;/strong&gt; the requested domain, then applies a locally maintained blocklist that filters out ads, trackers, and known malicious sites.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Returns&lt;/strong&gt; the safe IP address (or a “blocked” response) back to the requester.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Current Performance Snapshot
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Initial run (≈ 1 day)&lt;/strong&gt; – 3,750 queries, &lt;strong&gt;14.3 %&lt;/strong&gt; blocked.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extended run (≈ 12 days)&lt;/strong&gt; – 36,708 queries, &lt;strong&gt;23.98 %&lt;/strong&gt; blocked.
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;The first measurement was based on only a single day of traffic, so the blocked‑query rate appeared lower. The larger data set from the extended run gives a more realistic picture of everyday usage.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Total DNS look‑ups handled:&lt;/strong&gt; &lt;strong&gt;40,458&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Queries blocked by the custom blocklist:&lt;/strong&gt; &lt;strong&gt;9,342&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blocked‑query rate:&lt;/strong&gt; &lt;strong&gt;≈ 23 %&lt;/strong&gt; (about &lt;strong&gt;1 in 4&lt;/strong&gt; look‑ups is stopped)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  What the numbers tell us
&lt;/h3&gt;

&lt;p&gt;The blocked‑query rate is higher now than the very first single‑day test (which showed only 14 % blocked). The increase is &lt;strong&gt;not&lt;/strong&gt; due to a sudden surge in malicious traffic; it simply reflects a larger, more representative data set spanning multiple regions and a longer observation window.&lt;/p&gt;




&lt;h3&gt;
  
  
  Take‑away for anyone reading this
&lt;/h3&gt;

&lt;p&gt;My personal DNS service is actively filtering a significant portion of unwanted traffic while remaining fast and reliable across multiple locations. The recent numbers reflect a more accurate measurement thanks to the expanded data collection, not a change in threat level.&lt;/p&gt;

&lt;p&gt;I’ll be extending the service to another region soon. New ads, trackers, and malicious sites appear daily, so I’ll keep the blocklist up‑to‑date.&lt;/p&gt;

&lt;p&gt;I’m hoping that documenting this data set will sharpen my documentation skills for future projects. If you have suggestions on additional metrics to track or ways to strengthen this write‑up, please let me know.&lt;/p&gt;




&lt;h3&gt;
  
  
  Weekly performance tracking (planned)
&lt;/h3&gt;

&lt;p&gt;I intend to capture a brief performance snapshot &lt;strong&gt;once per week&lt;/strong&gt;. Each entry will include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Date range&lt;/strong&gt; (e.g., 2025‑10‑01 → 2025‑10‑07)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Total DNS queries&lt;/strong&gt; processed during the week
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blocked queries&lt;/strong&gt; and the resulting &lt;strong&gt;blocked‑query rate&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Any notable &lt;strong&gt;anomalies&lt;/strong&gt; (spikes, new blocklist additions, configuration changes)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These weekly notes will be appended to this document, creating a chronological log that can be reviewed for trends, regression detection, and capacity planning.&lt;/p&gt;

&lt;h4&gt;
  
  
  Example entry (Week 1 – 2025‑10‑01 → 2025‑10‑07)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Total DNS queries: 12 340
&lt;/li&gt;
&lt;li&gt;Blocked queries: 2 950
&lt;/li&gt;
&lt;li&gt;Blocked‑query rate: &lt;strong&gt;23.9 %&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Observation: Added a new blocklist entry for &lt;code&gt;tracker.example.com&lt;/code&gt;; no adverse effects observed.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>sideprojects</category>
      <category>devjournal</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>Jeju Island Pokémon GO Stamp Rally Map Pinning</title>
      <dc:creator>Jun</dc:creator>
      <pubDate>Fri, 24 Oct 2025 02:37:39 +0000</pubDate>
      <link>https://dev.to/jundata/jeju-island-pokemon-go-stamp-rally-map-pinning-3nkm</link>
      <guid>https://dev.to/jundata/jeju-island-pokemon-go-stamp-rally-map-pinning-3nkm</guid>
      <description>&lt;p&gt;A Brief Guide for Non-Korean Users&lt;/p&gt;

&lt;p&gt;Jeju's official &lt;strong&gt;Pokémon GO Stamp Rally&lt;/strong&gt; (which will end Oct 26, 2025) is featured on the Korean page &lt;em&gt;Pokémon GO – Jeju Stamp Rally.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pokemongo.com/ko/post/ko-jeju-stamp-rally-event" rel="noopener noreferrer"&gt;https://pokemongo.com/ko/post/ko-jeju-stamp-rally-event&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As an international player, I struggled to locate the eight rally spots using the native map app. I turned to &lt;strong&gt;OsmAnd&lt;/strong&gt;, an open-source mapping solution, entered the coordinates manually, and saved a pin for each location. I’m sharing these pins so anyone who prefers open-source maps can follow the rally without needing translations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rally Locations&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;제주국제공항 (Jeju Int. Airport)
&lt;a href="https://osmand.net/map?pin=33.50920,126.49282#13/33.50920/126.49282" rel="noopener noreferrer"&gt;https://osmand.net/map?pin=33.50920,126.49282#13/33.50920/126.49282&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;중문대포주상절리대 (Daepo Jusangjeolli Cliff)
&lt;a href="https://osmand.net/map?pin=33.23718,126.42420#16/33.23718/126.42420" rel="noopener noreferrer"&gt;https://osmand.net/map?pin=33.23718,126.42420#16/33.23718/126.42420&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;중문색달해수욕장 (Jungmun Saekdal Beach)
&lt;a href="https://osmand.net/map?pin=33.24509,126.41306#14/33.24509/126.41306" rel="noopener noreferrer"&gt;https://osmand.net/map?pin=33.24509,126.41306#14/33.24509/126.41306&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;여미지식물원 (Yeomiji Botanical Garden)
&lt;a href="https://osmand.net/map?pin=33.25259,126.41397#16/33.25259/126.41397" rel="noopener noreferrer"&gt;https://osmand.net/map?pin=33.25259,126.41397#16/33.25259/126.41397&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;베릿내공원 (Beritnae Park)
&lt;a href="https://osmand.net/map?pin=33.24559,126.41831#18/33.24559/126.41831" rel="noopener noreferrer"&gt;https://osmand.net/map?pin=33.24559,126.41831#18/33.24559/126.41831&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;중문면세점 (Jungmun Duty‑Free Shop)
&lt;a href="https://osmand.net/map?pin=33.24139,126.42439#17/33.24139/126.42439" rel="noopener noreferrer"&gt;https://osmand.net/map?pin=33.24139,126.42439#17/33.24139/126.42439&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;천제연폭포 (Cheonjeyeon Waterfall)
&lt;a href="https://osmand.net/map?pin=33.25293,126.41758#16/33.25293/126.41758" rel="noopener noreferrer"&gt;https://osmand.net/map?pin=33.25293,126.41758#16/33.25293/126.41758&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;9.81파크 제주 (9.81 Park)
&lt;a href="https://osmand.net/map?pin=33.38992,126.36485#12/33.38992/126.36485" rel="noopener noreferrer"&gt;https://osmand.net/map?pin=33.38992,126.36485#12/33.38992/126.36485&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;© OSM contributors, CC‑BY‑SA 2.0&lt;/p&gt;

&lt;p&gt;The Stamp Rally guides you through some of Jeju’s most scenic spots. Even if you fly to the island after the event is over, each location is worth a visit on any Jeju vacation. Especially Daepo Jusangjeolli’s cliffs, the Cheonjeyeon waterfall, and 9.81 Park. Grab the OsmAnd pins, explore at your own pace, and enjoy the island’s natural beauty. Happy travels!&lt;/p&gt;

</description>
      <category>walkthroughs</category>
      <category>openworld</category>
      <category>mobilegaming</category>
      <category>nintendo</category>
    </item>
    <item>
      <title>Hello World</title>
      <dc:creator>Jun</dc:creator>
      <pubDate>Thu, 23 Oct 2025 15:19:41 +0000</pubDate>
      <link>https://dev.to/jundata/hello-3boe</link>
      <guid>https://dev.to/jundata/hello-3boe</guid>
      <description>&lt;p&gt;Hi dev.to! I’m &lt;strong&gt;Jun&lt;/strong&gt;, the mind behind &lt;strong&gt;JunData&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In the evenings I monitor the health of my self‑hosted social‑media node and the query trends from my DNS‑privacy service.&lt;/p&gt;

&lt;p&gt;When I’m not looking at graphs, I enjoy outdoor activities such as camping, hiking, and diving.&lt;/p&gt;

&lt;p&gt;I chose the name because I love &lt;em&gt;looking&lt;/em&gt; at raw numbers and want to build a habit of documenting.&lt;/p&gt;

&lt;p&gt;On this blog I’ll track a few high‑level metrics, explain what they mean, and (&lt;em&gt;hopefully&lt;/em&gt;) improve them over time:&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;Server‑resource snapshots&lt;/strong&gt; – CPU, memory and storage usage shown only as rounded percentages.&lt;br&gt;
• &lt;strong&gt;DNS‑query trend highlights&lt;/strong&gt; – which domain categories spike, typical daily peaks, and the privacy implications.&lt;/p&gt;

&lt;p&gt;If anything, that’s the plan. Just like data, plans always change. We just need to keep moving.&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>sideprojects</category>
      <category>devjournal</category>
      <category>monitoring</category>
    </item>
  </channel>
</rss>
