<?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: BT_Sun</title>
    <description>The latest articles on DEV Community by BT_Sun (@_21fd064819ff1707b8060).</description>
    <link>https://dev.to/_21fd064819ff1707b8060</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%2F4205962%2Fcb30c37c-92e6-4ede-b729-141e02ee4b16.png</url>
      <title>DEV Community: BT_Sun</title>
      <link>https://dev.to/_21fd064819ff1707b8060</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/_21fd064819ff1707b8060"/>
    <language>en</language>
    <item>
      <title>I convert 1,000 won to $1 in my stock game. I'm still not sure the cents are right.</title>
      <dc:creator>BT_Sun</dc:creator>
      <pubDate>Tue, 10 Nov 2026 13:17:23 +0000</pubDate>
      <link>https://dev.to/_21fd064819ff1707b8060/i-convert-1000-won-to-1-in-my-stock-game-im-still-not-sure-the-cents-are-right-4jk</link>
      <guid>https://dev.to/_21fd064819ff1707b8060/i-convert-1000-won-to-1-in-my-stock-game-im-still-not-sure-the-cents-are-right-4jk</guid>
      <description>&lt;p&gt;I'm a junior solo developer from South Korea. I use a translator to help me write in English.&lt;/p&gt;

&lt;p&gt;I'm making Daily Trader: Stock Game. You watch the chart, read the news, and trade stocks with virtual money. A round is five minutes. There is also a one-minute mode.&lt;/p&gt;

&lt;p&gt;I made the Korean version first, so I used won for all the money. The English version also showed won. This time I changed the English display to dollars, but deciding how much one dollar should be was a little awkward.&lt;/p&gt;

&lt;h2&gt;
  
  
  I wanted to change the currency too
&lt;/h2&gt;

&lt;p&gt;The won (₩) is Korea's currency, and it isn't used much internationally.&lt;/p&gt;

&lt;p&gt;My game has Korean and English. I wanted to match the currency to the language too, so I chose dollars for English. Keeping won would have been easier, but I wanted to change at least this part for people playing in English.&lt;/p&gt;

&lt;h2&gt;
  
  
  I chose 1,000 won for $1
&lt;/h2&gt;

&lt;p&gt;The starting money is 100,000,000 won. If I just changed 1 won to $1, the player would start with $100,000,000. That felt too big.&lt;/p&gt;

&lt;p&gt;A real exchange rate would give me an awkward starting amount in dollars. I also wanted the calculation to be simple. So I chose a fixed rate of 1,000 won = $1. That makes the starting money $100,000.00.&lt;/p&gt;

&lt;p&gt;I only have to divide by 1,000. Since the money is virtual, I thought a fixed rate would be okay.&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%2F1teh98drqewdmhxnzaq4.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%2F1teh98drqewdmhxnzaq4.png" alt="The ledger stays in won. Only the screen changes." width="799" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Inside the game, it is still won
&lt;/h2&gt;

&lt;p&gt;The game keeps its money as whole numbers of won. Market generation, trades, and saved values all still use won. I only convert the amount when showing it in a non-Korean language, which is English in my game.&lt;/p&gt;

&lt;p&gt;The Korean version stays the same.&lt;/p&gt;

&lt;p&gt;For order prices, I do the calculation in reverse. If you enter &lt;code&gt;12.35&lt;/code&gt; in English, the game reads it as 12,350 won.&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%2Fhj37ctlt9poa2adwb7tu.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%2Fhj37ctlt9poa2adwb7tu.png" alt="Typing 12.35 becomes 12,350 won" width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Two prices looked the same
&lt;/h2&gt;

&lt;p&gt;I round the dollar amounts to cents. But for small stock prices, that hides part of the price.&lt;/p&gt;

&lt;p&gt;In Korea, stock prices move in set steps called ticks, and the step size depends on the stock price.&lt;/p&gt;

&lt;p&gt;In my game, prices below 2,000 won move in steps of 1 won. From 2,000 won to below 5,000 won, the step is 5 won. At 5,000 won and above, the steps are 10 won or more.&lt;/p&gt;

&lt;p&gt;With my conversion, 10 won is one cent. So at $5 and above, every allowed price fits exactly into cents. That part works.&lt;/p&gt;

&lt;p&gt;Below $5, it doesn't always work. For example, 1,231 won and 1,232 won both become $1.23 when rounded. They are different prices, but you can't tell from the order book.&lt;/p&gt;

&lt;p&gt;I added a third decimal place below $5 when it is needed. Now 1,231 won shows as $1.231. For 1,230 won, I still show $1.23.&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%2F8dcu66gmj4l0hat06i3v.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%2F8dcu66gmj4l0hat06i3v.png" alt="Rounding to cents hides different prices below $5" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I only noticed this while making the dollar display. I was used to calculating in won. I hadn't thought about what would happen to those price steps when I changed to dollars and cents.&lt;/p&gt;

&lt;h2&gt;
  
  
  I don't know if this looks right
&lt;/h2&gt;

&lt;p&gt;This way, every price shows correctly. But prices work differently in Korea, and I only learned about this problem while making it. I still don't know if $1.231 looks normal to people who use dollars, or if I've handled it the right way.&lt;/p&gt;

&lt;p&gt;If you know how this usually works with dollar prices, please tell me in the comments. I'd like to know if showing a third decimal place makes sense here.&lt;/p&gt;

&lt;p&gt;The dollar display update is in review on Google Play now. The Korean version doesn't change.&lt;/p&gt;

&lt;p&gt;The game uses virtual money only. It's a game, not investment advice.&lt;/p&gt;

