2022-03-13
TL;DR Did some web projects and scripting. Mostly Python and VueJS. Wish to relearn react sometime soon. Picked up Rust and Flutter. Data visualization is fun.
This is the big and long stuff. Worth writing a whole post about but I probably won't do it justice now. Saving that one for when the project finishes.
So, the pandemic hit around 24-25 months ago. My university closed on March of 2022. I tried out a lot different stuff during the first couple months. Within that period I became quite invested into Valorant and its professional esports scene. Valorant is a first person tactical shooter game. The tactical bit is important. It involves economic decisions, strategies and game knowledge. There is a lot of data involved and significant opportunities of doing things with this data.
The game revolves a lot around shooting and eliminating players on the opposite side. My goal was to keep a record of where an elimination occurs on the map and associating them with the eliminator and the victim. Then I combine the data of all rounds played in the match (it is usually a 24 round, first to 13 wins system) and plot the location on the map. There are filters available to sugarcoat the final visualizatin such as displaying information associated with only certain player(s), eliminations occurring only in a certain period of time, or if the elimination was in favor of the attackers or defenders.
But you get the general idea. It is then really easy to analyze the most frequented locations of a player, places where they are strongest/weakest, which spot generally favors them the most etc. This analysis can help players playing to their strength, learn their weaknesses or strategize around a location. For casuals, it helps them to get better by simply pointing them where they did wrong, in a macro perspective. For professionals, to whom it matters the most in my opinion, even slight changes can give them an edge over other competitors. I follow the Valorant Esport pretty regularly and I have seen players/coaches/analysts going over these through some tedious process. This aims to help them somewhat in what they do best.
Coding the initial prototype was easy. I got hold of some match data using the local game client and used them. But to automate the whole process, I would need Riot's Developer API. You need an API key with production-level access to fetch match information. But to get a production API key, you need an application to show them. In short, you cannot write the app if you don't have the match data which you get from the API, and you cannot get the API if you don't have an application to show. Fortunately, I scraped some data manually as I mentioned earlier but this is still soooooooo not-standard-like. They have introduced some sort of a stalemate here. Well, anyways, I applied for the production key last month which got approved 3 days ago (yay for that I guess and thanks Riot!). Now all I need to do is implement their authentication and get this thing out of prototyping stage. This will hopefully be my main focus for future weeks.
A project that had some meaning behind it while at the same time being utterly pointless. Marketed as "no login shareable calendars for everyone". It is really very easy to use google calendar for sharing a specific set of events (as a calendar) with other people. But no one else is permitted to add/modify events. This app lets users create a permalink to a calendar that is editable (create, read and update only) by everyone that has access to the link. Doesn't let anyone delete events.
Sounded good on paper but it is rare to find someone without a google account. That alone makes this app lot less useful. Tried to implement almost all fancy actions you can perform in a calendar app. Live at https://permacal.live. No "traditional" backend. Vue and Firebase.
Anything can be a username. This obvious fact hit me like an epiphany. It really shouldn't have. But it did. Say, someone gave you a word and said, is it a username or a regular text? What do you answer? You can answer only one of the two. Think. Even if the word is not in any dictionary, it can be a phonetic of some other language. What's the move? Unfortunately, There is no winning here. You gotta take the L.
I attempted to make a script that takes in a screenshot, blurs out anything that seems like a username. My first thought was that I would have different templates for screenshots from different websites. One for reddit, one for twitter and so on. The script does a multi template match with OpenCV and blurs out similar parts to the template. It seemed to be an easy solution; until it wasn't. That S o a B had an accuracy of ~44%. That is hella low by any standard. For what its worth, it works pretty good on apps like discord/messenger. But most websites have a lot variety in how they decide and give users the flexibility to display their avatar + handle + tag + flair + god knows what else you can put in. I discussed it with a bunch of peeps. A friend told to train an R-CNN model. I'll be honest, my surface level ML/AI knowledge is as useful as pre-Cars McQueen on offroad. It's probably a no go. Maybe revisit this in a few years?
That has to be the most generic name/header. Very simple form based web tool to create standardized test question papers. It aimed to be a basic alternative for TestMoz. Only supports writing questions, cannot use as a test-taking platform or grade them. A friend wanted to type out questions instead of writing by hand but also didnt want to use Word. This is a little bit faster to work with and provides good functionality for equation writing. Though that requires basic grasp on the LaTeX or AsciiMath format of writing equations.
Hope to redo the project as an LMS platform with solid features. This one has terrible support for images. If you do not have technical knowledge or aren't pretty good with computers, its nearly impossible to use this. Would not recommend this. I do use it personally. Served as a really good learning experience for Vue.
Wordle took everyone by surprise this year. From people in my social media to my friends, everyone and their gramp was playing it. The craze really started sometime after new year but I believe it has existed for quite some time prior that. Fun game obviously. Took a simple idea, gamified and executed it quite flawlessly. Quite. Still not onboard with the NYTimes deal. Personally dislike their model and views.
The game itself provides some great insights into video game designing. It has probably started a genre of its own. There are literally countless spin-offs. Worldle (world map), Lewdle (you know what this is), Heardle (music), Quardle (4 words at the same time), Squabble (wordle battle royale). I was not going to miss out on that train. Every few weeks, some trend (aka "meta") is going to shake the world. The most effective play is to embrace the meta, as some would say. Not to brag, but I was quite good at vocabulary and it made wordle really fun. I spent some days doing hour-long "wordle sessions" on Wordle Unlimited. It started getting repetitive after some thousand words. So I wrote a python script that solves the daily wordle at midnight (00:00 GMT+00:00) and tweets the colored table solution thingy with a bot. Bot is a flask server with tweepy. A cron job triggers an endpoint every night.
Farmed some impressions and reach. Needless to say, meta died out after few weeks.
I have always wanted to be comfortable on a systems programming language. Like C. Real C. Granted, I have coded a lot of C. But I would not consider myself within a mile radius of being proficient. I never grew that knack for it. Some good friends of mine have been nagging me for learning rust for a few years. Never got around doing that. So I never really understood why it was the most loved language. After tinkering a little bit with it this past month, I kinda see it. Still want to learn C (and LISP) someday. But for now, rust is where it's at.
Robot Operating System is not actually an OS. In Layman terms - ROS : Robots might be equal to React : Web Apps? I really should not go around throwing analogies in a field I'm not experienced in but the idea that I got is that ROS is basically a set of tools — providing software frameworks as well as hardware abstractions — for developing robot systems. My major is in robotics. I am not a fan of academia, or even the entirety of my major; but this has kept me interested so far. For now, I am studying autonomous vehicles (mostly simulation) to get the hang of robot control system.
Let's see what else I've got. I did some mobile development in Flutter and wish to continue. Flutter woke up the inner React Fanatic in me. I am doing some side projects with React now. I also cooked up a CMS-like system for blogs that was not so impressive. I have been trying out data visualization for arbitrary stuff which I wish to polish out and release someday.
I'm reading and writing more too now, which can be a good thing.