← Back to context

Comment by arionmiles

7 days ago

By solving problems in my life.

When I was in high school, I needed to automate downloading torrents (I was downloading tons). So I plugged together a bunch of tools including:

1. QBittorrent to run a FileBot script once the file was finished downloading.

2. FileBot script was a Groovy script that renamed and rearranged the contents into proper folders and

3. A small Python script that called the Telegram API to send me a notification that the download was complete.

Then I got into college and learnt they had a web portal which showed metrics like attendance (which turned out to be important) and test scores. So I wrote a Telegram Bot that would scrape these figures and save it into a database and run some calculations such as

1. Tell me how many lectures I needed to sit through to get to a required threshold.

2. If I decided to bunk college on certain days, how much attendance I'd end up losing.

Then I opened up this bot to allow my friends to register. Near the end of the first semester, the test scores were only available on the website but there was no direct link to that page from the public portal. I had found it out playing around on it and noticed they had directory listing enabled on some endpoints which led me to those "unlinked" but functional pages.

I wrote a neat feature which would allow querying this page and send a screenshot of it via my bot. I was running this entire thing on a Raspberry Pi 3B at my home and one morning I woke up to see logs from students I didn't know trying to use the bot (and ended up crashing it haha). Word had gotten around that test scores are accessible only through my bot.

It was one of the best projects I ever worked on. At its peak, I had 300 DAUs and I would hear from my friends in other departments that their entire batch is using Telegram solely for my program. I was also able to monetize it towards the end which felt nice.

These projects served as a learning tool for a lot of stuff for me. I learnt how to manage VMs, containerization, async I/O, DB and ORM integration, how to write good docs.

I still miss it.