Eisha Enan

Eisha Enan A curious being

18/12/2025

I hate finding myself arguing over things on social media (or even in person) which I know barely has any effect at all. Seeing the amount of insanity that our country goes through, everyday, it's very difficult not to react, and most of the time it's either something political or religious. However, it is time I acknowledge the insignificance of my personal opinion and influence, and stay more reserved to myself, and focused on things that are more significant to me. I, therefore, am deciding not to engage in any kind of on going social/political/religious unrests/activities on social media, supressing the temptation to share or express my opinion which often does and will contradict the majority, leading to a bunch of back and forth comments and replies. It's also the safest thing to do, not provoking anyone or any group of people, and not puting myself at a risk of danger or harm. Some might find it cowardly/self-centric, but end of the day, I think it's definitely fair for one to prioritize their personal safety and security over anything else. I would rather observe from a distance and educate myself instead of getting into shallow arguments. This is the time for me to learn and grow as an individual, before I can have an impact on a social level.

23/11/2025

LeetCode x Lichess Stream | Solve one Leetcode problem - Play One chess game - Repeat

আমি স্টার্ক কে প্রথম ২০১৫ ওডিআই সালের ওয়ার্ল্ডকাপে নোটিস করি। ৮ ইনিংসে ২২ উইকেট নিয়ে টুর্নামেন্টের  মোস্ট উইকেট টেকার ...
22/11/2025

আমি স্টার্ক কে প্রথম ২০১৫ ওডিআই সালের ওয়ার্ল্ডকাপে নোটিস করি। ৮ ইনিংসে ২২ উইকেট নিয়ে টুর্নামেন্টের মোস্ট উইকেট টেকার হয় আর সেবার অস্ট্রেলিয়া হয় ওয়ার্ল্ড চ্যাম্পিয়ন। স্টার্কের বয়স তখন ছিলো ২৫ আর এখন ৩৫। তেমন কিছুই বদলায়নি তার আগুন ঝরানো বোলিংয়ের। ২ ইনিংসে ১০ উইকেট নিয়ে ইংল্যান্ডকে একাই কুপোকাত করল মিচেল স্টার্ক। আর ট্রাভিস হেড এর সেঞ্চুরি ছিলো চেরি অন টপ। অ্যাশেজের স্কোরলাইন অস্ট্রেলিয়া ১ - ০ ইংল্যান্ড।

17/11/2025

বাইনারি সার্চ কীভাবে কাজ করে? কেনই বা বাইনারি সার্চ ব্যবহার করা হয়?
ডেটা স্ট্রাকচার এন্ড অ্যালগরিদম ক্লাসের একটা সিম্পল ইয়েট অ্যামেইজিং এলগোরিদম হচ্ছে বাইনারি স্যার্চ। সহজ ভাষায় বাইনারি সার্চ কীভাবে কাজ করে আজকে সেটা নিয়ে লিখছি। আমার এই লিখাটি ভালো লাগলে জানাবেন। তাহলে পরে এমন আরো লিখার চেষ্টা করবো । আপনার মতামত স্বাগতম। ধন্যবাদ।
ধরুন আপনাকে আমি একটা সর্টেড লিস্ট বা অ্যারে দিলাম [3, 8, 15, 22, 28, 31, 49] মনে লিষ্টের সংখ্যাগুলো ছোট থেকে বড় বা বড় থেকে ছোট ক্রমে সাজানো আছে এবং বললাম এই লিস্টে 28 সংখ্যাটি আছে কিনা খুঁজে বের করতে, বা থাকলে কত তম পজিশন বা ইনডেক্সে আছে সেটা বের করতে। এখন স্বাভাবিক ভাবে আমাদের মাথায় যেই সল্যুশন আসবে সেট হচ্ছে লিস্টের প্রথম সংখ্যা থেকে শুরু করে শেষ পর্যন্ত চেক করা এবং দেখা যে এর কোনোটা আমাদের টার্গেট 28 কিনা। এই সল্যুশন অবশ্যই কার্যকর কিন্তু অনেক স্লো কাজ করবে যখন আমাদের লিস্ট অনেক বড় হবে। আমাদের লিস্টে যদি ১০০০টি সংখ্যা থাকে তাহলে এই সল্যুশনকে ১০০০ বার চেক করতে হতে পারে যদি আমাদের টার্গেট সংখ্যাটি শেষের দিকে থেকে থাকে বা একবারে না থাকে। অর্থাৎ লিস্টের সাইজ যদি n হয় তাহলে worst case scenario তে আমাদের সল্যুশনকে n সংখ্যক চেক করতে হবে যেটাকে বইয়ের ভাষায় O(n) টাইম কমপ্লেক্সিটি বলা হয়।

