Ankur Logo
Ankur Kumar

Welcome to my website

16 May 2024
9 min read

Welcome! This first post is about introducing myself and share my journey. I'll talk about learning experiences, and insights I've gained along the way.

Welcome to my website

Introduction

Greetings, fellow voyagers of the cyber cosmos! 🌌

I’m absolutely thrilled to extend my heartfelt greetings to each and every one of you visiting my corner of the web. It’s a pleasure to have you here! 🎉

After countless moments of dreaming and planning, I’ve come to realize that there’s never a perfect time to begin—there’s only the moment we choose to take that first step.

So here I am, kicking off this journey to bring my plans to life. As they say, “Better late than never!” With determination in my heart and a spark of inspiration, I’ve finally embarked on the journey to create my own blog and developer portfolio.


A Little About Myself

Let me give you a glimpse into who I am.

My name is Ankur Kumar, I was born in Hyderabad, where my journey into the world began.

As an ex-Kendriya Vidyalaya student, I completed my high school education from Bagdogra West Bengal, Nal Bikaner, and AFA Dundigal Hyderabad where I laid the foundation for my academic journey.

Following high school, I pursued my passion for technology by enrolling in IIMT College of Engineering, Greater Noida. Opting for Information Technology was a no-brainer for me, given my innate interest in all things tech-related.

Throughout my time in college and beyond, my thirst for knowledge and curiosity about programming only intensified. I’ve dedicated myself to learning, building, and exploring the vast landscape of programming languages and technologies.

They say that our learning never stops; we only cease to learn when we close our minds to new possibilities. And for me, every challenge, every obstacle, is just another opportunity to grow and evolve in this ever-expanding field of technology.


Why Start a Blog?

There are several reasons driving my decision to start a blog, each stemming from my years of experience in the tech realm and my desire to make a meaningful impact:

  1. First and foremost, after years of honing my skills and delving into a variety of programming languages, frameworks, and libraries, I’ve accumulated a wealth of knowledge and hands-on experience. I believe that sharing this knowledge with others can be incredibly beneficial, not only in helping them navigate through similar challenges but also in fostering a community of learning and growth.

  2. Through my blog, I aim to document what I’ve learned, including the difficulties I’ve encountered along the way and how I’ve overcome them. By offering insights into my journey, I hope to provide valuable guidance and inspiration to aspiring developers facing similar hurdles.

  3. Moreover, I see my blog as more than just a platform for sharing knowledge, it’s also an opportunity to showcase my skills and expertise. By building an online developer portfolio, I can make myself easily discoverable to potential collaborators, clients, and employers. Having a strong online presence not only boosts my visibility in the tech industry but also opens up doors for exciting work opportunities.

  4. Ultimately, starting a blog allows me to cultivate an online persona that reflects my passion for technology, my commitment to continuous learning, and my desire to contribute to the broader developer community.

It’s not just about sharing what I know, It’s about connecting with others, exchanging ideas, and making a positive impact in the world of tech. - Ankur Kumar


What To Expect From This Blog?

Mobile Application Development using Flutter

My exploration began with Dart and Flutter, where I delved into the realm of mobile app development. From crafting sleek user interfaces to implementing complex functionalities, I honed my skills in creating immersive mobile experiences.

I can offer insights on optimizing app performance, troubleshooting common issues, and leveraging Flutter’s extensive widget library to build stunning UIs. Additionally, I’ll share practical tips on structuring Flutter projects using Domain Driven Design And Clean Architecture Principles, managing state effectively using libraries like BloC and Riverpod, and integrating third-party packages for added functionality. I can also help you get your first app published to Google Playstore.

Whether you’re a beginner looking to get started or an experienced developer seeking advanced techniques, I’m here to guide you through your Flutter journey.

API Development In Python

From Flutter then transitioning to Python and FastAPI opened up new possibilities in the realm of backend development. Building robust APIs became second nature as I navigated the intricacies of asynchronous programming and data serialization. And as the web continued to evolve, so did my toolkit.

With FastAPI, I’ve tackled a variety of projects, from simple CRUD APIs to more complex systems requiring authentication, data validation, and integration with external services. Its seamless integration with tools like Pydantic for data validation and SQLAlchemy for database interactions has made it a powerful ally in my journey as a backend developer.

Web Development

After building apps and APIs, I realized the importance of having an online presence and marketing to reach users. This led me to dive into web development, drawing from my past experience with HTML, CSS, and a bit of JavaScript.

I began my journey with NEXT.js, attracted by its popularity and the seamless integration with Vercel. However, as I delved deeper into SEO and Site Performance, I found NEXT.js sometimes struggled to achieve optimal page speed results, despite its smooth development experience and robust ecosystem.

Seeking alternatives, I explored Astro and Qwik. Qwik, similar to NEXT.js but with a twist, intrigued me with its concept of resumability and the promise of consistently high page speed scores by loading JavaScript only when needed.

