My journey self-hosting common-voice - What a wild ride!

My friend Ranjith asked me if I can help out implementing an alternate authentication system for Common Voice. Common Voice is a platform for collecting voice dataset for languages other than English. Swecha, a local organization, wanted to collect voice samples for my native language Telugu through their own self-hosted version of Common Voice. They will use these voice samples to train LLM models.

It sounded like a nice challenge and a good cause. So, I agreed and went down a deep rabbit hole. I will write down all things I encountered as I tried to self-host this application.

2023 year in Review

2023 has been a fantastic year for me. I have delivered a lot of projects at work. My first child was born. I got promoted as a staff software engineer and a lot more. I want to jot down all the things that I remember as much as I can.

On burnout

I have never suffered from prolonged burnout, but I do experience occasional short-term burnout that can last a few days to several weeks.

Balancing code review requests across my team

I manage the frontend team at Kisi. A new senior software engineer joined us in May. He is totally up to speed, but we haven’t assigned a lot of code review work to him yet. I want to understand what is the distribution of code reviews and balance them evenly across my team. You will see how I used ChatGPT as my coding assistant to generate this data.

Running typescript app with pm2 and tsx

You can run node server apps in pm2 with ts-node just by simply declaring it as dependency. As always there is a catch, ts-node by default use typescript compiler to typecheck and then run the code. There is way to disable typechecking via tsconfig.json file. { "extends": "ts-node/node16/tsconfig.json", "ts-node": { "transpileOnly": true, "files": true, "compilerOptions": {} }, "compilerOptions": { // typescript options here } } Reference: I had assumed ts-node had no way to disable typechecking and looked at tsx instead.

Short anatomy of node-redis client

I am trying to write simple redis-client in rust. As part of that exercise, I have read the source code of Node.js Redis Client. I want to jot down some notes on how it works.