&lt;p&gt;Daily Trader: Stock Game on Google Play: &lt;a href="https://play.google.com/store/apps/details?id=com.binarytech.dantagame&amp;amp;utm_source=devto&amp;amp;utm_campaign=blog_202611" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.binarytech.dantagame&amp;amp;utm_source=devto&amp;amp;utm_campaign=blog_202611&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>flutter</category>
      <category>i18n</category>
      <category>showdev</category>
    </item>
    <item>
      <title>My stock game lies to you on purpose. At 55%, the lies stopped meaning anything.</title>
      <dc:creator>BT_Sun</dc:creator>
      <pubDate>Sat, 07 Nov 2026 15:43:02 +0000</pubDate>
      <link>https://dev.to/_21fd064819ff1707b8060/my-stock-game-lies-to-you-on-purpose-at-55-the-lies-stopped-meaning-anything-322</link>
      <guid>https://dev.to/_21fd064819ff1707b8060/my-stock-game-lies-to-you-on-purpose-at-55-the-lies-stopped-meaning-anything-322</guid>
      <description>&lt;p&gt;I'm a junior solo developer from South Korea. I use a translator to help me write in English.&lt;/p&gt;

&lt;p&gt;I'm making Daily Trader: Stock Game. It's a day-trading game with virtual money. A round lasts five minutes. There is also a one-minute mode. You watch the chart, read the news, and trade stocks.&lt;/p&gt;

&lt;p&gt;Sometimes the news is good but the price goes down. I put that in the game on purpose. But after changing the headlines, I checked how often the news matched the price. It was much less often than I expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  I wanted good news to be wrong sometimes
&lt;/h2&gt;

&lt;p&gt;Good news doesn't always make a stock go up in a real market. It can already be in the price. People can also sell when the news comes out.&lt;/p&gt;

&lt;p&gt;I wanted this in my game too. If good news always meant up and bad news always meant down, it would be too obvious. There wouldn't be much to think about after reading a headline.&lt;/p&gt;

&lt;p&gt;I wanted players to make decisions with incomplete information. The news should help, but sometimes it should be wrong.&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%2F3aseq5vqfs8h04ivsqrl.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%2F3aseq5vqfs8h04ivsqrl.png" alt="A headline says the deal is sealed. The chart goes down anyway." width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The headlines were clearer, but something was wrong
&lt;/h2&gt;

&lt;p&gt;The game generates each market before the round starts. That includes the stocks, prices, and news. The news appears during play, but the price reactions have already been decided.&lt;/p&gt;

&lt;p&gt;I rewrote the headlines to make them short and direct. Things like "major deal sealed" and "deal collapses at the last minute." It was easier to tell which news was good or bad now.&lt;/p&gt;

&lt;p&gt;Then I measured how often confirmed headlines matched the price direction.&lt;/p&gt;

&lt;p&gt;It was only 55%.&lt;/p&gt;

&lt;p&gt;The old generator chose the headline's tone separately from the price reaction. So even a headline saying a deal was confirmed didn't tell you much about which way the price would go.&lt;/p&gt;

&lt;p&gt;I wanted some fake-outs. But this was close to a coin flip. If reading the news barely helps, why read it? I had made noise.&lt;/p&gt;

&lt;h2&gt;
  
  
  I changed how the headline is chosen
&lt;/h2&gt;

&lt;p&gt;Now the headline follows the price reaction. The generator uses the reaction to choose good or bad news, instead of choosing them separately.&lt;/p&gt;

&lt;p&gt;I kept exceptions for sell-the-news and news that was already priced in. A confirmed headline can still miss for those reasons.&lt;/p&gt;

&lt;p&gt;Rumors work differently. "Big deal rumored near" isn't a confirmed deal. It can be denied later. By the time the denial appears, the chart has already turned. I wanted to keep that delay too.&lt;/p&gt;

&lt;p&gt;After the change, confirmed headlines matched the price direction 82% of the time.&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%2Fkulvhrjpsbv946rqvk3m.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%2Fkulvhrjpsbv946rqvk3m.png" alt="Before and after: how often confirmed news matched the price" width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I didn't make them match every time. I still want players to watch the chart after reading the news. But at 55%, I wasn't giving them much useful information to start with.&lt;/p&gt;

&lt;h2&gt;
  
  
  The change also affected challenge codes
&lt;/h2&gt;

&lt;p&gt;When you finish a round, you can share your result with a challenge code. A friend can paste it into the game and play the exact same market. The stocks, prices, and news are all the same.&lt;/p&gt;

&lt;p&gt;For me, working alone, this was the best way to add competition without servers. Someone brags about their result and sends the code. Their friend can try the same market. That becomes a match without me having to build matchmaking or live rooms.&lt;/p&gt;

&lt;p&gt;But changing the news rule caused a problem here.&lt;/p&gt;

&lt;p&gt;The code uses a seed to generate the market. With the new rule, the same seed would make a different market. An old code shared with a friend would no longer give them the market that result came from.&lt;/p&gt;

&lt;p&gt;So I gave the new rule a new prefix, &lt;code&gt;DANTA5&lt;/code&gt;. Codes starting with &lt;code&gt;DANTA4&lt;/code&gt; still use the old rule and open the old market. The prefix decides which version of the generator to use.&lt;/p&gt;

&lt;p&gt;Older codes, &lt;code&gt;DANTA1&lt;/code&gt;, &lt;code&gt;DANTA2&lt;/code&gt;, and &lt;code&gt;DANTA3&lt;/code&gt;, are rejected. The game doesn't read them as a newer version and quietly give the player a different market.&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%2F24i4n8punpg787jq2hk6.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%2F24i4n8punpg787jq2hk6.png" alt="One prefix, one generator version" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I started this by making the headlines shorter. Then I had to change how they were chosen, and keep the old rule for shared codes.&lt;/p&gt;

