<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://mehedikhan.me/feed.xml" rel="self" type="application/atom+xml" /><link href="https://mehedikhan.me/" rel="alternate" type="text/html" /><updated>2026-08-19T20:04:01+00:00</updated><id>https://mehedikhan.me/feed.xml</id><title type="html">Mehedi Khan</title><subtitle>Software Engineer. Distributed Systems, ML Systems, Applied AI.</subtitle><author><name>Mehedi Khan</name></author><entry><title type="html">Building a live election monitoring system for Netra News</title><link href="https://mehedikhan.me/blogs/election-monitor-system-netranews/" rel="alternate" type="text/html" title="Building a live election monitoring system for Netra News" /><published>2026-03-11T00:00:00+00:00</published><updated>2026-03-11T00:00:00+00:00</updated><id>https://mehedikhan.me/blogs/election-monitor-system-netranews</id><content type="html" xml:base="https://mehedikhan.me/blogs/election-monitor-system-netranews/"><![CDATA[<p><em>[0% AI use for this article - not even revisions. Let’s take back control where it matters the most - creative fields]</em></p>

<p>How would you design a software system where the max potential load is roughly 75 million -130 million (estimated internet users in Bangladesh) users in the span of a few hours, and downtime was unaffordable?</p>

<p>Last month, in February 2026, I worked with <a href="https://www.netra.news">Netra News</a> to develop a live election monitoring system targeting the national election of Bangladesh. I worked as a systems, backend, and infra lead for the project. We successfully pulled it off. In the span of a few hours, our system reliably served roughly 8 million requests(client + server) with 100% uptime, with a small cost, for a project this large.</p>

<p><img src="/assets/blog/election-monitor-system-netranews-1.webp" alt="Netra News Election Monitoring System" /></p>

<p>In this article, I’ll write about the system architecture, design choices, infra setup and decisions, what worked and what did not, how it was working with a new team, that too, in a new domain - journalism, which I wasn’t familiar with.</p>

<p><strong>System Introduction</strong></p>

<p>Let’s take a minute to understand the system and its functional requirements first. There are 300 constituencies where candidates from different parties contest each other in the national parliamentary election of Bangladesh. These 300 constituencies have a total of roughly 43000 polling stations nationwide. Once every polling station’s voting result for a constituency is published, the candidate with the most votes wins. The party with the most winning candidates wins the election, with some caveats - irrelevant to the scope of this article.</p>

<p><a href="https://www.netra.news">Netra News</a> provided the logistical support for this. They had reporters country-wide, who would inform the Dhaka office once results from a polling station were available. In the Dhaka office, there were about 200 enumerators who were strategically connected with those reporters via WhatsApp groups. The enumerator’s job was to enter the vote results in our system, which would be visible to the public. Besides, we had features like live blogs, comparisons, map-based UI, etc.</p>

<p>Three major non-functional requirements were scalability, zero downtime, and protection against cyber attacks, especially DDoS attacks.</p>

<p><strong>Architecture</strong></p>

<p>You can already guess this was a huge read-heavy system. And there wasn’t much interaction to have for the public viewers - it was mostly static content. Considering everything, I went with a static site approach. Dynamic rendering, even with a cluster of caches, would not have been feasible in a limited infrastructure setup for millions of active users.</p>

<p>So the plan was that the moment an enumerator would input some result in the system, the server would update the static site’s content via an authenticated and non-blocking web hook. Thus, the static site would always be up-to-date and barely show any stale data. Turns out NextJS has built-in support for our use case - Incremental Static Regeneration (ISR).</p>

<p>For the backend, I religiously followed the KISS principle. One FastAPI monolith server(with replicas) and one PostgreSQL instance. Followed the controller-service pattern for the APIs and used Alembic for database migration. I had a Postgres replica standby to ensure 99.99% uptime. Applied a two-step connection pooling for the database - one in the application layer and one in the infrastructure layer using pgBouncer. I had to make sure that the maximum concurrent connections from all the running replicas did not exceed the connection limit of the database instance.</p>

<p>We needed storage for the uploaded result documents and images. I used an S3-compatible managed storage for the job. It was guaranteed that the uploaded file size would not exceed a threshold, so a presigned URL wasn’t needed for uploading the images. Don’t over-engineer anything, folks! Upon file uploading, compression and auto-conversion to WebP were ensured.</p>

<p>For the admins and enumerators, a role-based access system(RBAC) was implemented.</p>

<p>For observability, I implemented a logging middleware and integrated Axiom with it, which let me observe logs in real-time in production.</p>

