Hello World

Misc

Oct 20, 2024 at 23:00 pm

Oh Yes, "Hello World" wasn't the first word I said after I was born. Was it yours? Heck! I didn't knew anything about programming. I used my Windows 7 Computer to play games, store backup images and videos from my mom's and dad's phone. And Yes I would be lying if I said I was really a gamer. I played GTA San Andreas to drive cars, fly aeroplanes and shoot people for no reason at all!

You got the point, right? Not much of a programmer!

While I was good at Maths and Physics I got into university to study Computer Science.

The Learning Curve

I started exploring in the field, watched videos on Youtube, found textbooks and different courses. The biggest question was what I was going to start learning with?

  • Web development?
  • Machine Learning?
  • Competitive Programming and Problem Solving?
  • Blockchain?

I was amazed with seeing how many programmers and students flex their Codeforces and Codechef profiles. So I started by solving problems on these platforms.

Mahendra's Codeforces Profile

The venture of mine didn't last enough. And hence I entered into Web Devlopment and Open Source. I learned from various sources like Youtube, blogs and mostly from projects of other developers.

After spending hours learning stuff, building projects and participating in hackathons, I can now effeciently develop software applications using popular and widely used languages, frameworks, architectures and design principles.

While my go-to stack for any new project is Next, Tailwind, Prisma, PostgreSQL with Typescript, I can easly adapt to any framework. I believe that with strong grasp on the fundamentals there is nothing to worry about. I have experience in developing software applications ranging from web apps, SDKs to CLIs.

Projects

I have always tried to learn as much as I can with practicing more than just theory. I still remember how exctied I was to show my first personal website that I developed in Feb, 2023 using only HTML and deployed using GitHub pages. I use it to tell myself how far I have come. I was soon introduced to Git in an event.

Humans don't have a time machine but Programmers do!

Everyone newbie creates a todo app, so did I and it never finished. I was learning the MERN stack back then. Every time I completed a feature I used to find ways to implement it better. And eventually I broke the application myself until it got too messy and I couldn't fix it!

I started to read Nextjs docs and soon I found an opportunity to try it out. I applied for a web developer position in GDSC Club at my university. They gave a task to create a todo app. And so I created a todo app again! And yes, not only did I finish it this time but deployed it. I still use Tododo to create todos!

Soon I started playing around with various frameworks and developed two full stack projects for hackathons : Rhymes and Fables(solo) and Genekriti (team project). Oh I forgot to mention, Rhymes and Fables isn't maintained anymore because Supabase paused the project!

I alawys wanted to build CLI applications in C/C++ (becuase I loved Git and it's written in C). One weekend I came across this coding challenge by John Crickett that goes Build Your Own wc Tool . That sunday I launched my own version of wc-cli written in C++. Back then I didn't even knew how to link binaries in C++.

But I didn't stop there and studied OOPs from the textbook Object-Oriented Programming in C++. To apply the concepts I had learned I built my very own C++ library Vector. The library helps you simulate vetor quantities and perform all calculations such as dot product, cross product, vector addtion, vector subtration and much more. This helped me strengthen my knowledge of Constructors, Operator Overloading, Friend functions, Template functions, etc.

Now I am playing with LLMs and generative models and figuring how to use them in real-life. If I don't procastinate enough, I should finish that chrome extension powered by Hono, cloudflare,Gemini 1.5 Flash model backend.

I keep playing around with stuff, and I will sure add them up in my projects arsenal (if i don't procastinate xd).

Open Source

My interest in open source development started to rise. I used to spend (still do) understanding codebases of popular libraries, frameworks and software I used trying to understand how systems are developed, maintained, tested and scaled.

GirlScript Summer Of Code'23

The first adventure was participating in GirlScript Summer of Code 2023 (yes! it's not only for girls). I worked my way around the program, multiplied my skills in web development and most important version control. I contributed to 4 projects and merged 30 PRs in 3 months. I wouldn't say the work was too difficult but for a beginner it wasn't too easy. I documented all my work, issues and PRs throughout the program. Want to look at my contributions? click here

Hacktoberfest'23

Yes! You guessed it right. I made 4 PRs during Hacktoberfest and got my name in the Hall of Fame'23. And since I was among the first 50K devs to complete a tree was planted on my behalf.

Google Summer Of Code'23

I tried my best to get into GSoC'23 by contributing to The Palisadoes Foundation from November'23 to March'24. During that period I developed and improved components, fixed bugs in existing components, improved test coverage, refined their docs and even fixed multiple scripts in thier API.

Find my contributions in their frontend application talawa-admin and API talawa-api. Primary technologies I used in this project were React, React Testing Library and Jest for testing and GraphQL for developing API.

Although I did not make into the program, I learned a great deal by contributing to The Palisadoes Foundation.

Inspiration

Programmers like Ken Thompson ,Bjarne Stroustrup,Richard Hamming,Donald Knuth,Linus Torvalds,Jeff Atwood,Simon Willison,Justine Tunney,Aaron Swartz are like magicians to me. I want to be capable enough to atleast understand their thinking process.

Why Blogging?

The most important question you were reading this long blog for, right?

As I learn and progress everyday, I find that it's a drawback of rapid growth of technology that we jump from one thing to the other so fast that we forget to appreciate it.

Aaron Swartz writes:

Becoming a scientific thinker requires practice and writing is a powerful aid to reflection.

I have decided to take moments in between the jumps to write about stuff I am working on, stuff I've read and experiences I've had and so on.

But fundamentally this blog is not for you, its for me.

And I hope that you enjoy it anyway!

Whats's Next

I haven't got it all figured out! I don't even know where I will be in the next 5 years. But that's the fun. The choice is always yours.

Dr. Richard Hamming explains in The Art of Doing Science and Engineering

It is well known the drunken sailor who staggers to the left or right with n independent random steps will, on the average, end up about sqrt(N) steps from the origin. But if there is a pretty girl in one direction, then his steps will tend to go in that direction and he will go a distance proportional to N. In a lifetime of many, many independent choices, small and large, a career with a vision will get you a distance proportional to N, while no vision will get you only the distance sqrt(N). In a sense, the main difference between those who go far and those who do not is some people have a vision and the others do not and therefore can only react to the current events as they happen.

I am getting my fundamentals right. I want to know how everything works from the ground up. So the next time my uncle asks me "How does a computer start?" I want to tell him everything there is about it.

Fin

I hope you enjoyed the read and consider that it was enough to let you know how I spend most of my days and how I plan to in the future. Stay around!

If you want to connect with me, ping me up on my socials. And if it's really important write me an Email.

Phew! I almost forgot - Hello World :)