এখন এই একই কাজ অনেক দ্রুত করা যায় বাইনারি সার্চ অ্যালগরিদম ব্যবহার করে। যেহেতু বলা আছে আমদের লিস্টের সংখা গুলো বড় থেকে ছোট বা ছোট থেকে বড় আকারে সাজানো, তাই আমরা ইন্ডিভিডুয়ালি প্রত্যেকটা এলিমেন্ট চেক না করেই আনসার পেতে পারি। টেকনিকটা হচ্ছে যে, আমরা আমাদের লিস্টের প্রথম এবং শেষ এলিমেন্ট এর ইনডেক্সকে start এবং end হিসেবে বিবেচনা করে এদের গড় middle = (start + end) // 2 ক্যালকুলেট করতে পারি। এর পর middle এলিমেন্ট এর ভ্যালু আমাদের টার্গেট এর থেকে ছোট নাকি বড় সেটা চেক করবো। আমাদের middle এলিমেন্ট যদি টার্গেট এলিমেন্ট এর সমান হয় তাহলে তো হলই আমরা আমাদের টার্গেট খুঁজে পেয়ে গেছি। কিন্তু যদি middle > target হয় তাহলে আমাদের আমাদের টার্গেট সংখ্যাটি middle এর বাম পাশে আছে। তাই আমরা middle এর ডান পাশের সংখ্যাগুলো ইগনোর করতে পারি যেহেতু সেগুলো সবই আমাদের target সংখ্যার চেয়ে বড় হবে ।অপরভাবে যদি middle < target হয় তাহলে আমাদের target এলিমেন্ট middle এর ডান পাশে থাকবে।
উদাহরণ হিসেবে আমাদের লিস্ট nums = [3, 8, 15, 22, 28, 31, 49] এবং target = 28 হলে এখানে start = 0, end = 7, middle = (0 + 7) // 2 = 3, nums[middle] = nums[3] = 22। এখন 22 (middle) < 28 (target), তাই আমরা এখন start এর ভ্যালুকে আপডেট করতে পারি start = middle + 1 বা start = 3 + 1 = 4 নিতে পারি, আর end = 7 ই থাকছে ।এর মানে হচ্ছে আমাদের target সংখ্যা 28 লিস্টের 4th এবং 7th ইনডেক্সের মধ্যে থাকবে যদি এটি লিস্টে থেকে থাকে।
একইভাবে লুপের দ্বিতীয় ইটারেশনে start = ৪, end = ৭, middle = (4 + 7) // 2 = 5, nums[5] = 31, এবার 31 (middle) > 28 (target). আমরা তাই এবার end এর ভ্যালু আপডেট করবো middle এর ভ্যালু অনুযায়ী, end = middle - 1, বা end = 5 - 1 = 4।
এখন তৃতীয় ইটারেশনে start = 4, end = 4, middle = (4+4) // 2 = 4, nums[4] = 28 (target), তার মানে আমাদের টার্গেট সংখ্যাটি লিস্টে 4th ইনডেক্স এ আছে। আর যদি start এবং end এর ভ্যালু সমান হয়ে যায় (start == end) বা start এর ভ্যালু end এর থেকে বড় হয়ে যায় (start > end) কিন্তু এর মধ্যে আমাদের target সংখ্যা খুঁজে না পাই তার মানে আমাদের টার্গেট সংখ্যাটি লিস্টে নেই। পাইথন কোড আকারে বাইনারি সার্চ অনেকটা এমন।
def binary_search(nums, target)
start = 0 # First index
end = len(nums) - 1 # Last index
while start < end:
middle = (start + end) // 2
if nums[middle] < target:
start = middle + 1
elif nums[middle] > target:
end = middle - 1
else: # nums[middl] == target
return middle
return -1 # target not found
এখন কথা হচ্ছে এত ঝামেলা করার বেনিফিট কি ? বাইনারি সার্চে আমাদের লুপ প্রত্যেক বার লিস্টকে (সার্চ স্পেসকে) অর্ধেক করছে। অর্থাৎ আমরা প্রত্যেকবার আমাদের লিস্টকে মাঝামাঝি ভাগ করে অরপ্রয়োজনীও ভাগ কে ইগনোর করছি (ওই ভাগে আমাদের খুঁজার প্রয়োজন নেই ) এতে করে প্রত্যেক ইটারেশন পর আমাদের সার্চ স্পেস অনেক ছোট হতে থাকে। যদি আমাদের লিস্টে ১০০০ টি সংখ্যা থাকে প্রথম ইটারেশন পর ৫০০, এর পর ২৫০, এর পর ১২৫ এভাবে ছোট হতে থাকবে । অর্থাৎ আমাদের লিস্টের সাইজ যদি n হয় তাহলে আমরা সর্বোচ্চ log(n) টা চেকের মধ্যেই আনসার পেয়ে যাব যেটা লিনিয়ার সার্চের থেকে অনেক সময় সাশ্রয়ী। লিস্টের সাইজ n = ১ বিলিয়ন হলে আমাদের লিনিয়ার সার্চে যেখানে ১ বিলিয়ন চেক করতে হতে পারে সেট বাইনারি সার্চ ব্যবহার করে সর্বোচ্চ ৩০টা সার্চ করেই খুঁজতে পারবো! ১ বিলিয়ন চেক vs মাত্র ৩০টা চেক! এজন্য প্রোগ্রামাররা অনেক সময়েই O(n) (liniar time complexity) অ্যালগরিদম এর থেকে O(log(n)) (logarithmic time complexity) এর অ্যালগরিদম বা সলিউশন বেশি প্রেফার করে কারণ এটি অনেক সময় সাশ্রয়ী যখন ইনপুট সাইজ অনেক বড় হয়। বাইনারি সার্চ প্রাকটিস করতে আগ্রহী যারা তাদের জন্য আমি কমেন্টে একটা LeetCode প্লে-লিস্ট অ্যাড করে দিচ্ছি। Happy Coding!