&lt;p&gt;I still want the news to be wrong sometimes. But I want reading it to be useful. That's why I stopped at 82%.&lt;/p&gt;

&lt;p&gt;The next time I change the market rule, the code prefix will be &lt;code&gt;DANTA6&lt;/code&gt;. A friend using an old code should still get the market it was made for.&lt;/p&gt;

&lt;p&gt;The game uses virtual money only. It's a game, not investment advice.&lt;/p&gt;

&lt;p&gt;Daily Trader: Stock Game on Google Play: &lt;a href="https://play.google.com/store/apps/details?id=com.binarytech.dantagame&amp;amp;utm_source=devto&amp;amp;utm_campaign=blog_202611" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.binarytech.dantagame&amp;amp;utm_source=devto&amp;amp;utm_campaign=blog_202611&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>flutter</category>
      <category>showdev</category>
      <category>design</category>
    </item>
    <item>
      <title>A native speaker left one comment. I fixed 32 Chinese strings I can't read.</title>
      <dc:creator>BT_Sun</dc:creator>
      <pubDate>Thu, 05 Nov 2026 06:07:33 +0000</pubDate>
      <link>https://dev.to/_21fd064819ff1707b8060/a-native-speaker-left-one-comment-i-fixed-32-chinese-strings-i-cant-read-30hg</link>
      <guid>https://dev.to/_21fd064819ff1707b8060/a-native-speaker-left-one-comment-i-fixed-32-chinese-strings-i-cant-read-30hg</guid>
      <description>&lt;p&gt;I'm a solo developer from South Korea. I started coding about seven months ago. I can read English, but writing sentences is still difficult without a translator. I can't read Chinese at all.&lt;/p&gt;

&lt;p&gt;My app, Party Picker, supports 10 languages. AI translated the Chinese text: Simplified for Mainland China and Traditional for Taiwan. I wrote about this in an earlier post, "I barely speak English. My app ships in 10 languages." Korean is the only language I can check properly.&lt;/p&gt;

&lt;p&gt;A native Chinese speaker left a comment on that post. They suggested two checks and a different heading for the result screen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checking the Chinese files
&lt;/h2&gt;

&lt;p&gt;The first check was to look for Simplified-only characters in the Traditional Chinese file (&lt;code&gt;zh-Hant&lt;/code&gt;). The second was to convert the Simplified file with OpenCC's &lt;code&gt;s2twp&lt;/code&gt; option and compare that result with &lt;code&gt;zh-Hant&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I hadn't received feedback about the Chinese text before. I didn't expect someone to look at it.&lt;/p&gt;

&lt;p&gt;The character check found 0 Simplified-only characters.&lt;/p&gt;

&lt;p&gt;The OpenCC comparison was less clear. Out of 696 strings, 124 were different. At first that seemed like a lot to fix. But according to the checks, most were places where my &lt;code&gt;zh-Hant&lt;/code&gt; file already had more natural Taiwan wording, such as 設定, 偵測 and 逾時.&lt;/p&gt;

&lt;p&gt;OpenCC was wrong once too. It changed 訊號一出現 to 訊號一齣現.&lt;/p&gt;

&lt;p&gt;So I couldn't just replace everything that was different. There were still some strings to fix after going through them.&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%2Fsz0esk705hxcod26eel3.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%2Fsz0esk705hxcod26eel3.png" alt="124 differences, 0 bad characters, 32 fixes" width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I changed
&lt;/h2&gt;

&lt;p&gt;I fixed 32 strings: 10 Simplified and 22 Traditional.&lt;/p&gt;

&lt;p&gt;Some were words used in Taiwan. 提交 became 送出 for "submit", and 拖動 became 拖曳 for "drag".&lt;/p&gt;

&lt;p&gt;The balloon game had a different problem. Players inflate a shared balloon until it pops, but the text used 戳破 / 戳爆. Those mean poking it to make it pop. I changed the text to say that the balloon pops.&lt;/p&gt;

&lt;p&gt;"Remember it!" was 記住了, which reads like "I remembered it." It became 好好記住！&lt;/p&gt;

&lt;p&gt;For the result heading, I used the suggestion from the comment: 天选之人！ instead of 选中的就是你！. It means "The chosen one!" and works when one person or several people are picked.&lt;/p&gt;

&lt;p&gt;There was also a rule translated too literally as "ties at the selection boundary". I changed that to "if a tie affects who gets the penalty".&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%2Fv3kzudoaf0zaoriot9tw.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%2Fv3kzudoaf0zaoriot9tw.png" alt="Before and after: three of the 32 fixes" width="800" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  I still needed AI to check
&lt;/h2&gt;

&lt;p&gt;I can't look at 提交 and 送出 and decide which is better. I asked four different AI models to check the suggestions, then picked the changes based on those checks.&lt;/p&gt;

&lt;p&gt;It's not the same as a native speaker reading every line. I still can't read the result myself. But before that comment, I had no way to check it at all.&lt;/p&gt;

&lt;p&gt;The Simplified-character check is now part of my translation script. It runs when OpenCC is installed, along with the existing checks for missing keys and broken placeholders. I also added a note that &lt;code&gt;zh-Hant&lt;/code&gt; uses Taiwan wording. It isn't just a character conversion from Simplified Chinese. Examples in the notes are 设置 → 設定, 默认 → 預設 and 视频 → 影片.&lt;/p&gt;

