Featured on the Matrix homepage
Matrix is SSPAI’s writing community, where we advocate sharing genuine product experiences and practical insights and reflections. From time to time, we select the best articles from Matrix to showcase the most authentic experiences and perspectives from users.
Articles represent the author’s personal views; SSPAI only makes minor edits to the title and formatting.
According to estimates based on CodexBar’s statistics, redoing Weishi this time burned through nearly $20,000 worth of tokens. That doesn’t even count the costs of Suno-generated music, TTS-synthesized narration, OSS storage, and servers.
No funding, no fees, and no business plan either. I spent this money simply to make something I’ve loved for many years into the way I picture it in my heart.
The story starts ten years ago.

In January 2015, I made a small app called “Weishi” and shared it with everyone in a post on V2EX when it launched. Back then it supported iOS 8 and came with built-in databases of the Complete Tang Poems and Complete Song Ci, searchable offline. It didn’t have many features and the interface was plain, but it was the first time I turned my hobby into something I could bring out and share with others.
Ten years have passed. In between, it was shelved for many years, and I almost thought it would just stay on an old hard drive. This year I rewrote it from scratch using SwiftUI and WidgetKit, with a few AI coding assistants by my side.
This article is about Weishi’s past and present.
Putting a poetry collection in your phone
After graduation, I went to a large internet company in Beijing to do mobile development. After a few years of work I had built up some experience, and a thought gradually surfaced in my mind: I’ve always loved classical Chinese poetry—could I turn this hobby into a useful little tool and share it with people who love it too?
And so the first version was born. It put the Complete Tang Poems and Complete Song Ci into your phone, searchable without an internet connection. In an era when data was still precious, being able to open it up and read whenever you wanted was quite a highlight. After launch, I received a steady stream of user feedback, and two types stuck with me most: one group wanted annotations and appreciation, so they’d have something to lean on when encountering obscure allusions; the other wanted pinyin, because many characters are recognizable by shape but they weren’t confident about the pronunciation.
Later Weishi gradually gained more users, at its peak nearly 100,000 people were using it. For a small app made in my spare time, that was far beyond my expectations. So outside of work I kept updating it on and off, releasing 6 major versions in total. I’ve always kept those user suggestions in mind.
But what one person can do in their spare time is always limited, and many ideas sat on the to-do list for years.
At the end of 2016, I left the company to start a business. In a startup, the time and energy available for a side project are very scarce, and my focus shifted from client development to server-side work and the company’s technical management. Around 2017, Weishi finally came to a stop and was shelved.
After the startup failed in the following years, I returned to a big company and went through a career transition. Life pushes people forward, and that poetry collection in my phone drifted further and further away from me. But I never truly let go of it in my heart.
The people who once used it, the ideas I never got around to finishing—they’d pop up from time to time to remind me: this thing is not finished yet.
Starting over
What made me pick this hobby back up was the major improvement in AI capabilities this year. Having been away from client development for so many years, if I had to do an app from scratch to a level I was satisfied with, alone and only in my spare time, I wouldn’t have dared to imagine it in the past.
But this year, working with AI agents, it became feasible for the first time.

Over ten years, iOS and Swift themselves have changed so much that rather than patching up old code, it was better to start over. My final decision was to start from zero, not keeping a single line of old code. The tech stack was settled quickly too: the entire interface in SwiftUI, widgets with WidgetKit. Widgets can only be written in SwiftUI anyway, and the main app and widgets share one set of views and data layer. For a project maintained by one person, this combination is the least troublesome choice.
For the new Weishi, I settled on three words: beautiful, simple, poetic. I want it to be “a poetry collection in your phone,” a book you’re willing to open occasionally and that won’t disturb you once opened. In Weishi, poetry isn’t just for silent reading—it can be read aloud, it can be sung, and it can be turned into a painting.
The new Weishi
When you open Weishi, the home page shows a poem for the day. The choice of poem follows the twenty-four solar terms.
I really like this arrangement. The solar terms themselves are poems the ancients wrote to time—Start of Spring, Qingming, White Dew, Frost’s Descent… Marking the days with poetry feels more like life itself than a cold date.

The “Poetry Note” widget on the lock screen is the feature I use most myself. Every day when I pick up my phone to check the time, I see a line or two of poetry along the way—no need to open the app, no need to do anything, it’s just there.
The lock screen widget has very little space, and the system renders it in monochrome, so all you can use is glyph shape, font size, and whitespace. Making one or two lines of poetry still comfortable to read in such a small space is something I’ve mulled over again and again.

