<?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: 이해민</title>
    <description>The latest articles on DEV Community by 이해민 (@_6d01b2eaf1075c95aafb5).</description>
    <link>https://dev.to/_6d01b2eaf1075c95aafb5</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%2F4069307%2Fe2a4f6aa-191b-4014-9ba9-6f6b78298169.png</url>
      <title>DEV Community: 이해민</title>
      <link>https://dev.to/_6d01b2eaf1075c95aafb5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/_6d01b2eaf1075c95aafb5"/>
    <language>en</language>
    <item>
      <title>BreachLab: I Reproduce Real Crypto Hacks as Safe, Free Code</title>
      <dc:creator>이해민</dc:creator>
      <pubDate>Sat, 03 Oct 2026 17:52:27 +0000</pubDate>
      <link>https://dev.to/_6d01b2eaf1075c95aafb5/breachlab-i-reproduce-real-crypto-hacks-as-safe-free-code-i4b</link>
      <guid>https://dev.to/_6d01b2eaf1075c95aafb5/breachlab-i-reproduce-real-crypto-hacks-as-safe-free-code-i4b</guid>
      <description>&lt;h2&gt;
  
  
  Why
&lt;/h2&gt;

&lt;p&gt;The Bitget hack ($387.5M, 2026-09-24) wasn't a key leak — it was a supply-chain attack. Compromised third-party software led to stolen admin-backend credentials, which were used to push forged withdrawal commands: a small test withdrawal first, then multiple hot wallets drained in under 20 minutes.&lt;/p&gt;

&lt;p&gt;I wanted to understand the mechanism well enough to rebuild both the attack and the defense, so I did.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's in it
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Matching engine&lt;/strong&gt; — price-time priority order matching, the kind of thing that comes up in systems-design interviews at exchange-style companies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Withdrawal defense&lt;/strong&gt; — three independent layers modeled on what actually would have stopped Bitget:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Velocity check (flags request bursts in a short window)&lt;/li&gt;
&lt;li&gt;Multi-approval (large amounts can't clear on one admin's authority)&lt;/li&gt;
&lt;li&gt;Timelock (large withdrawals are delayed, not instant)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There's also a TWAP oracle demo reproducing the Tectonic hack (Cronos, 2026-08-30) — a ~100x price pump used to borrow against inflated collateral.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Everything runs in the browser against fake data — never a working exploit.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Live demo: &lt;a href="https://breachlab-5xg.pages.dev/en/" rel="noopener noreferrer"&gt;https://breachlab-5xg.pages.dev/en/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source: &lt;a href="https://github.com/goalsgo1/breachlab" rel="noopener noreferrer"&gt;https://github.com/goalsgo1/breachlab&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;A new incident gets added only if it passes three checks: the mechanism is explainable in 3 steps or fewer, it's safely reproducible with fake data, and it's being actively discussed. Not a product for real exchange operators — this is a learning resource and portfolio project.&lt;/p&gt;

&lt;p&gt;Feedback welcome.&lt;/p&gt;

</description>
      <category>showdev</category>
    </item>
    <item>
      <title>I built a tool that catches an active Steam rating decline before it snowballs (and tells you why)</title>
      <dc:creator>이해민</dc:creator>
      <pubDate>Sun, 09 Aug 2026 09:25:40 +0000</pubDate>
      <link>https://dev.to/_6d01b2eaf1075c95aafb5/i-built-a-tool-that-catches-an-active-steam-rating-decline-before-it-snowballs-and-tells-you-why-4mdp</link>
      <guid>https://dev.to/_6d01b2eaf1075c95aafb5/i-built-a-tool-that-catches-an-active-steam-rating-decline-before-it-snowballs-and-tells-you-why-4mdp</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Steam's "Overwhelmingly Positive" badge is an all-time average. It can stay green for weeks after a patch, a pricing change, or a broken launch actually tanks a game's rating. Most devs find out from an angry tweet or a Reddit thread, not from Steam itself.&lt;/p&gt;

&lt;p&gt;I'd already built a similar review-mining tool for the App Store (a "copy+10%" market-research Actor — different post, different audience). Same week, I wondered: does Steam expose anything as clean as Apple's public RSS/Lookup endpoints? Turns out yes — better, actually.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Steam gives you for free
&lt;/h2&gt;