&lt;h2&gt;
  
  
  The German question
&lt;/h2&gt;

&lt;p&gt;Another commenter on the same post asked about long German words.&lt;/p&gt;

&lt;p&gt;I already had an overflow widget test. It opens 26 screens at 360×640 with text scaled to 1.6×. At the time, it only tested four languages.&lt;/p&gt;

&lt;p&gt;After that question, I added Spanish, Brazilian Portuguese, Simplified Chinese and Traditional Chinese. The test now covers eight languages. All eight pass.&lt;/p&gt;

&lt;h2&gt;
  
  
  How many people read these posts
&lt;/h2&gt;

&lt;p&gt;These are my dev.to numbers as of November 5, 2026:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Post&lt;/th&gt;
&lt;th&gt;Views&lt;/th&gt;
&lt;th&gt;Comments&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;I hated apps full of ads, so I built my own. Then I added ads.&lt;/td&gt;
&lt;td&gt;under 25&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I barely speak English. My app ships in 10 languages.&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I shipped my app to 178 countries in 10 languages. One person outside Korea installed it.&lt;/td&gt;
&lt;td&gt;under 25&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI writes my code just fine. It still couldn't draw one person.&lt;/td&gt;
&lt;td&gt;under 25&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&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%2Fwczdfovzhfx7ozw4ry8j.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%2Fwczdfovzhfx7ozw4ry8j.png" alt="My dev.to posts so far" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The language post has the most views and comments so far. It is still 59 views.&lt;/p&gt;

&lt;p&gt;I still can't check Japanese, Spanish, German, French, Indonesian or Portuguese myself. I don't know what else needs fixing.&lt;/p&gt;

&lt;p&gt;When I get stuck again, I'll probably write about it here.&lt;/p&gt;

&lt;p&gt;You can find Party Picker on &lt;a href="https://play.google.com/store/apps/details?id=kr.binarytech.party_picker&amp;amp;utm_source=devto&amp;amp;utm_campaign=blog_202611" rel="noopener noreferrer"&gt;Google Play&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>i18n</category>
      <category>flutter</category>
      <category>ai</category>
    </item>
    <item>
      <title>AI writes my code just fine. It still couldn't draw one person.</title>
      <dc:creator>BT_Sun</dc:creator>
      <pubDate>Sun, 01 Nov 2026 11:56:46 +0000</pubDate>
      <link>https://dev.to/_21fd064819ff1707b8060/ai-writes-my-code-just-fine-it-still-couldnt-draw-one-person-57om</link>
      <guid>https://dev.to/_21fd064819ff1707b8060/ai-writes-my-code-just-fine-it-still-couldnt-draw-one-person-57om</guid>
      <description>&lt;p&gt;I'm a solo developer from South Korea. I started coding about seven months ago. I use a translator and AI to help me write in English.&lt;/p&gt;

&lt;p&gt;My app, Party Picker, has 21 party games. Friends use one phone to decide who gets a penalty, like buying coffee.&lt;/p&gt;

&lt;p&gt;I've written before about how much AI helps me. This time I made a game where you copy a person's pose. I got help from AI again, but the character kept looking strange. In the end I removed the face because it was drawn too badly.&lt;/p&gt;

&lt;h2&gt;
  
  
  I wanted to match a person's pose
&lt;/h2&gt;

&lt;p&gt;I like games where you look at someone's pose and try to copy it. I wanted to make one for my app. I wanted players to match a person, not circles or triangles.&lt;/p&gt;

&lt;p&gt;The game shows a pose for 4 seconds, then hides it. You have 20 seconds to drag the head, elbows, hands, knees, and feet into the pose you remember. The app compares it with the original. Whoever gets the lowest match score gets the penalty.&lt;/p&gt;

&lt;p&gt;That was the rule. Now I needed a person to put on the screen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five characters in one afternoon
&lt;/h2&gt;

&lt;p&gt;My commit history shows five versions of the character on the first day, October 25, between 16:07 and 18:31.&lt;/p&gt;

&lt;p&gt;The first was a robot drawn with code. It had a smiling face. Then I changed it to a cartoon character, also drawn with code. That still looked awkward, so I asked Codex for images.&lt;/p&gt;

&lt;p&gt;I asked it to draw the head, torso, arms, hands, and feet separately. I needed to join the parts at each joint so the character could change poses. I thought using images might look better.&lt;/p&gt;

&lt;p&gt;But the proportions were strange, and the parts looked awkward together. I couldn't point to just one thing to fix. I asked Codex to draw them again. The second set wasn't much different.&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%2F7fjc388y3olgd33o7e0g.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%2F7fjc388y3olgd33o7e0g.png" alt="Five characters in one afternoon" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Removing the face wasn't a design choice
&lt;/h2&gt;

&lt;p&gt;I deleted all the image files and the code that loaded them. The fifth version was a wooden mannequin drawn with shapes in code, with no face.&lt;/p&gt;

&lt;p&gt;I hadn't planned to make a faceless character. Every face looked awkward and was drawn too badly, so I had to remove it.&lt;/p&gt;

&lt;p&gt;The next day I worked on the mannequin a little more. I gave it a coral top and dark pants. It still has no face. The current character is made from shapes drawn with Flutter's &lt;code&gt;CustomPainter&lt;/code&gt;, without image files.&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%2Ft77kk3wb8oec0mpmkd71.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%2Ft77kk3wb8oec0mpmkd71.png" alt="The faceless mannequin and the final character" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AI wrote that code too. I got two sets of AI drawings and deleted both, but the code AI wrote to draw the character is still in the app.&lt;/p&gt;