Vibe Coding  নিয়ে সবার  ভিন্ন ভিন্ন প্রতিক্রিয়া থাকলেও আমার কাছে এটা নেট পজিটিভ একটা জিনিস। Vibe Code করে আমার মন মতো ...
11/11/2025

Vibe Coding নিয়ে সবার ভিন্ন ভিন্ন প্রতিক্রিয়া থাকলেও আমার কাছে এটা নেট পজিটিভ একটা জিনিস। Vibe Code করে আমার মন মতো একটা Session Manager ওয়েব অ্যাপ বানালাম যেটা আমার স্টাডি সেশন ম্যানেজমেন্ট এ সাহায্য করছে। এরকম অনেক পেট প্রজেক্ট যেগুলো হয়তো সময় এবং সুযোগ স্বল্পতার কারণে কখনও করা হতো না সেগুলো এখন ChatGPT - Claude এর সাহায্য নিয়ে অনেক অল্পতেই করতে পারছি। আমার গো টু প্রোগ্রামিং ল্যাঙ্গুয়েজ Python কিন্তু এই পুরো ওয়েব অ্যাপটাই React JS এ যেটা আমার আগে তেমন ব্যবহার করা হয়নি। এটাই হচ্ছে ভাইব কোড এর সুপার পাওয়ার।

Session Manager - A web app to track daily study/work sessions
_ Create/Update/Delete Tasks, where each task can have a tag, duration, and completion status.
_ Sub tasks can be added to breakdown a task into smaller tasks
_ Timer to keep track of time spent on each with a progress bar
_ Sorting based on different features
_ Export as CSV for logging

এগুলো বেয়ার মিনিমাম ফিচার্স আপাতত। আরও অনেক গুলো ফিচার্স অ্যাড করব হয়তো সময়ের সাথে নিজের প্রয়োজনে। যেমন Python দিয়ে লগ ফাইল গুলো থেকে কিছু সুন্দর ভিজুয়ালাইজেশন নিয়ে একটা ড্যাশবোর্ড।