On the other hand, Astro caught my attention for its suitability for smaller to medium-sized websites, offering static site generation with SSR features and an exceptionally smooth developer experience. And Even gives better Page Speed Performance than other two. Astro also introduces Islands architecture which results in better frontend performance by helping you avoid monolithic. Island architecture allows your to use Qwik, React, Svelte, Vue frameworks in Astro. Read more about Astro Island

In my web development journey, I utilized various libraries for styling, including Tailwind CSS, Shadcn, MantineUI, and DaisyUI. Among them, I found Tailwind CSS, especially when paired with DaisyUI, to be particularly effective and enjoyable to work with. Its utility-first approach and extensive set of pre-built components streamlined my workflow and allowed for greater flexibility in crafting visually appealing web projects.

Microservices Architecture, gRPC and Rest API Development

Before delving deeper into backend development, I faced the crucial decision of selecting the primary programming language to focus on. With options like C/C++, Rust, Go, Python, and TypeScript/JavaScript on the table, I weighed the pros and cons carefully.

Despite the vast ecosystem and popularity of JavaScript, I prioritized speed, simplicity, and maintainability. While I had some exposure to C and C++ during my education, I found them complex and challenging to manage effectively. Rust, though promising, felt relatively new and less established.

Ultimately, I opted for Go, and it was love at first code. Go felt like the perfect blend of TypeScript and Dart, offering a balance of ease of learning, blazing-fast performance, simplicity, used by many, huge libs ecosystem and backed by Google. Within a week, I was already smitten with its elegant syntax and powerful features like concurrency.

And for the past two years, I’ve been fully immersed in the world of Go. Embracing microservices architecture, gRPC, and asynchronous workers, I’ve had the opportunity to tackle complex challenges head-on and build scalable, resilient systems.

With microservices, I’ve embraced the idea of breaking down monolithic applications into smaller, more manageable components, each responsible for a specific task or functionality. This modular approach not only promotes flexibility and scalability but also enhances fault isolation and system resilience.

Headless Stack, Databases And Tools

Throughout my journey, I’ve had the opportunity to work with a variety of databases and CMS tools, including PostgreSQL, MySQL, SQLite, Firebase, Supabase, Appwrite, Directus, WordPress, and Strapi.

Exploring headless stacks and CMS platforms has further enriched my skill set, allowing me to tackle a diverse range of projects with confidence and versatility.

From Windows To Linux

I used to be a Windows user, familiar with customizing the interface and managing the system. However, Windows often held me back. I didn’t appreciate the automatic updates, the tedious software installation process (downloading .exe files from websites and following setup wizards), unexpected errors, warnings, glitches, and of course, the infamous Blue Screen of Death (BSOD).

Programming on Windows was particularly frustrating. The constant switching between mouse and keyboard for various tasks required a lot of manual effort and slowed down my workflow.

So, I decided to make a change and started with an Ubuntu-based distro called Pop!_OS by System76. The experience was incredibly smooth. Debian/Ubuntu’s extensive package support impressed me, and I was amazed by Pop!_OS’s keyboard bindings and tiling window manager.

Within a month, I was blown away by what Linux could do. The freedom and control over the system were phenomenal. This led me to try several other distros, including Linux Mint, Fedora, Manjaro, EndaevourOS, and NixOS.

Out of all these, I liked Manjaro the most. It offered a great balance of usability and features. After a long run with Manjaro, I eventually moved on to EndeavourOS, opting for a minimal setup with no desktop environment. This allowed me to build my own desktop environment using a tiling window manager like bspwm and Hyprland.

For the past two years, I’ve been using Arch Linux with Hyprland, a tiling window manager based on Wayland, which I find superior to Xorg. I write my own scripts to make my Linux workflow smooth and automated. You can check out my dotfiles on my GitHub.

In addition to this transition, I switched from VSCode to Neovim as my primary editor. While VSCode often required too much mouse usage, was resource-hungry, and sometimes lagged on my system, Neovim offered a faster, more keyboard-centric experience. With custom keybindings and extensive plugins, Neovim has been my go-to editor for over a year and a half. I even built my own Neovim configurations from scratch, tailored to my workflow. Neovim has proven to be a fantastic tool, enhancing my coding efficiency and comfort.

Switching to Arch Linux was one of the best decisions I made. The flexibility, control, and efficiency it provides have significantly improved my productivity and overall experience.


What Next ?

If you want to learn more about any of the topics I’ve mentioned, or if you have suggestions for what you’d like to see me cover, feel free to leave your feedback in the comments section below each article. Your input is invaluable and helps me create content that’s useful and engaging.

Lastly, I want to thank all of you for taking the time to read my blog. If you appreciate my work and efforts, please consider sharing this article with others who might find it helpful.

Note: The newsletter feature isn’t ready yet. I’m exploring options and might even build my own solution. Soon, you’ll be able to subscribe to my newsletter for updates, new articles, and more.

That’s it for my welcome post. Thanks again, and happy coding!

Stay up to date

Get notified when I publish something new and unsubscribe at any time