&lt;h2&gt;
  
  
  Moving the arms and legs
&lt;/h2&gt;

&lt;p&gt;The controls changed during this too. At first, you selected a body part and used a slider to adjust its angle. Then I changed it so you could drag the hands and feet. Later I added the elbows and knees as places you could grab.&lt;/p&gt;

&lt;p&gt;The AI made the arms and legs move like an octopus. They moved easily when I dragged them, but matching a pose was uncomfortable.&lt;/p&gt;

&lt;p&gt;Without a time limit, I think this would have been a convenient UI. You could take your time moving the body into the pose you wanted. Here, you have to remember what you just saw and match it quickly. When I moved an arm, other parts moved with it. Sometimes it went over to the other side and I had to adjust it again.&lt;/p&gt;

&lt;p&gt;So I needed to keep some parts fixed. I changed it so only the joint you grab rotates. The other joints don't follow, and it stops when it reaches the angle limit.&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%2Fsxj0exeq672die2hexep.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%2Fsxj0exeq672die2hexep.png" alt="Octopus arms vs. arms that stop at a limit" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then I tried playing it. The game itself wasn't very good.&lt;/p&gt;

&lt;p&gt;It was the worst of the games I've made so far. I changed the character and fixed the controls, but those changes didn't make it fun.&lt;/p&gt;

&lt;h2&gt;
  
  
  It feels like design AI has stopped improving
&lt;/h2&gt;

&lt;p&gt;From using AI, I feel that it keeps getting better at code. For design, it feels like it has stopped improving. I get a lot of help with code, but I couldn't use these drawings of a person even after asking again.&lt;/p&gt;

&lt;p&gt;Maybe I didn't use good design skills or tools. Even if I had, I don't think the result would have changed much. I don't know enough to say how design AI is doing in general. This is just what I felt while making this game.&lt;/p&gt;

&lt;p&gt;The games I'm making now are all drawn with shapes, without image files. For now, I still find it hard to leave drawings of people to AI.&lt;/p&gt;

&lt;p&gt;Have you had better luck getting AI to draw characters for a game? I'd like to know what worked for you.&lt;/p&gt;

&lt;p&gt;You can find Party Picker on &lt;a href="https://play.google.com/store/apps/details?id=kr.binarytech.party_picker&amp;amp;utm_source=devto&amp;amp;utm_campaign=blog_202611" rel="noopener noreferrer"&gt;Google Play&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>gamedev</category>
      <category>flutter</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I shipped my app to 178 countries in 10 languages. One person outside Korea installed it.</title>
      <dc:creator>BT_Sun</dc:creator>
      <pubDate>Wed, 28 Oct 2026 11:29:51 +0000</pubDate>
      <link>https://dev.to/_21fd064819ff1707b8060/i-shipped-my-app-to-178-countries-in-10-languages-one-person-outside-korea-installed-it-270m</link>
      <guid>https://dev.to/_21fd064819ff1707b8060/i-shipped-my-app-to-178-countries-in-10-languages-one-person-outside-korea-installed-it-270m</guid>
      <description>&lt;p&gt;I'm a solo developer from South Korea. I started coding about seven months ago. Writing in English is still difficult for me, so I use a translator and AI to help.&lt;/p&gt;

&lt;p&gt;My app, Party Picker, has 21 party games. Friends use one phone to pick who buys coffee and things like that.&lt;/p&gt;

&lt;p&gt;In my last post, I wrote that nobody outside Korea had installed it. Since then, one person has.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I tried outside Korea
&lt;/h2&gt;

&lt;p&gt;The app is available in 178 countries and regions on Google Play. It supports 10 languages, and the store page is in 10 languages too. I used AI for the translations.&lt;/p&gt;

&lt;p&gt;I posted on Reddit and made English YouTube Shorts. I also translated the store pages and ran a Google Play promotion through promotional content in 177 countries.&lt;/p&gt;

&lt;p&gt;None of these made a noticeable difference so far.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers in Play Console
&lt;/h2&gt;

&lt;p&gt;I checked Google Play Console on October 28. For the last 28 days, September 30 to October 27, it showed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;About 2,080 store impressions&lt;/li&gt;
&lt;li&gt;8 device acquisitions&lt;/li&gt;
&lt;li&gt;7 first opens&lt;/li&gt;
&lt;li&gt;7 monthly active devices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The store listing report for the last 28 days showed 55 visitors. There were 11 install button clicks, or 20%.&lt;/p&gt;

&lt;p&gt;The promotion ran from October 19 to 25 in 177 countries. Seven people saw it. Clicks and conversions still show "no data".&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%2Fb7bdtdtq4jz3qva45cwu.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%2Fb7bdtdtq4jz3qva45cwu.png" alt="The funnel from 178 countries to 8 installs" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These numbers measure different things. But when I look at them, it feels like I got about 7 or 8 installs in the end. The app is available in many countries, but very few people are finding it.&lt;/p&gt;

&lt;h2&gt;
  
  
  One user in the Dominican Republic
&lt;/h2&gt;

&lt;p&gt;The country report showed 6 installed users as of October 26: 5 in South Korea and 1 in the Dominican Republic.&lt;/p&gt;

&lt;p&gt;I don't know who that person is. I don't know how they found the app either.&lt;/p&gt;

&lt;p&gt;There was also 1 device acquisition from Ethiopia on October 12. But that metric counts both new and returning devices. I can't say it was a second person outside Korea, so I'm not adding it to the user count.&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%2Fap2qq3lmoafr6h2si04x.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%2Fap2qq3lmoafr6h2si04x.png" alt="178 countries, and where the installs actually are" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Do I need to do more on social media?
&lt;/h2&gt;

