I am U-Zyn Chua. I build, research and write about technology, AI and the open web.
Posted on :: Tags: , , , , , ,

Tixie - your spelling companion

Spelling, or 听写, is a very familiar process for parents of Singaporeans with primary-school-going children, or in fact, for parents worldwide. Every week, each of our children is to learn two sets of words and phrases, one in English and one in Chinese, to be tested in school. Each set consists of 15-20 phrases and sentences.

A usual process for us would be first having each of our children study, on their own, the words or phrases for the upcoming spelling test, and once they are ready, passing us parents the list for us to read aloud to test them. I'm sure many parents in Singapore are very familiar with it. Rinse and repeat every week.

I created Tixie to facilitate the latter read-aloud process, allowing it to be conducted solo by the students only, without involving parents or another person.

Try it out at https://tixie.org. It is free to use!

Features of Tixie

Tixie's user experience consists of:

  1. Creating a spelling list.
  2. Read the list back, one line at a time, in optionally random order.
  3. Shows the final list in the order being read out to allow students to mark on their own.

Tixie code

To save time from having to recreate the same list if a child would like to retake the test, Tixie also automatically saves the list and provides a 9-digit Tixie code for the test to either be retaken at other times or shared with peers. Try out the code above.

Teachers can also pre-create a list and share the saved Tixie code with the students in class for their self-practicing at home.

Mascot 🧚

Tixie mascot

Tixie is a wordplay of tīngxiĕ (听写)and rhymes with pixie🧚. The logo is in vector form, designed and created by my 8-year-old daughter, Melinda, on Scratch (check out the source!).

She publishes her Scratch projects from time to time, give her a follow if you think her work is cool.

Serverless technology stack

Tixie is entirely serverless as I do not want to maintain servers and infrastructure if I can avoid doing so.

Frontend:

  • Pure HTML
  • Vanilla JS
  • Tailwind CSS
  • Served statically via AWS CloudFront CDN

I am not a big fan of monstrous and complicated build-steps. I deliberately chose not to use React, JSX, or any sophisticated JavaScript libraries. Vibe coding via Claude Code does help in managing vanilla HTML and JS codebase without over-complicating things.

Backend:

The backend is solely for saving and retrieving saved spelling tests; serverless architecture fits such requirements perfectly.

While I am not new to Lambda, this is my first time doing it in Rust. My past usage has been via Node.js. Cargo Lambda helps in local testing, and most importantly, it supports cross-compilation for ARM processors on my macOS-based laptop – allowing the final production code to run super efficiently on AWS Graviton, a highly efficient ARM-based processor and with very tiny memory footprint.

The code runs on AWS Lambda without requiring any runtimes, which Node.js scripts would. That helps significantly with the often-criticized slow cold start oftentimes associated with Lambda functions. Tixie's API is lightning fast and yet very light!

No artificial intelligence

While it is not meant to be a feature, it is crucial to point out that the current version of Tixie contains no AI components.

Speech is generated entirely on the client devices on which Tixie loads on. This is why there needs to be a language selection at the top, to allow language mapping to commonly-available voices on devices.

const shortlistedVoices = {
  en: ["Samantha", "Reed", "Flo", "Eddy", "Sandy"],
  zh: ["Tingting", "Ting-Ting"],
  ms: ["Amira"],
};

I have only tested these on some of the devices I have access to; if you would like to add other voices or languages to the shortlist, please drop me a note.

The project did not start out without AI. The early prototypes/experiments with some AI components, and that made it somewhat cost-prohibitive for a free app:

  • Voice-only use, using real-time voice AI API. Users can say "Next," "Repeat the word," or something similar in another language to control the flow entirely via voice. Users can leave their device face down when taking the test.
  • Automatic test setting. A user just has to take a photo of the test sheet given by the school, and the test will be automatically populated.
  • Automatic marking. At the completion of a spelling test, the user can snap a picture and have it automatically marked. This process involved prompt engineering and some fine-tuning, especially for Chinese handwriting recognition, and being a little bit more forgiving in handwriting recognition for the users, whom are often kids below the age of 10.

Early prototype

I made an early prototype. You can find it at https://uzyn.github.io/tixie/ while stocks last. Took only a few hours to make.

It was done without server-side component, with the list save-able entirely using URL parameters. My children were using these for the past few weeks before Tixie.org is ready.

Key takeaways with URL parameters for real-world use:

  • Apple's iMessage strips away anchor tags, the stuff after # in a URL.
  • Encoding and decoding gotchas for non-ASCII characters.

Enjoy

Let me know if you have any feedback, suggestions, bug reports or simply want to say hi.

Have fun with Tixie! https://tixie.org/

Read more