My journey into software development started pretty early. Back in 2006, I started learning how to write code. I built a tiny forum site using ASP and running on an IIS server on my local machine. After making significant progress and learning a lot of basics of HTTP and web development in general, I found out Windows hosting was expensive. I started looking for free hosting and soon realised PHP was the way to go for my use case. I eventually rewrote the program in PHP. This gave me a good grasp of the basics. I spent some time improving the software for quite some time. At the same time I began writing other quick tools and small scripts for various purposes. I was building all of these without any framework.
I got into serious development in late 2009 when I joined my first job. I learned CodeIgniter and familiarized myself with Linux as a development machine. I did a lot of distro hopping. Ubuntu was my primary OS for most of the time but I also spent a fair share of time in Linux Mint, Fedora, OpenSuse etc. These adventures helped me get familiar with different flavors of the popular Linux distros. At the same time I got very comfortable with the command line and troubleshooting Linux issues. I learned how to set up and maintain local web servers, database servers, how to configure firewalls - the basic stuff. Later on these experiences helped me ease into server management and minor DevOps roles. For my freelance clients, I often handled both the backend and their VPS.
While doing all these, I also started contributing to the front end since most of my work was related to web. I started with jQuery. Tried to learn JS basics side by side. After a few years, Angular became popular and I learned and used the first version in production. And then eventually settled on React. Since then, I have been working with React on the front end. I have done some VueJS here and there too.
After spending a few years with PHP, I got introduced to Python and I fell in love. It is such a beautiful language. I started learning it and tried to use it for small hobby projects. Google App Engine was launched sometime around that time and I used small Python micro frameworks to deploy some quick web apps to Google App Engine. Python was still not super popular back then, specially in my region. But I really loved the language and kept exploring. I started learning Django and was blown away by how easy it was to build web apps with the framework. Later on my preference for Django was solidified by Django REST framework which to this day remains a super popular framework for building REST APIs using Python. Django, DRF and React front end soon became my go-to stack for building web applications. I used this stack for shipping many products, some of them grew quite big and are still running in production, serving thousands of users per day.
From 2009 to 2013, I did a lot of freelance work alongside my full-time job. I also completed my BBA from Khulna University during this time. Immediately after finishing my BBA, I enrolled in the MBA program in the same place. It kept my academic schedules busy for another couple of years. During this time I kept working hourly full-time jobs and completing part time projects. I also spoke at various conferences and tried to contribute to local tech communities, helping other people through mentorship. I co-founded Python Bangladesh and TalkJS (a Javascript community), contributed to phpXperts, *nixers and other communities. On the business side of things - I co-founded Google Business Group, Khulna chapter and regularly arranged community events under Google's guidelines.
Juggling between hourly jobs and managing projects became hectic for me and I wanted to switch to full-time roles that had regular work. With that in mind, I started looking for more long term engagements instead of small short term gigs. I worked for a couple of agencies before landing at LocalStaffing LLC where I have spent a large portion of my career. I have worked full-time here for 10+ years. I started with building a messaging platform to send email and SMS alerts to users. I used Python to craft the first version of this unified messaging platform. We were using a hosted platform - iron.io - it worked well for some time. But we soon outgrew that platform and we wanted to host our own. So I built our own workers framework on top of Python's built-in multi threading and multi processing libraries. We used a large enough server to process everything on our own platform. The platform grew and we scaled up. It was time for us to go for a distributed system. I chose Django + DRF for APIs and Celery for distributed background task processing. We were sending SMS, Email and Push messages all from the same platform. We kept bolting on other necessary parts here too - like analytics.
The system grew in scope, volume and load. We decided to split them into separate services. These small services were reworked in Node.js since at that time Node offered a better async model for handling concurrency. We focused on SMS first and I rebuilt the SMS system that was used by us and our partners. We scaled to 26 partners, millions of requests per day. I built a separate data aggregation and consolidation platform using Node on top of MongoDB and Elasticsearch. The platform was working well and by this time I also started picking up Go for small internal services. I started using Go in more and more of our microservices. But we also kept Node.js where it was good enough.
Fast forward, we had good reasons to rebuild the SMS system with a better architecture. I opted for Go - since then the platform has grown even bigger, serving more requests per day but with fewer resources. We are now making more money with lower hardware cost.
After joining LocalStaffing, I kept the freelance and part time gigs at minimum. I helped architect an EdTech platform that is now being used by a college in Australia. I also helped lay the foundation for another e-commerce SaaS (in stealth right now) that's projected to become the largest e-commerce SaaS in Bangladesh in a couple of years. I also helped manage their deployment and infrastructure. For this, today I use Docker and ECS managed via Terraform.
Leadership & Community
- ▹Was an active moderator of the largest PHP user group of Bangladesh, "phpXperts"
- ▹Co-founded Python Bangladesh - the largest Python user group in the country
- ▹Founded NodeSchool Khulna to help others learn JavaScript and Node.js
- ▹Co-founded Google Business Group Khulna, connecting people with business and technology
- ▹Was a regular speaker at local PHP & Python conferences
- ▹Wrote blog posts and recorded screencasts in my mother language to help others learn
My Journey
Wrote my first code
2006Self-taught teenager in Khulna, building full mobile community and forum sites in PHP for fun - and people actually used them.
Went professional
2008Turned the hobby into a career with paid PHP development - Laravel, Symfony, CodeIgniter, WordPress.
Started freelancing
2009Joined oDesk (now Upwork) and began working directly with founders and teams worldwide - a thread that still runs through my career.
Fell for Python
2012Python, Django and DRF became my first reach. The backend-and-APIs chapter of my career really begins here.
Built systems that lasted
2014Shipped the Khulna University exam & result system that ran in production for nine years, and began multi-year code-review engagements.
Into high-scale distributed systems
2015Started building email & SMS platforms and data pipelines serving millions a month - Python and Celery, then Node.js and Go.
Picked up Go & started writing deeply
2016Added Go to the toolbox, launched masnun.rocks, and co-founded Python Bangladesh, the country's largest Python community.
Real-time at scale
2017–2022Drove a five-year, full-stack real-time analytics platform and a fleet of Go and Node.js microservices end to end.
Technical architect & polyglot reviewer
NowDesigning distributed systems across Python, Go and Node.js - and auditing codebases across five languages for teams who want a second set of eyes.