#প্রোগ্রামিং #বাংলা

I just finished reading my 8th book of the year and I’m open to some recommendations.
24/09/2025

I just finished reading my 8th book of the year and I’m open to some recommendations.

05/08/2025

মানুষের স্বভাব, মনোভাব এবং আর্থিক সাক্ষরতা (ফাইন্যান্সিয়াল লিটেরেসি) নিয়ে একটি কথা প্রচলিত আছে— "পৃথিবীর সব ধনসম্পদ যদি সমানভাবে সকলের মাঝে পুনরায় বণ্টন করে দেওয়া হয়, তাহলেও অল্প কিছুদিনের মধ্যেই সেই ধনসম্পদ আবার একই হাতে ফিরে আসবে।" অর্থাৎ, যারা পূর্বে দরিদ্র ছিল, তারা খুব শীঘ্রই আবার দারিদ্র্যের দুষ্টচক্রে পড়ে যাবে।

বাংলাদেশের মতো তৃতীয় বিশ্বের দেশগুলোর জন্যও এই কথাটি অনেকাংশেই প্রযোজ্য। ৫ই আগস্ট হাসিনার পলায়নের পরপরই, বছর না পেরোতেই চাঁদাবাজি, হানাহানি, আর মানুষের নিষ্ঠুরতা আবারও আগের রূপে ফিরে আসছে। মানুষ অভ্যাসের দাস। আর একটি পুরো জাতির আচরণ, মানসিকতা ও অভ্যাসের পরিবর্তন হওয়া একটি দীর্ঘ সময়ের ব্যাপার। এজন্য কয়েক দশক, এমনকি কয়েক শতকও লেগে যেতে পারে। আর এর মাঝেই যদি আমরা আবার ক্ষমতার অপব্যবহারের শিকার হই—যেটার আশঙ্কা যথেষ্ট বাস্তব—তাহলে হয়তো আমাদের জীবদ্দশায় আর ভালো পরিবর্তনের মুখ দেখা হবে না।

এতসব দুশ্চিন্তা, আশঙ্কা ও সম্ভাবনা সত্ত্বেও, সবাইকে দ্বিতীয় স্বাধীনতার সুবর্ণজয়ন্তীর আন্তরিক শুভেচ্ছা জানাই। একক বা ব্যক্তিগত স্বার্থের ঊর্ধ্বে উঠে আপামর জনসাধারণের ঐক্যবদ্ধ চেষ্টার ফলেই ৫ই আগস্ট সফল হয়েছিল। স্বৈরাচারের বিরুদ্ধে একত্রিতভাবে যেভাবে আমরা এক বছর আগে দাঁড়িয়েছিলাম, ঠিক সেভাবেই যদি আমরা দেশের পুনর্গঠনে সম্মিলিত প্রচেষ্টা চালিয়ে যেতে পারি— তবেই আমরা প্রকৃত অর্থে মুক্তির স্বাদ পেতে পারবো।

বাংলাদেশ চিরজীবী হোক।

The reason I love programming is because of moments like this — when I get to build something small, fun, and genuinely ...
01/08/2025

The reason I love programming is because of moments like this — when I get to build something small, fun, and genuinely useful.
🎴 Study Session Card Draw is a lightweight web app I built to gamify my study routine — and now I’m sharing it in case it helps others too.
Here’s how it works:
🃏 Draw a card to set your study time
🃏 Draw another to set your break time
The durations are based on simple formulas and mapped to healthy, realistic ranges.
💡 The idea: Let chance make your study sessions more playful and structured — and maybe even a bit addictive.
🧰 Tech Stack:
Python (CLI + AWS Lambda backend)
HTML + Tailwind CSS frontend (hosted via S3)
API Gateway + Lambda for simple serverless logic
Card images from deckofcardsapi.com
🎯 Try it out here:
🔗 https://github.com/EishaEnan/randomised-sessions
📂 Code is open-source:
🔗 https://study.eishaenan.com/
Would love your thoughts — or ideas for what to build next!

Address

Sydney, NSW

Alerts

Be the first to know and let us send you an email when Eisha Enan posts news and promotions. Your email address will not be used for any other purpose, and you can unsubscribe at any time.

Contact The Business

Send a message to Eisha Enan:

Share