<p><img src="/assets/blog/election-monitor-system-netranews-2.webp" alt="Netra News Election Monitoring System - Load" /></p>

<p><strong>Infrastructure</strong></p>

<p>All our cloud services were deployed in DigitalOcean, in the Bangalore(BLR1) region. For state-of-the-art horizontal auto-scaling, I used a managed Kubernetes cluster with 2-6 (min-max) nodes - each having 4vCPUs, 8GBs of RAM. It came in handy later for other tasks as well. The backend was managed by an HPA, keeping the pod count between 5 and 15. When a pod’s CPU usage exceeded 60%, a new pod was booted up. CPU usage was the ideal metric here since our application was compute-heavy. The database instances contained 2vCPUs and 8 GB of RAM, with 30 GB of storage.</p>

<p>The application was containerized using Docker, and DigitalOcean was used as the container registry.</p>

<p>I used Cloudflare for its security features: automatic DDoS protection, WAF rules, rate limiting, bot protection, and TLS termination. These features ensured our system’s reliability during the election. Later, we found out that Cloudflare successfully prevented a few scraping attempts for our APIs.</p>

<p>Initially, I planned on having a managed load balancer so communication could be made with our Kubernetes cluster via Cloudflare. However, it turned out that DigitalOcean’s Kubernetes managed load balancer was incompatible with Cloudflare since there was no way to allow IPv6 IPs from Cloudflare’s IP ranges. Later, I discovered Cloudflare tunnels were more suited for the job. I ran three tunnel instances in the Kubernetes cluster and configured them in the Cloudflare dashboard. Bingo! Our backend was accessible via Cloudflare, and the best part about this was that everything was protected.</p>

<p>The entire infrastructure was deployed for a month. We were billed around $335 only.</p>

<p><strong>Automation</strong></p>

<p>Netra’s journalists needed a place where they could see a snapshot of the election in one place. I implemented a cronjob-based automation where a few scripts would populate an Excel sheet every 15 minutes, containing all the highlights of the election. The journalists could then review it and make blogs, talk about it on talk shows, etc. I put the cron jobs inside the same Kubernetes cluster.</p>

<p><strong>Miscellaneous</strong></p>

<p>Reliability of the application was guaranteed with hundreds of automated end-to-end tests. I used GitHub Actions for continuous integration and continuous delivery(CI-CD), which made the development phase much simpler.</p>

<p>Kubernetes Secret was used for managing environment variables in production.</p>

<p>We had two frontends. A public-facing one and a private-facing one - for the enumerators and admins. The frontend and ISR implementation was done in NextJS and deployed in Vercel’s Pro plan - developed and maintained mostly by <a href="https://www.linkedin.com/in/trulynoirit/">Mashukur Rahman</a>. We invested a lot in the UI and UX of the system, which was done mostly by <a href="https://arnabfouzder.webflow.io/">Arnab Fouzder</a>.</p>

<p>From Netra’s side, we were mostly involved with <a href="https://en.wikipedia.org/wiki/Tasneem_Khalil">Tasneem Khalil</a> and <a href="https://nazmulahasan.com/">Nazmul Ahasan</a> - two amazing individuals and journalists. It was amazing working with such a team.</p>

<p><img src="/assets/blog/election-monitor-system-netranews-3.webp" alt="Netra News Election Monitoring System - Team" /></p>

<p><strong>Conclusion</strong></p>

<p>I learned a ton from this project. Working under stress, not over-engineering things, understanding proper client needs, and delivering accordingly - the list could go on.</p>

