I reverse-engineered TraceTogether, for the “right reasons”

A Software Engineer passionate about public good projects and making technology to serve society en masse.
Search for a command to run...

A Software Engineer passionate about public good projects and making technology to serve society en masse.
No comments yet. Be the first to comment.
HS (Harmonised System) Codes help classify customs authorities and businesses around the world to ensure appropriate import/export control. This system recursively classifies a product into finer granularity of categories. Figure 1: A simple exercis...
Jan allows you to deploy and run LLMs on your Windows or macOS computer! 16 Gigabytes of memory and a M1 chip was enough for me to run Mistral locally. Now how do you take Jan and use libraries like Langchain? https://jan.ai Local API Server Click ...
My talk at PyCon Thailand 2023 on the security aspects and possible attack vectors of LLM Applications, tailored to both product people and engineers! https://youtu.be/_fvk_Qa5OsM Thank you PyCon TH team!
Looking for a flat for rent, with LLMs
Code generators replace mindless coding with productivity; a pure function that produces predictable code, given a (set of) input(s). Generating boilerplate classes or templates — a common use case for Codegen. Use-case: Generating Classes We will be...
When TraceTogether was rolled out in Singapore, I geeked out with the BlueTrace Protocol and the basics of how it worked. However, with my experience of volunteering for the migrant population, I knew that we needed translations, badly. We needed translations if we wanted to an effective deployment of TraceTogether in the vulnerable population.
With their little command over English, would most of the migrant workers be able to effectively use TraceTogether?
I immediately texted everyone I knew, working with GovTech or SingHealth. I contacted GovTech on a few channels to connect me to the right person. I was surprised at the speed they responded with contacts! Finally, along with active help from Sudesna, a recent NUS-grad young physician, I got a few contacts to move forward.
I was anxious to get the translations rolled out. I needed to start translating by the time I reached the correct person-in-charge. So, as any sane human would do, I started a Google Sheet, and tried to type in text from the app interface. Soon however, I realised this was unsustainable as some of the hidden screens would remain untranslated.
So, I took the Android app, and started reverse-engineering. I used a tool named apktool to decompile the app, and looked for the file containing all the “strings of text” used throughout the app. Luckily, I did find the English resources file.

However, it was XML, and I needed to spit out a CSV/Excel file for it to be any good. Developers always try to automate everything. Spirited, I did write a simple Python script to convert this document into a CSV, uploaded to Google Sheets and started translating.
I was happy. I felt relieved. Now, all I had to do was to hand this over to the responsible team to be implemented.
Finally I found a person from the Hive Team coordinating UI/UX efforts of TraceTogether. They were delighted to see the efforts, however had to let me know that, the (then) current version of the app wasn’t designed to be multilingual, and a new version with new strings would be released soon!
Altho, not all of TraceTogether was translated by individual contributors from the members of the public. My translations were partially accepted to some of the untranslated parts of TraceTogether. The Team was very aware of the need of the migrant population, and started their own effort of translation even before me! However, as people with hearts, they always did try to encourage us volunteers, and made opportunities for us to contribute here and there.

We started working to translate the newer features of the app. One of the first features I translated, was the SafeEntry check-in feature. I still get excited to see my translations on the app.
I believe allowing the public to participate is empowering us, giving us a feeling of achievement as we could contribute as much as we could, in helping to keep this tiny island we call home, safe. Thanks, the TT TEAM!
And, I got a cool TraceTogether T as a token of appreciation :’)