&lt;p&gt;I keep wondering if Instagram, Threads, or TikTok needs to be the main way I promote this app to people outside Korea.&lt;/p&gt;

&lt;p&gt;This app isn't my only work. I write this blog too, and I'm making three other games. One of them is getting ready for a Steam listing. So I have a lot to think about before adding social media to that work.&lt;/p&gt;

&lt;p&gt;The Play promotion didn't bring in many people either. I don't know whether spending more time on social media would help, or how much time I should give it.&lt;/p&gt;

&lt;p&gt;I don't have an answer yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  I'll keep trying outside Korea too
&lt;/h2&gt;

&lt;p&gt;I don't plan to wait until the app does well in Korea before working on other countries. I want to keep trying both.&lt;/p&gt;

&lt;p&gt;AI has made the language barrier lower for me. The translations aren't perfect, but I can do more than I could on my own.&lt;/p&gt;

&lt;p&gt;Comments on dev.to have helped too. A native Chinese speaker gave me suggestions, and I changed 32 Traditional Chinese strings. I also added a tip about right-to-left languages to my notes.&lt;/p&gt;

&lt;p&gt;I can use that help to improve the app. That's part of why I want to keep trying, even with these small numbers.&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%2Fkpldlvxifzju5ogd0bqv.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%2Fkpldlvxifzju5ogd0bqv.png" alt="What I tried, and what I'll keep doing" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you released a small app globally, did social media actually bring you users? If you did it alone, what worked for you?&lt;/p&gt;

&lt;p&gt;You can find Party Picker on &lt;a href="https://play.google.com/store/apps/details?id=kr.binarytech.party_picker&amp;amp;utm_source=devto&amp;amp;utm_campaign=blog_202610" rel="noopener noreferrer"&gt;Google Play&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>startup</category>
      <category>marketing</category>
      <category>flutter</category>
    </item>
    <item>
      <title>I barely speak English. My app ships in 10 languages.</title>
      <dc:creator>BT_Sun</dc:creator>
      <pubDate>Mon, 26 Oct 2026 07:50:38 +0000</pubDate>
      <link>https://dev.to/_21fd064819ff1707b8060/i-barely-speak-english-my-app-ships-in-10-languages-46i3</link>
      <guid>https://dev.to/_21fd064819ff1707b8060/i-barely-speak-english-my-app-ships-in-10-languages-46i3</guid>
      <description>&lt;p&gt;I'm a solo developer from South Korea. I started coding about seven months ago. I can read English, but making sentences is difficult without a translator. I used a translator and AI to help write this post too.&lt;/p&gt;

&lt;p&gt;My app, Party Picker, supports 10 languages: Korean, English, Japanese, Simplified Chinese, Traditional Chinese, Spanish, Brazilian Portuguese, German, French, and Indonesian. Korean is the only one I can check properly.&lt;/p&gt;

&lt;p&gt;I briefly mentioned translation in my first post. I wanted to write more about how I did it and what I still can't check.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I added 10 languages
&lt;/h2&gt;

&lt;p&gt;Party Picker is a party game app. Friends use one phone to pick who buys coffee. It has luck games like roulette and skill games like stopping a timer at exactly five seconds.&lt;/p&gt;

&lt;p&gt;I didn't have a big plan for a global launch. I was going to use AI for translation anyway. I thought an app would be easier to use if it was in the user's own language, so I added more languages.&lt;/p&gt;

&lt;p&gt;I set up the translation structure and had AI translate eight additional languages. Each had about 670 strings.&lt;/p&gt;

&lt;h2&gt;
  
  
  The translation setup
&lt;/h2&gt;

&lt;p&gt;The app uses a function called &lt;code&gt;tr()&lt;/code&gt; for text. The English text itself is the key.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;tr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="n"&gt;english&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;L10n&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;translate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;english&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The English strings are collected in one source file. AI translates that file into each language. A small script checks for missing strings and placeholders like &lt;code&gt;{0}&lt;/code&gt; that were removed or changed.&lt;/p&gt;

&lt;p&gt;The first result had zero missing strings and zero broken placeholders. That told me the entries were there. It didn't tell me if the translations were correct.&lt;/p&gt;

&lt;p&gt;During translation, AI pointed out a problem with &lt;code&gt;The chosen one(s)!&lt;/code&gt;. The singular and plural forms in other languages may need more changes than adding an &lt;code&gt;s&lt;/code&gt;. I split it into &lt;code&gt;The chosen one!&lt;/code&gt; and &lt;code&gt;The chosen ones!&lt;/code&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4tbwpzu3notwmr8rnx16.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%2F4tbwpzu3notwmr8rnx16.png" alt="One string, two meanings" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Checking the screens
&lt;/h2&gt;

&lt;p&gt;There are some things I can check without understanding the language.&lt;/p&gt;

&lt;p&gt;One is a marker test. It replaces every translation with text wrapped in &lt;code&gt;« »&lt;/code&gt;, like &lt;code&gt;«Start»&lt;/code&gt;. I open the screens and look for English without those marks. That text hasn't gone through &lt;code&gt;tr()&lt;/code&gt;, so it would stay in English when the language changes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;marked&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="kn"&gt;source&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nl"&gt;key:&lt;/span&gt; &lt;span class="s"&gt;'«&lt;/span&gt;&lt;span class="si"&gt;$key&lt;/span&gt;&lt;span class="s"&gt;»'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I also checked whether the text fit on a small screen. I tested German, French, Indonesian, and Japanese at 360×640 with text scaled to 1.6×. There was no overflow on the 26 screens I checked.&lt;/p&gt;

