My story: During school days, when friends were merely playing computer games, I was creating games. That's how much I loved programming. My story has a lot of twists though. In 1998, schools had few computers, so my school devised a logic test. Only those who passed could study computer science (CS). I passed easily but classmates said CS is tough so I opted for commerce. My parents said that CS is the future and forced me to choose CS. My teacher said my math and physics score aren't good enough, so I may struggle with CS, and recommended commerce. Overjoyed, I told my parents this but they insisted on CS. After almost failing my first CS test, my CS teacher motivated me, realizing my struggle was just a lack of practical experience with computers. My uncle gave me an old abandoned computer to practice. A classmate shared a book containing BASIC game program listings and I understood how games were made. I accidentally discovered the MS-DOS manual and discovered various OS commands. Soon I started building my own games and was among the top programmers in class. My math and physics scores also improved, and I was among the top 6 rankers in class. When the dot com bubble burst, software engineers were losing their jobs and the scare (similar to how engineers are being laid off in 2025 due to AI) made parents and relatives force me to take up the '"safer" mechanical engineering. Even while studying mech I continued programming, and seniors were surprised to find me in the library reading CS books. I became a mech engineer, but took up a software programming job, loved it and decided to study software formally at CDAC. Due to MGPT's, only I passed the tough course in a class full of CS students. Got a job in a defence company as software engineer, eventually wrote CS GATE, got rejected by colleges due to my mech degree and finally MSRUAS which rejected me initially, called back saying that I could join the multidisciplinary AI course. I completed my MTech in AI, becoming the first ranker in my class and publishing research papers in the field of AI. I finally officially became a CS engineer and had a dream fulfilled.
Most of my initial programs were created on a 286 computer which didn't have Windows installed. Only MS-DOS. Black and white monitor (so I had to imagine the colors when creating programs). Max speed of the computer: 20MHz. Hard disk capacity: 30MB :-) It was only after my engineering course that I got an internet connection at home, so the below programs are a result of hard-work and self-study of API's and documentation.
Jump-up:
https://github.com/nav9/JumpUp
Some neighbour kids in 3rd and 4th grade used to enjoy this game (circa 1998-1999, when not many people had computers here). I guess it's because of the simplicity and the funny sounds I programmed into it. This was the first game I programmed (in GW-BASIC) when I was in 9th grade, and my little brother was crazy after it. He even beat my highscore! (he was too young to know that it was partly dependent on chance). The game was originally meant to have a scrolling screen like Google's dino game, but at that time my programming skills were very basic.
https://github.com/nav9/Bricks
A game with ten levels of increasing difficulty and challenges. Created when in 10th grade. Was introduced to the term "cheat codes" at this point of time, and introduced this into the game. At times it gets hard to hit the last few bricks, so I recommend just using the cheat codes to see all the levels :-)
Maze
https://github.com/nav9/Maze
I used to create mazes on paper, and decided to program one too. It was a daunting task, setting up the arrays on large sheets of paper that I stuck together and then replicating the same on the computer. The maze was programmed with portals and wells (which you might fall into and die). It was also divided into 4 sections which made it very difficult to solve, because you had to remember the previous screens to find your way. My classmate tried it for three hours, and said he couldn't solve it (to date, I'm the only one who has solved it).
Digger
https://github.com/nav9/Digger
This was one game I really wanted to program. Had played it many years back on a cousin's computer, and wanted to play it at home too, so just created it myself. Wasn't familiar with Q-BASIC graphics at that time, so I used ASCII characters. It's a game with a digger machine digging through mud, collecting diamonds. Monsters try to destroy the machine and the machine is able to shoot at the monsters or drop sacks of money on them to kill them. The collapsed sacks can be collected to get more ammo. I created an initial version and then improved upon it. You can play the original retro digger game here: http://www.futrega.org/digger/
Calculator program
https://github.com/nav9/Calculator
Okay, this one was simple, but it was programmed to be user friendly by allowing the user to navigate from one key to another using the arrow keys and by providing a square root option (which I'm surprised that many calculators strangely still don't provide).
Mock antivirus program
https://github.com/nav9/MockAntiviruses
You'd recollect I was using my uncle's computer (which was infected with the NYB virus which we couldn't remove because the computer couldn't run any of the newer antiviruses), and I thought of pulling a prank on him. I created an antivirus interface which was pretty similar to the real MSAV antivirus interface of those days. The program pretends to scan the computer and pops up an alert that it found a boot sector virus which can't be removed. My uncle and my dad actually believed it! :-)
Vein: An MS-DOS OS interface, like Windows
https://github.com/nav9/Vein---MS-DOS-OS-Interface
Since the commandline required a lot of typing and since the computer didn't have Windows, I created an interface (while in 11th grade) for interacting with MS-DOS. Pretty much like how the Windows graphical interface was created by Microsoft. This was a period of time when I discovered the MS-DOS help manual (similar to the Linux man pages) and spent quite some time learning a lot of new functionality.
Digger forever
https://github.com/nav9/Digger
Yes, the name is based on "Batman Forever" and the "forever" meant that I didn't intend to create another version of Digger after this. I wanted to make my Digger game closer to the actual game I had played at my cousin's house (now available here), so while doing my engineering, when the ISTE student chapter organized a state level hobby project competition, I borrowed my room-mate's computer for two weeks and created Digger with BASIC graphics (presented it along with my other games). And guess what? I won the competition with a Rs.2000 cash prize! Roommate got a generous treat and seniors were all-praise :-)
Message decoder program
https://github.com/nav9/Decoder
Converting text from English to a cryptic language and vice versa being slow, I wrote a program for it. Also kept it flexible for it to be able to accept a new code sequence too.
Mechanical force visualization software
https://github.com/nav9/Unipar
A Civil engineering lecturer at my college asked me if I could create for him, a program which would show a 2D representation of the normal and tangential forces on a beam. He also wanted a simple graph to show the force distribution. By this time, I had derived 3D projection equations on my own (I didn't know this would be available on the internet, so I had actually drawn projections on paper and derived the equation by using whatever I learnt in trigonometry), so I took my lecturer completely by surprise by using the graphics of C (using the Turbo C compiler) and created the beam in 3D, as an application with full-fledged menus and an interactive graph. You can actually rotate the beam in 3D using arrow keys, feed in various values using textfields (all UI elements were manually programmed) and also load/save the values. When I look at the program today, I find it hard to believe that I actually programmed it at that age!
![]() |
| I now know the colours are atrocious. Engineers aren't taught about how to use colours well. However, now I've learnt the right use of colours from interaction designers. |
Ben
https://github.com/nav9/Ben
I wanted to make a game like Dangerous Dave, and I began with Ben. But this program was left incomplete, since BASIC does not have the concept of threads. So on adding a monster in the second screen, gameplay became too slow (could have also been due to some other issue, but I didn't have the time to look into it back then). Was able to get over the tough part of programming multi-key input to make Ben jump around.
Robot arm project
Evolutionary algorithms
Greasemonkey for auto-clicking a web-page
A certain page required clicking a link every time I visited the page. So I thought I'd automate the process with this code snippet.
var element = document.getElementsByTagName("a"); // get element by tag namevar theEvent = document.createEvent("MouseEvent");
theEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 30, 79, false, false, false, false, 0, null);
//var element = document.getElementById('link');
element[0].dispatchEvent(theEvent);
Recursing directories
https://github.com/nav9/recursor
Resting my eyes
https://github.com/nav9/System-Tray-Program
What's the point of knowing VC++ if you aren't using it to your advantage? I borrowed some open source code for a program which sits in the system tray in Windows, and modified it to start at logon and pop up a message at a specified interval of time, alerting a person to rest their eyes for 5 min. Strained-eyed friends and I found this program to be a boon. Of course when I found Eye Leo, I switched to it immediately.
Popup Destroyer
https://github.com/nav9/PopupDestroyer
A poor security setting created by someone, made an "Authentication required" popup appear whenever I opened a new page on my browser. The user just had to press Esc to make the popup go away and it was very annoying. So I wrote a sentinel program in VC++ to run in the background, scanning all window titles for the "Authentication required" string. When it found one, it'd immediately issue the Esc keypress command to the window automatically and the window would get closed. I used to enjoy watching those windows disappear while I continued with my work happily :-).
Volunteering website
https://github.com/nav9/EmployeeVolunteeringWebsite
Our volunteering team in Tata Power SED needed a website and we decided to create it ourselves. I created an interactive prototype in 3 days and soon other volunteers pitched in to improve it further. We made good use of free and open source code available on the internet.
hashCSV
https://github.com/nav9/hashCSV
This I created for a friend in the field of data analytics, who needed to hash specific columns in CSV files. More about it here.
Snacker
https://github.com/nav9/snacker
At one of my previous workplaces, they decided to buy evening snacks everyday. Our office assistant used to go around asking a different employee everyday what snack to buy. Since this became a bit annoying for employees to choose (and others to grumble about the choice), I decided to automate it :-) I created a Java program which our office assistant could use, which would randomly select a snack and display it on the screen. A 'recent snacks' list avoided redundancy and if he rejected a snack, he'd be shown another random option. After a while, I noticed he wasn't so keen on using it. I investigated and found that he didn't understand the concept of brackets and commas in the JSON file which contained the snacks list :-) So I converted it into a CSV which he could open and edit in MS Excel. Obviously everyone was amused at an "AI" selecting their snacks for them. The COO said "...when we write a book about our startup, this is going to be one of the anecdotes in it...when we had trouble selecting snacks, one of our engineers wrote a program for it".
https://github.com/nav9/audio_video_synchronizerThis is just a demo that needs a lot more work to be production-worthy. One of my clients had a problem with Zoom and Google Meet network traffic causing audio-video async in the recorded meeting videos. We couldn't fix the issue even using timestamps, since the async happened within Zoom's server/apps itself. So on a long weekend, I created this program as a demo to show that with a bit more work, we could indeed use AI to auto-fix the audio-video async. MediaPipe detected lip motion, and speech recognition was used to match the pauses in speech. The client couldn't proceed with it unfortunately, because of their compute budget being tight.































No comments:
Post a Comment