The new Weishi also includes a set of dynamic wallpapers: the landscapes are drawn stroke by stroke. The effect I wanted was like watching someone paint on paper, not watching a special effect—too fast and the mood is gone, too slow and people lose patience; the balance lies entirely in a rhythm tuned bit by bit.

Many of the ancients’ poems were originally meant to be chanted and sung. Reading only with the eyes always feels like something is missing. So in this version of Weishi, poetry isn’t just for silent reading—you can hear it read aloud (TTS), and you can hear it sung—I made these tunes one by one with Suno.
The first time I heard a familiar poem turned into a song, I found that the words were still the same words, yet it seemed to have entered my heart in a different way.

“Painting in poetry” is an old saying, but this time I wanted poetry to truly “enter the painting.” Every poem can be turned into a painting, giving those lines you’ve read many times a form you can see.
As for the annotations and pinyin that users most often asked for back then, they’re all in this time—every poem can show annotations, appreciation, and pinyin. The day I finished this feature, I also thought of those early users; these features arrived ten years late, but at least they’re not absent.
Every part of the new Weishi interface, I’ve made as beautiful as I could within my ability, according to my own aesthetic. It may not suit everyone’s taste, but every font size and every bit of whitespace was carefully chosen by me.
Finally, Weishi is still free. It has been that way since ten years ago, and it’s the same this time.
Writing code with AI
This rewrite was done in my spare time together with AI agents. There’s a lot of discussion online about AI programming, so here are my own takeaways.
- AI builds the skeleton fast. Starting a SwiftUI project from scratch, sorting out the relationships between the data layer, the main app, and the widget extension—these tasks that “you know how to do but are tedious to do” are completed by AI quickly and reliably.
- Filling in what I’m not familiar with. After the end of 2016, my focus shifted to server-side work and technical management, and I missed many changes to iOS APIs in between. How to plan a WidgetKit timeline, what sizes and limitations lock screen widgets have—AI can quickly give a working starting point, and from there I read the docs and tweak the details.
- Polishing details. Many technical details, if I had to grind through them alone in my spare time, might take a very long time, or I might even give up halfway. AI gave me enormous help in these places, letting me spend my energy on what I really care about.
Of course, none of this help is free, and the actual process wasn’t smooth sailing either. Looking back, the truly difficult parts were different from what I had imagined: getting AI to build something is actually not hard. An interface, a feature, an effect—once you explain it clearly, you soon see a version that runs. The hard part is making it fit your aesthetic, and deciding which features to keep and which to cut. In the end, it’s taste and trade-offs.
Neither of these has a standard answer, and neither can be explained in one go. You make a version, look at it, it’s not right, you scrap it; you make another version, it’s a bit better, still not right, you change it again. You finish a feature, use it for a few days, feel it disturbs the reading of poetry, and remove it. A huge amount of repetition and consumption hides in this back-and-forth. Most of the nearly $20,000 in tokens mentioned at the start was spent here.
Taste, after all, you have to do yourself.
At this point, what I most want to say is: AI can help you build things, but what it turns out to be is up to you. How large the text of a poem should be on the screen, how much line spacing to leave, whether to show punctuation, how many buttons should be on the page—AI can give “reasonable” answers to all of these questions, but between “reasonable” and “good-looking” there are often many rounds of tearing it down and starting over. Which version is the right one—only you can look at it again and again, revise it again and again, until that little nagging discomfort in your heart disappears.
There is another category of decisions, about “what not to do.” AI is very happy to help you add features, and none of them are hard to implement. But what I set for Micro Poetry is “beautiful, simple, poetic,” and in the end I did not add many features.
My feeling is that AI has made “building it” cheaper, and so “what it turns out to be” has instead become more important. Ten years ago I was stuck on implementation; ten years later I spend more time thinking, “Is this page worthy of this poem?”
In Closing
Ten years ago, I was doing mobile development at a big company, and in my spare time I wrote the first line of code for Micro Poetry; ten years later, still in my spare time, I rewrote it from scratch together with AI. In between lay one startup, one failure, one career change, and many years of shelving it.
Nearly $20,000 in tokens—converted into any kind of return, it probably isn’t very worthwhile. But if I had to choose again, I would still do it this way. In this one life of ours, there should always be one time when you seriously put in effort for the thing you love.
Micro Poetry is still a small app made by one person, and there are certainly still many things that aren’t good enough. If you’re willing to give it a try, I would very much like to hear your feedback and suggestions.
Download link: App Store · Micro Poetry (free)
> Follow Shaoshupai on Xiaohongshu, experience a wonderful digital life 🍃
> Practical, easy-to-use genuine software, presented to you by Shaoshupai 🚀