&lt;p&gt;For the store listings, I wrote another script to check the character limits for the nine additional languages.&lt;/p&gt;

&lt;p&gt;No native speakers have reviewed the translations. These checks help with missing text and layout, but I still need a way to check the wording.&lt;/p&gt;

&lt;h2&gt;
  
  
  I can't be sure about the meaning
&lt;/h2&gt;

&lt;p&gt;I ask several AIs to check the translations. I also try reading them myself as much as I can. Even after that, it's hard to know if they are right.&lt;/p&gt;

&lt;p&gt;The hardest part is checking whether the translation says what I meant. I also don't know whether people actually use those words. A word might be correct in a dictionary but strange in an app.&lt;/p&gt;

&lt;p&gt;I had this problem even in English. My first English store description said "Pick a forfeit." I meant picking a person, but it could be read as choosing the penalty. I can read English and still missed that. Similar problems in the other languages would be harder for me to find.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding a feature means more translation
&lt;/h2&gt;

&lt;p&gt;I underestimated the work after the first translation.&lt;/p&gt;

&lt;p&gt;Every new feature needs text in 10 languages. Recently I added one game with 23 new strings. For the eight additional languages, that was 184 translations. Then I had to run the checks again.&lt;/p&gt;

&lt;p&gt;It isn't especially difficult work, but I have to keep doing it whenever I add something.&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%2F2r6dvt4k44tpnmefxqv5.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%2F2r6dvt4k44tpnmefxqv5.png" alt="One new game, eight languages" width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Indifference is harder than criticism
&lt;/h2&gt;

&lt;p&gt;So far, there are no installs from outside Korea. There are no reviews in other languages or reports about translation mistakes either.&lt;/p&gt;

&lt;p&gt;There are few users, so I get indifference rather than criticism. I find that harder. Without feedback, I don't know whether the translations are okay, whether they have problems, or whether anyone has even seen them.&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%2Fi2hlstxy4p3ndebquvlh.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%2Fi2hlstxy4p3ndebquvlh.png" alt="Ten languages, zero signals" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  If I started again
&lt;/h2&gt;

&lt;p&gt;I'd start with Korean and English. I would add more languages when people from other countries started using the app.&lt;/p&gt;

&lt;p&gt;The translation structure and tests are still useful. But with so few users, it's hard to know how much the extra languages helped. They already add work whenever I change the app.&lt;/p&gt;

&lt;p&gt;If you try it in one of these languages and find wording that sounds strange, please let me know. That's something I can't check well on my own.&lt;/p&gt;

&lt;p&gt;You can find Party Picker on &lt;a href="https://play.google.com/store/apps/details?id=kr.binarytech.party_picker&amp;amp;utm_source=devto&amp;amp;utm_campaign=blog_202610" rel="noopener noreferrer"&gt;Google Play&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>i18n</category>
      <category>ai</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I hated apps full of ads, so I built my own. Then I added ads.</title>
      <dc:creator>BT_Sun</dc:creator>
      <pubDate>Sun, 25 Oct 2026 06:19:15 +0000</pubDate>
      <link>https://dev.to/_21fd064819ff1707b8060/i-hated-apps-full-of-ads-so-i-built-my-own-then-i-added-ads-4c7k</link>
      <guid>https://dev.to/_21fd064819ff1707b8060/i-hated-apps-full-of-ads-so-i-built-my-own-then-i-added-ads-4c7k</guid>
      <description>&lt;p&gt;I'm a developer from South Korea. I started coding about seven months ago, worked as a freelancer for seven months, and now I'm making apps as a one-person business.&lt;/p&gt;

&lt;p&gt;This is my first post here. I don't have much experience to give advice from yet, so I'll start with the app I made and how it happened.&lt;/p&gt;

&lt;h2&gt;
  
  
  When my freelance contract was ending
&lt;/h2&gt;

&lt;p&gt;During those seven months, I was slowly learning what development work was like. As the contract came to an end, I started thinking about what to do next.&lt;/p&gt;

&lt;p&gt;I liked building things for a client. I also wanted to know what it would feel like to make something of my own, from the first idea to release. So I decided to try starting a business on my own.&lt;/p&gt;

&lt;h2&gt;
  
  
  An app for deciding who buys coffee
&lt;/h2&gt;

&lt;p&gt;When I meet friends, we sometimes need to decide who's paying for coffee. Someone takes out a phone and searches for a roulette or a ladder game. The ladder game is also called Ghost Leg, and it's often used in Korea to pick someone at random.&lt;/p&gt;

&lt;p&gt;Searching every time was annoying enough. Then we'd open a site, close an ad, and get another ad. After skipping three ads just to play one game, I thought I could make an app for this myself.&lt;/p&gt;

&lt;p&gt;I called it Party Picker, or 뽑기파티 in Korean. Friends use one phone to pick who gets a penalty, like having to buy the coffee. Some games are based on luck, such as roulette and finger picking. Others involve skill, like stopping a timer at exactly five seconds or competing on reaction time. I kept making them and ended up with 20 games.&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%2Fu3r0srr5fylj20xv6enc.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%2Fu3r0srr5fylj20xv6enc.png" alt="Party Picker home screen and the five-second game" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Then I put ads in it too
&lt;/h2&gt;

&lt;p&gt;After releasing it, I had to think about making money. There weren't many options for a free app I was running alone. I ended up adding ads.&lt;/p&gt;

&lt;p&gt;It felt a bit funny. Ads were the reason I started making this, and now I was putting them in my own app.&lt;/p&gt;