&lt;p&gt;Two public, zero-auth endpoints:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;https://store.steampowered.com/appreviews/&amp;lt;appid&amp;gt;?json=1&amp;amp;filter=recent
https://store.steampowered.com/appreviewhistogram/&amp;lt;appid&amp;gt;?l=english
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first gives you individual reviews with &lt;code&gt;voted_up&lt;/code&gt; (boolean, no star-rating math needed), &lt;code&gt;playtime_at_review&lt;/code&gt;, &lt;code&gt;refunded&lt;/code&gt;, &lt;code&gt;written_during_early_access&lt;/code&gt; — much richer than I expected. The second gives you a rolling histogram of &lt;code&gt;recommendations_up&lt;/code&gt; / &lt;code&gt;recommendations_down&lt;/code&gt; per period (weekly for active games, monthly for older ones), which is the actual key to detecting a &lt;em&gt;real&lt;/em&gt; decline instead of noise.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bug that mattered
&lt;/h2&gt;

&lt;p&gt;I first tried Steam's documented &lt;code&gt;day_range&lt;/code&gt; parameter to window the &lt;code&gt;query_summary&lt;/code&gt; to "last N days." It doesn't do anything — I tested it against a game with 800K+ reviews spanning two years, &lt;code&gt;day_range=30&lt;/code&gt; and no &lt;code&gt;day_range&lt;/code&gt; at all returned byte-identical totals. Not documented as broken anywhere I could find, so noting it here in case it saves someone else the debugging time.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;appreviewhistogram&lt;/code&gt; endpoint is the actual fix: compare the most recent period's positive % against a baseline of prior periods, with a minimum-volume gate (I use 20 reviews/period) so a slow week on a small indie title doesn't get mistaken for a crisis.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real result
&lt;/h2&gt;

&lt;p&gt;Ran it against a game that had a rough launch week. Flagged an active decline immediately, and the negative-review sample broke down as 43% bugs/performance + 18% server issues — i.e., a genuine stability problem, not a subjective "the game isn't fun" wave. That distinction is the whole point: a balance-patch complaint is a design conversation, a wave of bug reports is a fire to put out today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;It's a pay-per-run Actor on Apify: &lt;a href="https://apify.com/muddy_snowshoe/steam-review-miner" rel="noopener noreferrer"&gt;https://apify.com/muddy_snowshoe/steam-review-miner&lt;/a&gt; (~$0.03/game analyzed). Point it at your own App ID to get an early-warning system, or a competitor's for market research.&lt;/p&gt;

&lt;p&gt;Genuinely interested in feedback from anyone who's lived through a real Steam rating crisis — does the "active decline" threshold match what you actually experienced, especially around timing (how many days after the triggering event did it become visible in the data)?&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>showdev</category>
      <category>api</category>
    </item>
    <item>
      <title>How I mine App Store reviews to find "copy+10%" opportunities (open Actor)</title>
      <dc:creator>이해민</dc:creator>
      <pubDate>Sat, 08 Aug 2026 22:34:28 +0000</pubDate>
      <link>https://dev.to/_6d01b2eaf1075c95aafb5/how-i-mine-app-store-reviews-to-find-copy10-opportunities-open-actor-39kf</link>
      <guid>https://dev.to/_6d01b2eaf1075c95aafb5/how-i-mine-app-store-reviews-to-find-copy10-opportunities-open-actor-39kf</guid>
      <description>&lt;p&gt;When evaluating a "copy and improve by 10%" app idea, reading competitor reviews one app at a time doesn't scale. So I built &lt;strong&gt;App Store Review Miner&lt;/strong&gt;, an Apify Actor that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pulls the top-grossing chart for any App Store category/country&lt;/li&gt;
&lt;li&gt;Fetches each app's recent reviews&lt;/li&gt;
&lt;li&gt;Classifies low-rated (≤3★) reviews into 13 complaint buckets&lt;/li&gt;
&lt;li&gt;Ranks which complaints are &lt;em&gt;category-wide&lt;/em&gt; (real opportunity) vs single-app issues&lt;/li&gt;
&lt;li&gt;Flags apps with a "reputation drop" — recent reviews meaningfully worse than their all-time rating&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Try it: &lt;a href="https://apify.com/muddy_snowshoe/app-store-review-miner" rel="noopener noreferrer"&gt;https://apify.com/muddy_snowshoe/app-store-review-miner&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Built with plain Node.js + Apple's public RSS/lookup endpoints, wrapped as an Apify Actor. Source structure and pricing details in the Store listing. Feedback / feature requests welcome — Google Play support is next if there's demand.&lt;/p&gt;

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