<p>Last but not least, it’s always rewarding to take on mission-critical engineering projects, meet and work with amazing new teams, and most importantly, to live at your edge.</p>]]></content><author><name>Mehedi Khan</name></author><category term="technical" /><summary type="html"><![CDATA[In February 2026, I worked with Netra News to develop a live election monitoring system targeting the national election of Bangladesh. I worked as a systems, backend, and infra lead for the project. We successfully pulled it off. In the span of a few hours, our system reliably served roughly 8 million requests(client + server) with 100% uptime, with a small cost, for a project this large.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://mehedikhan.me/assets/blog/election-monitor-system-netranews-3.webp" /><media:content medium="image" url="https://mehedikhan.me/assets/blog/election-monitor-system-netranews-3.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Memories of North: A journey through northwestern Bangladesh</title><link href="https://mehedikhan.me/blogs/memories-of-north/" rel="alternate" type="text/html" title="Memories of North: A journey through northwestern Bangladesh" /><published>2026-02-25T00:00:00+00:00</published><updated>2026-02-25T00:00:00+00:00</updated><id>https://mehedikhan.me/blogs/memories-of-north</id><content type="html" xml:base="https://mehedikhan.me/blogs/memories-of-north/"><![CDATA[<p>বাংলাদেশে ঘুরাঘুরির কিছু টিপিক্যাল জায়গা আছে। উত্তর-পূর্বে সিলেটের চা বাগানের সমারোহ, দক্ষিণ-পূর্বে পাহাড়ী জেলাগুলা, দক্ষিণ-পশ্চিমে সুন্দরবন, খুলনা আর দক্ষিণে বঙ্গোপসাগরের carry খাওয়া কয়েকটা ভ্রমনযোগ্য জেলা। আর উত্তরে? That’s a good question. উত্তরে আছেটা কি আসলে? আচ্ছা, যে আমি জীবনে কোনো দিন যমুনা সেতু পার করি নাই, সে আমি কিভাবে জানবো? যাই হোক, কয়েকজন বন্ধুর বাসা উত্তরের দিকে হওয়ায় সেবারই প্রথম যমুনা সেতু পার করলাম।</p>

<p>২৫ ডিসেম্বর, ২০২৩ এ আমি, রাজীন, আবির আর সাইফ কমলাপুর থেকে ট্রেনে করে রওনা দেই রাজশাহীর উদ্দেশ্যে!</p>

<p><strong>রাজশাহী</strong></p>

<p>রাজশাহী যাওয়ার পথে ছুটন্ত ট্রেনের দরজায় বসে বাইরে আমার পা এলিয়া দেয়া এবং আবির constantly আমাকে নিয়ে ভয় পাওয়া ছাড়া ওই রাতের আর স্মৃতি নেই বললেই চলে।</p>

<p>রাজশাহী পৌঁছে আমরা স্টেশনের পাশেই একটা খাবারের হোটেলে রাত চারটায় পরটা আর গরুর মাংস খাই। It was alright. এরপর আমরা সাইফের এক আত্নীয়ের বাসায় ব্যাগ রেখে, ফ্রেশ হয়ে বের হয়ে পড়ি। রাজশাহীর কথা বললেই বাংলাদেশের যেকোনো শহর থেকে অনেক organized, সেটা বলতে হয়। So, we were impressed. ততোক্ষণে অর্ক আমাদের সাথে যোগ দেয়। ওর বাসা নওগাঁ শহরেই। এবার পদ্মা ঘুরার পালা!</p>

<p>যতদূর মনে পড়ে, আমরা T-বাঁধ, I-বাঁধ(yes, they are shaped like the letters) ঘুরে ইঞ্জিনচালিত নৌকায় করে পদ্মায় ঘুরলাম অনেকক্ষন। দুএকটা  চরে নেমে ছবি তুলা আর নৌকা রাইড এনজয় করা ছাড়া তেমন কিছু করার ছিলো না ওই কড়া রোদে। এ পর্বে তেমন রোমাঞ্চকর কিছু না ঘটলেও, আমার এ গল্প লিখার মূল কারণ গুলো ঘটতে শুরু করে নওগাঁ থেকে।</p>

<p><strong>নওগাঁ</strong></p>

<p>ওইদিনই আমরা দুপুরে খেয়ে বাসে করে নওগাঁর উদ্দেশ্যে রওনা হই। Usually নওগাঁয় মানুষকে ঘুরতে যেতে দেখি না। আমরা গিয়েছিলাম সাইফের দাদার বাড়ির নিমন্ত্রনে। গল্পের এ অংশটুকুর জন্য সাইফকে ধন্যবাদ না দিলে হয় না।</p>

<p>বাস থামে নওগাঁর রিমোট এক বাজারে। সেখানে সাইফের বাবা আমাদের রিসিভ করেন। জায়গাটা বর্ডারের খুবই কাছে। ততক্ষনে আমরা অনেক আম বাগান দেখে ফেলেছিলাম। আমরা যে বাড়িতে থাকতে যাচ্ছি, সেটা যে কতটা ভেতরে আর গ্রামীণ, তা আস্তে আস্তে বুঝা শুরু করলাম। Few minutes later, আমরা নিজেদেরকে এক বিশাল দুইতলা মাটির ঘরের সামনে আবিস্কার করলাম।</p>

<p>মাটির ঘরের সিঁড়িও মাটির, দেয়ালগুলো বিশাল মোটা। দোতলায় একটু জোরে হাঁটলে মনে হয় এখনি ভেঙ্গে পড়বে সব। কিন্তু সবাইকে অবাক করে দিয়ে মাটির বাড়ীটি এখনো ভালোভাবে টিকে আছে। শুনলাম সাইফের দাদা নাকি অনেক আগে কলকাতা থেকে কাঠ এনে এই বাড়ি বানিয়েছিলেন।</p>

<p>সন্ধায় নাস্তা খাওয়ার সময় আমাদের সাইফের বিশাল ফ্যামিলির সাথে পরিচয় হয়। সেদিন এমন কিছু নাস্তা খেয়েছি যেগুলোর নাম তখনই প্রথম শুনেছিলাম আবার এখন অলরেডি ভুলে গেছি।</p>

<p><strong>বাইক চালানো শেখা এবং…</strong></p>

<p>ট্যুরের কিছুদিন আগে ধরেই একটু excitement কাজ করছিলো কারণ নওগাঁয় আমার বাইক শেখার কথা ছিলো। যেই ভাবা, সেই কাজ। আমরা একটা হাইস্কুল মাঠে আড্ডা দিচ্ছিলাম, রাজীন আর সাইফ গিয়ে সাইফের চাচার ১২৫ সিসির Freedom বাইক নিয়ে আসলো। বাইকের আবার হেডলাইট নষ্ট। এখান থেকেই ঝামেলার শুরু।</p>

<p>রাজীন আর সাইফ টুকটাক চালাতে পারতো, এর মধ্যে রাজীন একটু বেশি পারতো। তো ও আমাকে clutch, accelerator, gear, up-shifting, down-shifting ইত্যাদি বুঝালো। সবার মতো শুরুতে আমারো একই ভুল হচ্ছিলো। clutch release করা আর accelerator ঘুরানোর কম্বিনেশন জমছিলো না। তাও বেশ কয়েকবার ট্রাই করার পরে বাইক চলতে শুরু করলো। মাঠে চক্কর দিলাম কয়েকটা। আমার সাথে অর্কও চালানো শিখলো। দুজনই practice করলাম কিছুক্ষন। আমার মনে হচ্ছিলো যেন দুনিয়া জয় করে ফেলেছি। এরকম একটা euphoria তে থাকা অবস্থায় চালানোর সময় হঠাৎ দেখলাম আমি আর বাইক দুজনই পড়ে আছি মাটিতে।</p>

<p>মাঠের এক পাশে গরু বেঁধে রাখার লাঠি মাটিতে পোঁতা ছিলো। আমাকে warn করাও হয়েছিলো। বিশাল বড় এক মাঠে প্রায় ৩ স্কোয়ার ইঞ্চি প্রস্থচ্ছেদ ক্ষেত্রফলের এর একটা লাঠি। স্বাভাবিকভাবেই এটায় মেরে দেয়ার কোনো কথা ছিলো না। কিন্তু আমার সাথে তো স্বাভাবিক কিছু ঘটছে না অনেকদিন ধরেই। এখানেও তাই ব্যতিক্রম হয়নি। সাথে আবার ছিলোনা হেডলাইট।</p>

<p>সৌভাগ্যক্রমে আমি এবং বাইক দুজনই সুস্থ থাকলেও আমার মানসম্মান আস্ত থাকেনি। তো হাসাহাসি করে আমরা ওই মাঠে আড্ডা দিয়ে বেশ কিছুক্ষণ কাটাই। এরপর রাতে আমরা সাইফের কাজিনদের সাথে UNO খেলি কিছুক্ষণ। রাতে খাবার দাবার শেষে ক্লান্ত শরীর নিয়ে আমরা জীবনে প্রথম মাটির ঘরে ঘুমাতে গেলাম। পরেরদিন আমরা অন্যান্য অনেক কিছুর পাশাপাশি বাইক নিয়ে আরও অনেক ঘুরাঘুরি করেছি। আর আবির..? ওই বান্দা এখনও সাইকেল চালাতে পারে না।</p>

<p><strong>পরেরদিন সকাল</strong></p>

<p>ঘুম ভাঙলো এক মহিলার assertive ডাকাডাকিতে। চোখে অনেক ঘুম, ইনি বিরক্ত করছেন কেন? আজব তোহ! পরে দেখি উনি আমাদের রুমে এসে হাজির। এবার তো আর না উঠে পারা যায় না.. লক্ষ্ণী ছেলের মতো সবাই উঠে বসলাম। জানতে পারলাম ইনি সাইফ এর মা। রাতের ট্রেনেই ঢাকা থেকে এসেছেন।</p>

<p>উনি আমাদের জন্য সাতসকালে সেদ্ধ ডিম আর খেজুরের রস নিয়ে এসেছেন। অতো ভোরে উত্তরবঙ্গে খেজুরের রস আনা চাট্টিখানি কথা ছিলো না। ওইসময় আবার খেজুরের রস থেকে নিপা ভাইরাস ছড়াচ্ছিল। আন্টি যখন আমার জন্য গ্লাসে খেজুরের রস ঢালছিলেন, আমার হাতে দুটো অপশন ছিলো। আন্টির আতিথেয়তা ফিরিয়ে দেয়া অথবা নিজের জীবন রিস্ক নেয়া। I took the later. পরে অবশ্য আন্টি কনফার্ম করেন যে ওই গাছ গুলো দেখাশোনা করা হয় যাতে ভাইরাস ছড়াতে না পারে। এ যাত্রা বেঁচে গেলাম!</p>

<p><strong>বিল, স্টুপিডিটি এ্যান্ড মেমোরিস</strong></p>

<p>পুরো ভ্রমণকাহিনীর সবচেয়ে eventful পার্টে আপনাকে স্বাগতম! আমাদের ওইদিনের মেইন গোল ছিলো বিল থেকে নিজেরা মাছ ধরে রান্না করে খাব। বাট আমাদের যেতে দেরি হওয়ায় দেখি মাছ ধরার কাজ অলরেডি শুরু হয়ে গেছে।</p>

<p>যে জায়গার কথা বলছি, সেখানে কয়েক হেক্টর জমিতে বিশাল বিশাল অনেক গুলা বিল ছিলো। কয়েক বছর এর জন্য কমিটি করে ইজারা নেয়া হয়। সাইফ এর বাবা-চাচা কেউ একজন ওই কমিটির সদস্য ছিলেন। ওদের ফ্যামিলির একটা গেট-টুগেদার প্লাস আমরা যাওয়ায় মূলত মাছ ধরার আয়োজন করা হয়। তো আমাদের মাছ ধরার ফেন্সি আইডিয়া যখন আর ফিসিবল ছিলো না, আমরা বিলের পাড়ে আড্ডা দিতে থাকলাম বসে বসে।</p>

<p>এরপর আস্তে আস্তে আমাদের মধ্যে দুজনের মাথায় ইবলিশ ভর করে। Quite literally!</p>

<p>সাইফ আমার সাথে কথার ফাঁকে বললো যে তোর ফোনটা দেখি তো। আমি দিলাম। এরপরে আমি দেখছি যে রাজীন আমাকে ধাক্কা দিয়ে বিলে ফেলে দিচ্ছে। আমি 45° কোণে আছি, এমন অবস্থায় রাজীনের হাত ধরে ফেলি। I wasn’t trying to save myself. I wanted to go down with him.</p>

<p>ফলাফল - আমরা দুজনই পানিতে। এই ঘটনার নাটের গুরু ছিলো সাইফ আর রাজীন। আমার ফোন বেঁচে গেলেও মানিব্যাগ ভিজে যায়। রাজীন তো সম্পুর্ণ অপ্রস্তুতভাবে পড়ে যায়। এখন আপনি যদি আমাদের পার্সোনালি চিনে থাকেন, আপনি হয়তো আন্দাজ করতে পারছেন যে, আর কেউই অক্ষত ছিলো না। বাকিদেরকেও ইচ্ছার বিরুদ্ধে পানিতে ফেলি আমি আর রাজীন। ওইদিন আমরা সবাই মিলে প্রায় 35-40 হাজার টাকার গ্যাজেট নিয়ে পানিতে পড়ে যাই।</p>

<p>বিলের পাড়ে বসে ফোন, এয়ার পডস, নেক ব্যান্ড, মানিব্যাগ, ডেবিট কার্ড ইত্যাদি রোদে শুকাতে দিয়ে সবাই মিলে নিজেদের লাইফ চয়েস rethink করতে থাকলাম। আমার নতুন কেনা সাদা ফ্রেমের চশমাটা আজও নওগাঁর সেই বিলেই নিচে পড়ে আছে।</p>

<p><strong>মাছ</strong></p>

<p>ঘন্টাখানেক পরে আমাদের খাওয়ার সময় হলো। শুরুতে ছিলো সদ্য ধরে আনা মাছ ফ্রাই। আমি নিজে একাই কয় টুকরো খেয়েছি তার ইয়ত্তা নেই। বাকিদেরও একই অবস্থা। ওইদিনই মনে হয় বাকি মাসের প্রোটিন ইনটেক মিট করে ফেলি। এবার মেইন ডিশের পালা। মাছের তরকারি, সাথে ভাত। সার্ভ করা হয়েছিলো কলা পাতায়। Sounds too good to be true, I know right! বাজারের মাছ খেতে খেতে ফ্রেশ অথেনটিক মাছের স্বাদ কেমন ছিলো তা ভুলতে বসেছিলাম। ওইদিনের মাছের স্বাদ তাই যেন আজও মুখে লেগে আছে!</p>

<p><strong>আবিরের মরে (অলমোস্ট) যাওয়া</strong></p>

<p>আমাদের পানি-পর্বের এক পর্যায়ে হঠাৎ আমরা দেখলাম যে আবির পানিতে ডুবে যাচ্ছে। বার বার হাত নেড়ে উপরে উঠার চেষ্টা করছিলো বাট পারছিলো না। আমাদের বিষয়টা প্রসেস করতে একটু সময় লাগলো। আমরা কয়েকজন মোটামুটি সাঁতার জানলেও নামতে দ্বিধা করছিলাম কারণ কেউ ডুবতে থাকলে সে rescuer কে ধরে উপরে উঠতে চায় যেটা দুজনের জন্যই রিস্কি। ভালো সাঁতারু না হলে এটা ট্যাকেল দেয়া টাফ। ওই ১-২ সেকেন্ড এ আমরা ডিসিশন মেক করতে না পারলেও সাইফ ঝাঁপিয়ে পড়ে। আবিরকে টান দিয়ে পাড়ের কাছে এনে তুলে। একটুর জন্য ‘পানিতে ডুবে মারা গেলো বুয়েটের মেধাবী শিক্ষার্থী আবির’ পত্রিকায় ছাপা হয়নি।</p>

<p>ওইদিন এসব ছাড়াও আমরা অনেক ঘুরাঘুরি করি। এর মধ্যে সাঁওতালপাড়া, গ্রামের বাজার, দূর-দুরান্তের মাঠ অন্যতম। রাতে আমরা সাইফ এর ভাই, কাজীনদের সাথে আড্ডা দিয়ে আর আবিরকে ভূতের ভয় দেখিয়ে এই মেমোরেবল দিনটা সমাপ্ত করি।</p>

<p><strong>নওগাঁ শহর</strong></p>

<p>পরদিন সকালে আমরা সবার থেকে বিদায় নিয়ে শহরে যাই। আমাদের পরবর্তী গন্তব্য ছিল রংপুর। আমাদের যাওয়ার রুট ছিল নওগাঁ টু বগুড়া টু রংপুর।</p>

<p>নওগাঁ যাওয়ার জন্য আমরা ভোগান্তি কমানোর জন্য বাসে না গিয়ে টেম্পু আর সিএনজির ফিউশনে বানানো এক নতুন বাহন চুজ করি। বাট এতে হিতে বিপরীত হয়। দেড় ঘন্টায় এতো ধুলাবালি খেয়েছি যে পেট ভরে গিয়েছিল।</p>

<p>নওগাঁয় গিয়ে ডিরেক্ট বগুড়ার বাসে উঠার কথা থাকলেও অর্কোর বাসা নওগাঁয় হওয়ায় ও আমাদের ওর বাসায় নিয়ে যায়। আরেকটা আনএক্সপেক্টেড খাওয়াদাওয়া! আন্টি যে কতগুলা পদের খাবার রান্না করেছিলেন, আমরা গুনে শেষ করতে পারি নাই। খাওয়া দাওয়া শেষে, ফ্রেশ হয়ে আমরা বগুড়ার উদ্দেশে বাসে রওনা দেই।</p>

<p><strong>অফ টু রংপুর</strong></p>

<p>আমার আরেক ফ্রেন্ড - মুগ্ধের বাসা ছিলো বগুড়ায়। বগুড়ায় পৌঁছানোর আগে ওকে কল দিয়ে জানানো হয় যে আমরা রংপুর যাচ্ছি, আর ওকেও ইনভাইট করলাম। আমাদের রংপুর যাওয়ার সঙ্গী আরেকজন বেড়ে গেলো! এতো শর্ট নোটেশে মুগ্ধ কেন রাজি হয়ে গেলো, সেটা না হয় অজানা থাকুক।</p>

<p>বগুড়ায় নেমে আমরা বাসের টিকিট না কেটে হাইওয়েতে ঢাকা টু রংপুরগামী বাসের জন্য অপেক্ষা করি। ওনস্পট একটা বাসের সুপারভাইজারের সাথে নেগোসিয়েট করে বাসে উঠে পড়ি সবাই।</p>

<p><strong>রংপুর</strong></p>

<p>এ পর্বে ঘুরাঘুরি থেকে খাওয়াদাওয়া ছিলো বেশি। আমরা রংপুরে রাজীনের বাসায় উঠি। পেটপুরে খাওয়াদাওয়া শেষে আমরা ফাহিমের বাসায় যাই। সেখানে রাতে ওদের অনেক ফ্রেন্ডের সাথে পরিচয় হয় আর ক্লান্ত শরীর নিয়ে ফাহিমের ছাদে চলে রাতভর আড্ডা। সকালে আমরা ফাহিমের বাসায় নাস্তা করি। দুপুরে আবার ছিলো অরন্যের বাসায় দাওয়াত! এতো দাওয়াত জাগল করতেই কষ্ট হয়ে যাচ্ছিলো আমাদের। খাবারের পাশাপাশি আমরা রংপুর শহর যতটুকু পারি, ঘোরার চেষ্টা করি। আমাদের আজই ঢাকায় ব্যাক করার কথা। আবির আর অর্কো অলরেডি সৈয়দপুর চলে যায় ট্রেনের জন্য। দুজনের গন্তব্য ছিলো যথাক্রমে খুলনা আর নওগাঁ।</p>

<p>ঢাকায় যাবার সময় ঘনিয়ে আসতে থাকে আর আমাদের মাথায় আবার ভূত চাপে - বগুড়ার একদিন থাকলে কেমন হয়!</p>

<p>Take notes, everyone. Make friends around the country and the world, as you grow up. তাহলে ঘুরতে গেলে হোটেল ভাড়া দিয়ে ফকির হয়ে যেতে হবে না।</p>

<p><strong>বগুড়া</strong></p>

<p>বগুড়াগামী বাসে আমার সাথে ছিলো সাইফ, রাজীন, মুগ্ধ, অরন্য, ফাহিম আর মুসা। গল্পের এ পর্যায়ে মুসাকে স্বাগতম। ও হচ্ছে রংপুর গ্যাং এর ফ্রেন্ড।</p>

<p>বগুড়ায় আমরা অনেক রাত করে পৌঁছাই আর মুগ্ধের বাসায় উঠি। আন্টি আংকেল বেশ ভালোভাবে আমাদের ওয়েলকাম করেন।</p>

<p>দিনের শুরুতেই আমাদের উদ্দেশ্য ছিলো যমুনা নদী ঘোরা। আমরা দুটো সিএনজি নিয়ে বেরিয়ে পড়ি। বগুড়াকে আমি ছোটোখাটো একটা শহর ভেবেছিলাম। বিএনপি ফেবারিট এলাকা হওয়ায় তেমন একটা রিসেন্ট উন্নতির দেখা না মিললেও শহরটা অনেক প্রোমিনেন্ট ছিলো। এখানে নাকি আবার ফাইভ স্টার হোটেল ও আছে - মমো-ইন!</p>

<p>যমুনার তীরে যাওয়ার পথের দুপাশের মনোরম দৃশ্য নিয়ে কিছু আর না বলি। Words won’t do any justice.</p>

<p>আমরা একটা নৌকা ভাড়া করে যমুনায় নেমে পড়ি। নৌকায় অনেকক্ষণ ঘুরার পরে আমরা গোসল করার সিদ্ধান্ত নেই। এই প্রচণ্ড রোদে এর থেকে শান্তির আর কী হতে পারে! নৌকা একটা চরে থামলো। নামার পরই কে যেন বললো একটা রেইস হয়ে যাক। আমরা সবাই চরে একটা দোড় দিলাম। মুসা র্ফাস্ট হলো। এরপর আমরা যমুনায় নেমে যাই।</p>

<p>এসময় আমার ঢাকায় থাকার কথা আর আমি কিনা যমুনার পানিতে! ইম্পালসিভ হয়ে আমরা কতো কিছুই না করি! কিছুক্ষণ আগেই নৌকা দিয়ে এই চরে আসার সময় আরেকটা নৌকা আমাদের ওভারটেক করে যাচ্ছিল। আমি কিছু চিন্তা না করেই দেড়-দুই ফিট গ্যাপ থাকার পরও আমাদের নৌকা থেকে ওদের নৌকায় লাফ দেই। ওদের নৌকাটা আমাদের নৌকার রিচ এর বাইরে চলে যাবে ঠিক এই মূহুর্তে আবার লাফ দিয়ে আমাদের নৌকায় ব্যাক করি। তারপর এজ এক্সপেক্টেড, বাকিদের গালি খেলাম।</p>

<p>যমুনায় অনেকক্ষণ থেকে আমরা নদীর পাড়ের একটা হোটেলে খাবার খাই। শর্ট ট্যুরকে লং করার স্বভাব আমাদের আগে থেকেই ছিলো কিন্তু এবার এমন অবস্থা হলো যে যুমনা থেকে উঠে পরার জন্য শুকনো কাপড় ছিলো না! আমরা কয়েকজন পরে নদীর পাড়ের মার্কেট থেকে ট্রাউজার কিনে চেঞ্জ করে নেই। তারপর আমরা বগুড়া শহরের দিকে ব্যাক করি।</p>

<p><strong>মমো-ইন এ্যান্ড সাম ড্রিমস</strong></p>

<p>সেদিন ছিলো আবার ৩১শে ডিসেম্বর। আমরা ভাবলাম মমো-ইনে গিয়ে তাহলে সেলিব্রেট করা যায়। রেডি হলাম সবাই। মুগ্ধ তো আবার স্যুট-বুট পরে রেডি! মমো-ইন খুবই ফ্যান্সি দেখাচ্ছিলো। কিন্তু সমস্যা হলো এনট্রি নিয়ে।</p>

<p>নিউ ইয়ার হওয়ায় সালাদের এন্ট্রি-ফিই ছিলো ৫০০ টাকা। এক প্লেট চিকেন বিরিয়ানি আর একটা ওয়েলকাম ড্রিন্ক। খুব বেশি না শোনালেও তখন এতো ঘুরাঘুরির পরে আমাদের সবার পকেটের অবস্থা এতো বাজে ছিলো যে, ওই ৫০০ টাকাও এফোর্ড করতে পারছিলাম না। মমো-ইনে ঢুকলে ঢাকায় হেঁটে হেঁটে ফেরত আসা লাগবে যে!</p>

<p>একটু খারাপ লাগছিলো বাট কি আর করার? আমি আর রাজীন বলাবলি করছিলাম যে আজকে মমো-ইনে ঢুকতে পারি নাই তো কি হয়েছে, একদিন এসে মমো-ইন কিনে ফেলবো! আচ্ছা রাজীন, আমরা কি আসলে পারবো এটা করতে? The chances are very very low but never zero.</p>

<p><strong>সমাপ্তি</strong></p>

<p>বিদায়বেলা এসে পড়লো যে! বগুড়ায় মুগ্ধের বাসায় গিয়ে আমরা তাড়াতাড়ি সব গুছিয়ে বেরিয়ে পড়ি। আমি আর সাইফ ঢাকার উদ্দেশ্য আর বাকিরা রংপুরের।</p>

<p>ফেরার পথটা ঘুমিয়েই কাটিয়ে দেই। আমরা মাঝরাতে আব্দুল্লাহপুর এসে পৌঁছাই এবং সেখান থেকে সাইফ ওর বাসায় আর আমি হলে চলে যাই।</p>

<p><strong>P.S.</strong></p>

<p>ঘটনাগুলো ঘটার প্রায় এক বছর পর এসব লিখতে বসা। কিছু জিনিস ভুলে গিয়েছি আর কিছু জিনিস ইচ্ছা করেই বাদ দেয়া হয়েছে। আর কিছু জিনিস পাবলিকলি বলার উপযোগ্য নয় বিধায় লিখা হয়নি, কখনো হবেও না। সেগুলো শুধু আমাদের স্মৃতিতেই বেঁচে থাকবে।</p>

<p>গল্প এখানেই শেষ। কিন্তু প্রতিটি শেষই তো এক নতুন শুরুর অপেক্ষা….</p>

<p><img src="/assets/blog/memories-of-north-1.webp" alt="পদ্মার চরে ক্যানডিড" />
(আরো পরিপূর্ণ পাঠক অভিজ্ঞতার জন্য প্রতিটি ঘটনার সাথে রেলেভেন্ট ছবি দেয়া যেত। কিন্ত অনেক আলসেমি লাগছে। তাই পদ্মার চরের আমার প্রিয় একটি ক্যানডিড ছাড়া আর কিছুই দিতে পারলাম না।)</p>]]></content><author><name>Mehedi Khan</name></author><category term="travel" /><summary type="html"><![CDATA[My unforgettable trip through the northwestern regions of Bangladesh. From the vibrant city of Rajshahi to the serene landscapes of Naogaon, Rangpur and Bogura, this journey was filled with adventure, hospitality and most importantly - friends.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://mehedikhan.me/assets/blog/memories-of-north-1.webp" /><media:content medium="image" url="https://mehedikhan.me/assets/blog/memories-of-north-1.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>