&lt;p&gt;I still wanted to do something about the parts that bothered me. Ads don't interrupt a game. The app lets you know when an ad is coming. There are no full-screen ads for the first 24 hours after installation. You can also turn ads off with a one-time purchase.&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%2Fwwxtlqp8glwikk6ott9p.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%2Fwwxtlqp8glwikk6ott9p.png" alt="Ads I hated vs ads I shipped" width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I spent time thinking about where the ads would appear and how to make them less annoying. Now I was the person putting them there.&lt;/p&gt;

&lt;h2&gt;
  
  
  The paperwork was harder than the coding
&lt;/h2&gt;

&lt;p&gt;I got a lot of help from AI with development. The other work was harder for me to figure out: registering a business, preparing to run it, writing a privacy policy, and submitting the app for review. I also had to set up ads, payments, and payout details.&lt;/p&gt;

&lt;p&gt;I'm still learning how to do this. Even working out what a document needs can take me a while.&lt;/p&gt;

&lt;p&gt;I released the app on Google Play in 177 countries and regions. I also released it on Toss, a Korean finance super app that hosts mini apps. The Toss version is only available in Korea.&lt;/p&gt;

&lt;p&gt;Choosing "all countries" in the Play Console took one click. Getting anyone outside Korea to actually find the app was a different problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Translating it and trying to reach people outside Korea
&lt;/h2&gt;

&lt;p&gt;The app supports 10 languages. I used AI for the translations and built a small tool to check for missing strings and broken placeholders. I checked the German, French, Indonesian, and Japanese screens with large text settings to see whether the text would fit.&lt;/p&gt;

&lt;p&gt;No native speakers have reviewed the translations yet. Those checks help me find missing or overflowing text, but I still don't know how natural all the wording sounds.&lt;/p&gt;

&lt;p&gt;My first English store description used "Pick a forfeit." I later realized that could mean choosing the penalty, when I meant choosing the person. I changed it to "Who gets picked?"&lt;/p&gt;

&lt;p&gt;One word game still uses an English word list in every language. Its rules depend on the number of letters, so I couldn't just translate the words and keep the same rules.&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%2Fgscihiwp7i1o4g0lm6fl.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%2Fgscihiwp7i1o4g0lm6fl.png" alt="Lost in translation: before and after" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There were platform rules to learn too. Toss rejected my subtitle because of its sentence-style Korean ending. I had written &lt;code&gt;오늘 벌칙자 5초 대결로 정하자&lt;/code&gt;, roughly "Let's decide who gets the penalty with a five-second challenge." I changed it to &lt;code&gt;5초 대결로 뽑는 오늘의 벌칙자&lt;/code&gt;, roughly "Today's penalty recipient, picked by a five-second challenge," and submitted it again.&lt;/p&gt;

&lt;p&gt;On Reddit, my first post was removed by a filter. I also found that many communities have account age or karma requirements before you can post. I hadn't expected sharing the app to involve so much checking of rules.&lt;/p&gt;

&lt;p&gt;Most people who have installed it so far are in Korea. Being available in 177 countries and being used in 177 countries turned out to be very different things. That's one reason I'm writing in English here.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I do before asking AI to code
&lt;/h2&gt;

&lt;p&gt;I couldn't have made 20 games, released on Google Play and Toss, and added 10 languages at seven months into coding without AI. I use it so much now that it's hard to imagine doing this without it.&lt;/p&gt;

&lt;p&gt;At first, I would just ask it to make a game. The result looked close to what I wanted, but something felt awkward when I used it.&lt;/p&gt;

&lt;p&gt;I started writing down the game rules before asking for code. I also described how I wanted the screens to look and set some basic rules for the implementation. For example, the result of a random pick should be decided before its animation starts.&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%2Fco82tpj1ns856r0i0kmo.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%2Fco82tpj1ns856r0i0kmo.png" alt="Design first, then let AI build" width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The more time I spent on that preparation, the better the app got. For me, working out the design first helped more than spending the same effort on how to ask AI for code.&lt;/p&gt;

&lt;p&gt;AI wrote the code, but I still had to decide what to make, why it should work that way, and how it should feel to use. I didn't understand how much work that would be when I started.&lt;/p&gt;

&lt;h2&gt;
  
  
  The kind of developer I am so far
&lt;/h2&gt;

&lt;p&gt;It's too early for me to say I'm a good developer. But doing the planning, design, development, release, and day-to-day work myself has helped me understand what I like doing.&lt;/p&gt;

&lt;p&gt;I like taking something that bothered me and making a working app to fix it. Small decisions, like when to show an ad, take up quite a lot of my attention. I'm still experimenting with writing the design and rules before asking AI to build anything.&lt;/p&gt;

&lt;p&gt;I've also now released a Flutter app on two different platforms, Google Play and Toss. I want to use this blog to keep a record of that work and as a portfolio, including why I made particular decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The next three posts I want to write
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Releasing a Flutter web game on Apps in Toss, including what got rejected&lt;/li&gt;
&lt;li&gt;How I prepare a design before asking AI to code&lt;/li&gt;
&lt;li&gt;The decisions behind making a random pick fair&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the Toss post, I want to go into more detail about the submission process and the rejections. There was more to it than I could fit here.&lt;/p&gt;

&lt;p&gt;You can find Party Picker on &lt;a href="https://play.google.com/store/apps/details?id=kr.binarytech.party_picker&amp;amp;utm_source=devto&amp;amp;utm_campaign=blog_202610" rel="noopener noreferrer"&gt;Google Play&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>flutter</category>
      <category>showdev</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
