Back to Writing

On Programmers' Day, YomiPlay Was Removed from the China App Store

I meant to use Programmers' Day to share how far YomiPlay has come — another round of work on speech recognition, and cloud recognition on top. Right when I was most looking forward to it, YomiPlay disappeared from the App Store in mainland China. This post is simply a record of how that felt.

YomiPlayIndie developmentDev notes

October 24 — Programmers' Day (in China it's marked on 10/24, after 1024).

I had planned to use this day to share YomiPlay's recent progress with you.

Speech recognition got another round of polish, cloud recognition was added, and accuracy went up noticeably. After a lot of back and forth, it finally reached the state I'm happiest with so far.

I was preparing a demo video and putting together tutorials. I wanted more people learning Japanese to see how the podcasts, songs, audio and video they love can become material they can understand, listen to again and again, and practice along with.

Right when I was most looking forward to it, YomiPlay was removed from the App Store in mainland China.

Honestly, it hurts.

And on Programmers' Day, of all days. I meant to give all this work a small moment of closure, and in the end I didn't know what to say.

It started with something that bothered me while learning Japanese

YomiPlay's starting point was simple: I needed a Japanese learning tool that fit the way I studied.

When I was learning Japanese, I memorized words every day, listened to example sentences, and practiced shadowing.

At language school, after getting up and washing my face, I would jog in place while practicing along with the word and example-sentence audio on my computer. Later, once I started working, my commute became time for Japanese podcasts and study material.

But some parts I just couldn't catch, however many times I replayed them. I always had to stop, look at the text, look up a word, and go back to listening.

Subtitles in videos on my phone were too small and tiring to read. Looking up a word, switching screens, dragging the progress bar — after a few rounds of that, I'd forgotten where I was.

So I wondered: could I make a tool better suited to this way of learning?

Bigger subtitles, clearer readings. Stop on a sentence you can't follow and look it up; replay the parts you want to practice as often as you like. And learn from the content you actually enjoy.

That's how I started writing YomiPlay.

At first I only wanted to make my own daily study a little easier. Then the feedback started coming in, and I realized quite a few people needed a tool like this too.

These past months, polishing it bit by bit

When you build software alone, much of your time goes into things nobody sees.

Building a feature is only the beginning. Only when it's really in use do you find out how many details still need work.

Is the recognition accurate? Do the subtitles split into natural words? Are the readings right? Does the translation actually help you understand? Does importing a file ever fail? Each of these has to be solved one by one.

Sometimes a single subtitle line needs to be looked at again and again.

The text is recognized correctly, but the word boundaries aren't quite right; fix the boundaries, and then a reading needs correcting. How a number goes with its counter, what a word means in this particular context — none of it can just be waved through.

Importing files is the same.

Things that work fine in my own tests can still run into situations I never imagined once people use them for real. Different files, different content, different habits — each brings new problems to light.

When someone says a file won't import, I go back and check the format. When someone says the subtitles are hard to read, I adjust the display. When someone wants things to be easier, I think again about how the flow could change.

These things are small and fiddly, but they decide whether a tool is good to use.

After all that time, what finally reaches people may be just a button that's easier to tap, a subtitle line that's a bit more accurate, or an import that finally works.

Still, seeing those things slowly get better makes me happy.

Because I use it myself. I know that the less you have to fight the tool while studying, the more time and patience you have left for the content itself.

People's care made me want to do better

Something has really moved me over this time: people using YomiPlay seriously, and people taking the time to tell me seriously where it could be better.

They send screenshots, describe the problem they ran into, and make concrete suggestions.

For an indie developer, feedback like this is precious.

When someone takes the time to explain a problem to me, it means the tool has become part of how they study — and that they still hope it will get better.

Every time I get feedback like that, what I'm doing feels meaningful in a very concrete way.

So wherever I could fix something, I tried to fix it, little by little. Solving a problem someone raised and then telling them how it turned out is a wonderful feeling.

An idea that once existed only in my head actually helped someone get something done.

That's how YomiPlay slowly became what it is now — through exchanges like these.

And that is exactly why losing China is, for me, far more than losing one place to download it.

I think of the people who had just seen a video and were about to try it, the people who'd been following along and wanted to try the new version, and the tutorials I haven't published yet.

I finally made the features better, and new users in mainland China can't simply download it and try.

That sense of helplessness is really hard to put into words.

The hardest part: I was so looking forward to this

Lately I had genuinely started to feel that YomiPlay was getting closer to what I first set out to build.

Especially the speech recognition.

After adding cloud recognition, I tested it again and again on real content. Seeing the results come out more accurate than before, and cleaning up the subtitles afterwards take less effort, gave me a real sense of accomplishment.

At last, these improvements were something people could feel directly.

I wanted to film the results, and to turn the steps into tutorials so that anyone using it for the first time could get started smoothly.

I was also about to give away some Pro trial codes, so more people could try it, tell me what they think, and help me keep improving it.

Every one of these plans came with real anticipation.

So what hurts most is that this happened right when I wanted to share the results with everyone.

There are still so many ideas I haven't built, so much content I haven't published, so many details I think could be better. Then this came out of nowhere, and all that excitement sank at once.

I know the issue needs more back-and-forth, and the details still need to be worked out.

But understanding that doesn't mean I can accept it right away.

When you build something bit by bit, it really hurts

After so many years as a developer, I know that making a product good and keeping it running takes far more than writing code.

Yet when it's a product you're building from scratch yourself, you still pour a lot of feeling into it.

Squeezing out a little time every day to fix a problem, add a bit of a feature. Making a video to see whether anyone is interested. Getting feedback, and changing things again.

Gradually, much of the free time in my life became connected to it.

When I hear audio that would be good for learning, I want to try it for recognition. When something feels awkward while I'm using it, I note it down to fix. When a message comes in from a user, I keep thinking about solving the problem as soon as I can.

All those changes, added up one by one, became the YomiPlay of today.

I sincerely hope it can help some people who, like me, are learning a language.

When you can't follow, there are clear subtitles to read; when you want to speak, there are the right sentences to follow; and even in a busy life, a few spare minutes are enough to keep learning.

Now that this has happened, it does hurt.

It hurts to think of the time I put in, and of all the hope I'd been building up.

I wrote this to admit it honestly: I truly care about this thing I built bit by bit. Seeing it hit a wall like this, I can't just shrug and say "it's fine."

What's next — perhaps accepting how hard it is for an individual developer to meet the requirements

About the removal in China, I'll keep looking into the exact reason and what needs to be done next.

When there's clear progress, I'll let you know.

For now I don't want to promise too much, or rush to give this a positive ending.

Today, I just wanted to write down honestly how this moment feels.

Thank you to everyone who has used YomiPlay, sent suggestions, and helped test and share it. Your feedback and trust have shown me that these months of work really did help some people.

October 24, Programmers' Day.

I meant to write "Happy Programmers' Day." I ended up writing this instead.

The regret is real, and so is the heartache.

Once I've had a little time, I'll keep following up and keep working on the problems in front of me.

But today, I want to allow myself to be sad for a while.

After all, I have really put my heart into building it.