The profile repo
The first repository I ever pushed to GitHub is called Kaushik-Sss. It was created on 8 July 2021. I remember opening a browser tab at my desk in the hostel, signing up with my PSG Tech email, and picking a handle. The handle I actually picked was Kaushik-Ss with two s letters. The repo name has three because I renamed the user later and never bothered to rename the repo, and now the whole thing sits there with a slightly wrong name and I have never once cleaned it up. That is fine. It is the record.
Kaushik-Sss is the special user-slash-user repo that GitHub uses for the profile page. When you create a repo with the same name as your account, its README shows on your profile. I did not know this the first day. I learned it a few weeks in, made the repo, and started editing.
The current README, which I just re-read, is a snapshot of a person I remember being. It has a waving emoji, a Mona Lisa GIF from the GitHub CDN, a wakatime badge, a github-profile-trophy vercel embed, and a list of bullets that reads like a resume for someone who has not built anything yet. Information Technology student at PSG College of Technology. Currently working using Python. Currently working on my problem solving skills. Looking to collaborate with anyone. Tech stacks known C, C++, Java, Python and SQL. Gmail. LinkedIn. Twitter. HackerRank. LeetCode. CodeChef. Pluralsight.
Reading that list back, the thing that catches me is the Pluralsight link at the bottom. PSG had given us Pluralsight access as part of some campus tie-up, and I remember thinking that listing it alongside my LinkedIn made me look serious. It did not. It made me look like a college kid who had access to Pluralsight. From the inside, listing all the platforms you have accounts on is how you signal you are trying.
The commits tell the same story. Twelve total. One initial commit. Eleven titled "Update README.md", made through the GitHub web editor. I did not clone this repo. I did not learn git for this one. I sat on the web UI and clicked the pencil icon and typed. Each edit was another badge, another emoji, another link, trying to make the profile look inhabited. The last push was in September 2022.
What signing up for GitHub felt like
I want to be honest that I did not sign up for GitHub because I had code to push. I signed up because a senior in my department had a profile with a good-looking green squares chart and I wanted one. That is the true origin. The code came later. The account came from wanting the badge.
The green squares thing matters because it is what pulled me toward committing regularly. The first summer, I would open the profile page, see three squares from three days of README edits, and feel a small pull to do a fourth. The pull was cosmetic. A lot of what I know about programming today started as a cosmetic pull to keep a streak alive.
The second repo
The second repository is called Cosmetics-ev.io. It was created on 1 October 2021, three months after the profile repo. It is the first repo where I actually wrote and pushed code.
Cosmetics-ev.io is a Discord bot. ev.io was a browser-based FPS I played that year. The game had a storefront that rotated player skins and weapon skins every twenty-four hours, and there was no in-game notification for the rotation. You had to open the store page and check. My friends and I had a small Discord server for the game, and I decided the bot should post the rotation every day.
The commit history has thirteen commits. The messages read like a person learning what a commit message is: "Initial commit", "Add files via upload", "Update cosmetics.py", "Add files via upload", "Delete cosmetics.py", "Add files via upload", "Update main.py" five times, and "Client secret key patch" tucked in between them. That last one is the honest one.
The code itself is basically one file, main.py, about 130 lines (there is also a requirements.txt and a mystery zip called view-sourcehttpseviogroup189.zip sitting next to it that I never touched). It uses the discord.py library, hits https://ev.io/storefront to get a JSON payload of the current rotation, and posts a Discord embed for each skin with the title, tier, cost, and thumbnail image. The thumbnail URLs are constructed from the skin name by lowercasing the first letter and appending _head.png. If that returns a 404, the bot retries with a URL-encoded suffix that means "(1)", because some skin thumbnails on the ev.io CDN had that suffix and I had no idea why so I just tried both.
The bot loop is embarrassing and I am going to describe it honestly. Inside the on_message handler, after checking for the "!b" prefix, the code enters a while True that pulls the storefront, loops the skins, posts an embed per skin, then time.sleep(86400) inside an async handler. That means the whole bot blocks for twenty four hours after each rotation dump. If any user sent another command in that window, the bot would ignore it, because it was sleeping on the event loop thread. I did not know what an event loop was.
The other thing that jumps out is that the Discord bot token is committed at the bottom of the file in plaintext. It is a real token sitting in main.py. I set the repo to private, which is why nobody stole the token, but if I had ever flipped it to public, the token would have been scraped inside minutes. Private-by-default saved me. This is a lesson I did not know I was learning at the time.
What the second repo shows I was trying to do
The Kaushik-Sss repo shows I wanted a GitHub profile. Cosmetics-ev.io shows what I wanted to do with the account once I had one. Not a portfolio project. Not a resume item. A bot for a Discord server of maybe eight people who played ev.io and wanted to know when the skins changed.
The code is bad. The commit history is bad. The token is checked in. The sleep is on the event loop. But the thing worked for months. I ran it off my laptop in the hostel until the laptop went to sleep, then I put it on a replit that eventually stopped running, then I gave up and the bot died.
If I had known then what I know now, I would have kept the token in an environment variable, put the poll on a real scheduler, and hosted it somewhere that did not sleep. But if I had known then what I know now, I would probably not have written it at all. The thing that got me to write the bot was that I did not know it was hard. I just wanted the Discord channel to have the rotation in it.
The two repos as origin markers
These are the two repos that exist on my GitHub for the second half of 2021. There is nothing else. No side project, no course dump, no dotfiles repo. Just a profile README I edited eleven times, and a Discord bot for a browser FPS.
See also
- /blog/college-python-utility-scripts, the scripts that came right after.
- /blog/setting-up-for-competitive-programming, the CP setup era that followed.