Monday, November 21, 2016

হ্যাশ ফাংশন -২

আগের পোস্টের সমস্যাটি হলো- দুটি ভিন্ন ভিন্ন স্ট্রিং হ্যাশ ফাংশনে দিলে যদি একই ভ্যালু পাওয়া যায় তাহলে কী হবে? উত্তরটির জন্য পুরো আর্টিক্যাল পড়তে হবে।

এখন শুরুতে আমি একটি প্রশ্ন করি, দুটি ভিন্ন স্ট্রিংয়ের জন্য হ্যাশ ফাংশন কি একই ভ্যালু রিটার্ন করতে পারে? উত্তরটি নির্ভর করে তোমার হ্যাশ ফাংশনের উপর। তুমি কীভাবে সেটি ইমপ্লিমেন্ট করছো তার ওপর। তবে বাস্তবে কোনো হ্যাশ ফাংশনই শতভাগ এই নিশ্চয়তা দেয় না যে, সে সবসময়ই ভিন্ন ভিন্ন স্ট্রিংয়ের জন্য ভিন্ন ভিন্ন ভ্যালু রিটার্ন করবে।

আরো গভীরে যাওয়ার আগে সমস্যাটা নিয়ে আরো একটু আলোচনা করি। মনে করো, তোমার হ্যাশ ফাংশনটি খুবই সাধারণ। এটি অ্যারেতে উপাদানগুলো বর্ণানুক্রমে স্থান দেয়। তোমার পণ্যগুলো যথাক্রমে আদা, রসুন, পেঁপে, কলা ইত্যাদি হয় এবং তোমার অ্যারের সাইজ যদি 10।





উপরের ছবি দুটি থেকে দেখতে পাচ্ছো, আদা, কলা, পেঁপে, রসুন এবং মরিচ এগুলোর হ্যাশ ভ্যালু যথাক্রমে ১,২,৩ ও ৭, ৮। সুতরাং এগুলো অ্যারের ০,১,২ ও ৬,৭ নম্বর ইন্ডেক্সে বসনো হয়েছে। কিন্তু জীবন তো আর পুষ্পশয্যা নয়। একটু পরেই এসেছে আম। আর তোমার হ্যাশ ফাংশন এর জন্যে ভ্যালু রিটার্ন করেছে ১।

সমস্যাটি নিশ্চয় বুঝতে পারছো। এই সমস্যাকে বলা হয় কলিশন (collision)। এখন তুমি যদি অ্যারের ১ নম্বর ইনডেক্সে আমের দাম রাখো, তাহলে আগের আদার দামের সাথে এটি রিপ্লেস হয়ে যাবে। এতে করে তুমি যদি পরবর্তীতে আদার দাম দাও, তোমার হ্যাশটেবিল আমের দাম দিয়ে দিবে যা হওয়া উচিৎ নয়।

কলিশন সমাধানের উপায় কী হতে পারে? এ সমস্যা সমাধানের আসলে অনেকগুলো উপায় হতে পারে। তবে সবচেয়ে সহজ উপায় হলো, যে সব পণ্যের হ্যাশ ভ্যালু একই সেগুলোকে একই স্লটে রাখা এবং এজন্যে লিংকডলিস্ট ব্যবহার করা।

লিংকডলিস্টের নাম নিশ্চয় শুনেছো এবং আমার ধারণা প্রত্যেকেই ইমপ্লিমেন্ট করেছো। লিংকডলিস্ট হচ্ছে ট্রেনের মতো। একটির পেছনে আরেকটি বগি জোড়া লাগিয়ে তাতে ভ্যালু রাখা।

তবে এতেও একটি সমস্যা আছে। তোমার মুদির দোকানের সবগুলো পণ্য যদি একটি নির্দিষ্ট বর্ণ দিয়ে শুরু হয় তাহলে প্রথম স্লটে একটি বিশাল চেইন হবে। এক্ষেত্রে হ্যাশ টেবিল থেকে কোন পণ্যের দাম খুঁজে আনার সময় আর O(1) থাকবে না বরং সেটি হয়ে যাবে O(n)। কারণ তখন তোমাকে লিংকডলিস্ট থেকে উপাদানটি খুঁজতে হবে। লিংকডলিস্ট থেকে কোন উপাদান খুঁজে বের করতে সময় লাগে O(n)।



উপরের ছবি থেকে নিশ্চয় দেখতে পাচ্ছো সমস্যাটি কোথায়? তোমার অ্যারের বাকি স্লটগুলো প্রায় খালি রয়ে গেছে।
তাহলে এখান থেকে দুটি বিষয় জানা গেলো –
১. হ্যাশ ফাংশন অনেক গুরুত্বপুর্ণ। এটি খুব সিম্পল হলে সমস্যা।
২. প্রত্যেকটি স্লটেই যদি অনেক বড় লিংকলিস্ট থাকে, তাহলে কনস্ট্যান্ট টাইম অর্থাৎ O(‌1) সময়ে তুমি উপাদান খুঁজে বের করতে পারছো না।
এখন যদি তুমি একটি ভালো হ্যাশ ফাংশন লিখতে পারো, এবং প্রত্যেক স্লটেই যাতে বিশাল লিংকডলিস্টের চেইন না হয় তা নিশ্চিত করতে পারো তাহলেই O(‌1) সময়ে হ্যাশ টেবিল থেকে ভ্যালু পড়তে পারবে।

এবার Load Factor বলে একটা টার্ম আছে, এটি নিয়ে একটু বলি তোমাদের। একটি হ্যাশটেবিলের লোড ফ্যাক্টর খুব সহজেই বের করা যায়।

Load Factor = Number of items in the hash table / Total slot in the array


তাহলে তোমার অ্যারেতে যদি স্লট হয় 10 এবং উপাদানের সংখ্যা যদি হয় ৭ তাহলে লোড ফ্যাক্টর হবে- 0.7। এটি দিয়ে একটি হ্যাশটেবলি কতগুলো স্লট ফাকা আছে তা বের করা যায়। একটি হ্যাশটেবিলের লোড ফ্যাক্টর যদি 1 হয় তাহলে এর বোঝায়, এর প্রত্যেকটি স্লটে একটি করে উপাদান রয়েছে। লোড ফ্যাক্টর একের অধিক থাকার অর্থ হলো, টেবিলের কোন স্লটে একাধিক উপাদান রয়েছে।

কনস্ট্যান্ট টাইম অর্থাৎ O(1) সময়ে কোন উপাদান খুঁজে পাওয়া নিশ্চিত করতে চাইলে লোড ফ্যাক্টর সবসময় একের নিচে রাখতে হবে। এটি করার জন্যে যখনই লোড ফ্যাক্টর ১ এর বেশি হবে তখনই টেবিলকে রিসাইজ করে আবার প্রত্যেকটি উপাদানের হ্যাশ ক্যালকুলেট করে বিভিন্ন স্লটে বসাতে হবে। এই অপারেশনটি মোটামুটি এক্সপেনসিভ। তবে তুমি কনস্ট্যান্ট টাইম উপাদানগুলো খুঁজে পাচ্ছো টেবিলের সাইজ যতোই হোক না কেনো।

তাহলে উপরের আলোচনা থেকে নিশ্চয় বুঝতে পারছো যে, যদিও কনস্ট্যান্ট টাইমে আমরা উপাদান খুঁজে বের করতে চাচ্ছি, কিন্তু সবসময় তা সম্ভব নয়। তবে best case এটি অবশ্যই O(1) হবে এবং worst case-এ এটি O(n) হতে পারে।

Sunday, November 20, 2016

হ্যাশ ফাংশন

মনে করো, তুমি একটি মুদি দোকান দিয়েছো। তোমার দোকানে হরেকরকম পণ্যদ্রব্য রয়েছে। এই পণ্যগুলোর নাম ও দাম আলাদা আলাদা। এগুলো মনে রাখতে গিয়ে তুমি হিমশিম খাচ্ছো। তুমি সবগুলো খাতায় লিখে রেখেছো। যখনই তুমি একটি পণ্য বিক্রি করো, তোমাকে সেই খাতা দেখতে হয়। খাতা থেকে খুঁজে বের করতে হয়।

খাতাতে যদি নামগুলো বর্ণানুক্রমে রাখা না থাকে, তাহলে তোমার প্রতিবার খুঁজে বের করতে অনেক সময় লাগে। অ্যালগরিমদ ক্লাসে নিশ্চয় শিখেছো যে এক্ষেত্রে খুঁজে বের করার সময় O(n) । তবে নামগুলো যদি বর্ণানুক্রমে রাখা থাকে তাহলে বাইনারি সার্চ ব্যবহার করা যায় আর তখন সময় লাগবে O(log n)। তুমি নিশ্চয় জানো যে O(n) চেয়ে O(log n) কম সময় লাগে।

চিত্র: O(n) vs O(log n) 

যদিও O(log n) কম সময় লাগছে, তবুও কিছুটা সময় লাগছে। সবচেয়ে ভাল হতো যদি কোন সময়ই না লাগতো। তুমি সবগুলো পণ্যের নাম এবং দাম মুখস্থ করে ফেলতে পারতে এবং ক্রেতা কোন পণ্যের নাম বলার সঙ্গে সঙ্গেই তুমি দাম বলে দিতে পারতে।

চলো, তাহলে কিভাবে এই সমস্যার সমাধান করা যায়, তার একটা উপায় বের করে ফেলি। এর জন্যে একটি বিশেষ উপায় আছে যার নাম হ্যাশ ফাংশন। হ্যাশ ফাংশন এমন একটি ফাংশন যাতে একটি স্ট্রিং ইনপুট হিসেবে দিলে তা একটি ইন্টিজার রিটার্ন করে। এই ফাংশন একই স্ট্রিং এর জন্যে সবসময় একই সংখ্যা রিটার্ন করে।

তুমি নিশ্চয় অ্যারে সম্পর্কে জানো। এটি একই রকম ডেটাটাইপের অনেকগুলো ডাটা ধরে রাখতে পারে।এখন মনে করো, তুমি প্রত্যেকটি পণ্যের নামের জন্যে এর দাম অ্যারেতে রাখতে চাও। এক্ষেত্রে নামগুলো দিয়ে যদি একটি হ্যাশ ফাংশনের মধ্যে দিই, এবং হ্যাশ ফাংশন যে ইন্টিজার রিটার্ন করে সেই ইন্টিজারকে ইনডেক্স হিসেবে ব্যবহার করে অ্যারেতে পণ্যের দাম রাখতে পারি। এই অ্যারেকে আমরা বলি হ্যাশ টেবিল।

মনে করো, তোমার ১০ সাইজের একটি অ্যারে রয়েছে। এখন, ধরো, পেঁপের দাম ২০ টাকা। পেঁপে নামটি যদি হ্যাশ ফাংশনে দাও, তাহলে এটি যদি ৪ রিটার্ন করে, তাহলে অ্যারের চতুর্থ নম্বর ইনডেক্সে পেঁপের দামর রেখে দেবে। এভাবে আদার নাম হ্যাশ ফাংশনে দিলে যদি ৩ রিটার্ন করে, তাহলে তাকে তিন নম্বর ইনডেক্সে রেখে দিলে। এভাবে কলা, মরিচ ইত্যাদি রেখে দিলে। এখন যখন তোমার এগুলো দাম জানার দরকার হয়, তাহলে চট করে হ্যাশ ফাংশনে নামটি দিয়ে তার ইনডেক্সটি বের করে নিলে। অ্যারতে ইনডেক্স জানলে ভ্যালু পড়ে আনা খুব সহজ। অ্যারে থেকে ভ্যালু পরে আনার সময় আসলে O(1) ।

চিত্র: হ্যাশ ফাংশন


চিত্র: হ্যাশ টেবিল


এখন তুমি নিজে নিজে তোমার পছন্দের কোন পোগ্রামিং ল্যাংগুয়েজে এটি ইমপ্লিমেন্ট করে দেখতে পারো। সাধারণত সবগুলো আধুনিক প্রোগ্রামিং ল্যাংগুয়েজে এই ডেটা স্ট্রাকচার তৈরি করে দেওয়া থাকে, তবে এটি সম্পর্কে জানাটা জরুরী। এতে করে তুমি নিশ্চিত করে কোথায় কোথায় ব্যবহার করা যায় বুঝতে পারবে।

উপরের যে উদাহরণটি দিয়েছি তাতে একটি সমস্যা রয়েছে। সেটি নিয়ে পরবর্তীতে আলোচনা করবো। তবে সমস্যাটি তুমি চিন্তা করে যদি খুঁজে বের করতে পারো তাহলে নিচে কমেন্ট করে জানাও।

পরের অংশ:  লিংক

Thursday, November 3, 2016

জাভা ইন্টারফেস এর ক্ষেত্রে multiple inheritance সাপোর্ট করলেও ক্লাসের ক্ষেত্রে কেনো করে না ?

জাভা প্রোগ্রামিং ল্যাংগুয়েজের ডিজাইনাররা কয়েকটি গুরুত্বপূর্ণ বিষয় মাথায় রেখে এই ল্যাংগুয়েজকে ডিজাইন করে। এগুলো হলো-
  1. এটি হতে হবে খুবই সিম্পল, অবজেক্ট ওরিয়েন্টেড এবং পরিচিত, অর্থাৎ যারা তখন সি বা সি++ জানতো তারা যাতে করে সহজেই বুঝতে পারে।
  2. এটিকে অবশ্যই অনেক শক্তসমর্থ এবং নিরাপদ (robust and secure) হতে হবে।
  3. এটি যেকোন অপারেটিং সিস্টেমে চলবে।
  4. এর পারফর্মেন্স অনেক ভাল হতে হবে ।
  5. এটি ইন্টারপ্রেটেড, থ্রেডেড এবং ডাইনামিক হতে হবে। (এখানে বলে রাখি, জাভা যদিও কম্পাইল্ড ল্যাংগুয়েজ, কিন্তু জাভা ভার্চুয়াল মেশিন মূলত বাইটকোড ইন্টারপ্রেট করে আর জেভিএম একটা ডাইনামিক মেশিন)।
এই কয়কেটা উদ্দেশ্যের সাথে আরেকটি গুরুত্বপূর্ণ জিনিস হলো- এর ল্যাংগুয়েজ ফিচার খুব অল্প হতে হবে যাতে একজন প্রোগ্রামার খুব সহজেই মনে রাখতে পারে। যেসব ফিচার খুব ঝামেলাযুক্ত এবং আসলে তেমন প্রয়োজন নেই খুবএকটা সেগুলোকে তারা বাদ দিয়ে ডিজাইন করেছে। যেমন- অপারেটর ওভারলোডিং, মাল্টিপল ইনহেরিটেন্স। এগুলো সুবিধার চেয়ে প্রোগ্রামারদের অসুবিধার কারণ বেশি তৈরি করে।
মাল্টিপল ইনহেরিটেন্সের ক্ষেত্রে একটি বড় সমস্যা হলো ডাইমন্ড সমস্যা। একটি উদাহরণ দেওয়া যাক- মনে কর, একটি ক্লাস A, একে B ও C এক্সটেন্ড করে। আবার আরেকটি ক্লাস D যা কিনা B ও C কে এক্সটেন্ড করে। এখন ধরো, যদি A এর কোনো একটি মেথডকে B ও C দুটিই ওভারাইড করে। এখন যদি D থেকে সেই মেথডটি কল করতে চাও, তাহলে সেটি কোন ক্লাসের মেথডকে কল করবে ? B না C ? সমস্যাটি নিশ্চয় বোঝা যাচ্ছে? 
ইন্টারফেসের ক্ষেত্রে এই সমস্যা হওয়ার কোন উপায় নেই, কারণ প্রত্যেকটি ক্লাস যেহেতু মেথডগুলো ইম্প্লিমেন্ট করবে, তাই সবাই আসলে নিজের মেথডকেই কল করবে।
জাভা ডিজাইনাররা এরকম সমস্যার মধ্য দিয়ে যেতে চায় নি। তাই জাভাতে মাল্টিপল ইনহেরিটেন্স নেই।

Ref: http://programabad.com/questions/5613/multiple-inheritence/5614

Tuesday, November 1, 2016

কীভাবে ভাল প্রোগ্রামার হওয়া যায়

এই প্রশ্নটি অনেকেই করে থাকে। এর একটি নির্দিষ্ট উত্তর নেই। তবে আমার মনে হয় প্রোগ্রামিং মূলত দুটি বিষয়ের সংমিশ্রণ। 

এক, চিন্তা করার ক্ষমতা ।
দুই, অনুশীলণ। 


এই দুটিই লাগে প্রোগ্রামিং করার জন্যে। এই দুটির একটি বাদ পরলে ভাল প্রোগ্রামার হওয়ার কোন উপায় নেই।

শুরুতে চিন্তার করার ক্ষমতা নিয়ে কথা বলি। একটি প্রোগ্রাম লিখে সাধারণত আমরা আমাদের চারপাশের বাস্তব জগতের কিছু সমস্যা সমাধান করার চেষ্টা করি। কোন সমস্যা সমাধান করার জন্যে চিন্তা ভাবনা করতে হয়। সমস্যাটির সমাধান বের করতে হয়। যেকোনো সমস্যা সমাধানেের ক্ষেত্রেই গুছিয়ে চিন্তা করার জানতে হবে। সমস্যাগুলো ভেঙ্গে ছোট ছোট অংশে পরিণত করা শিখতে হবে। তারপর সেই ছোট ছোট সমস্যাগুলো সমাধান করে করে মূল সমস্যা সমাধান করা হয়। এটি অংক করার মতো। ধাপে ধাপে লাইন বাই লাইন আগাতে হয়। প্রোগ্রামিংয়ের ক্ষেত্রেও তাই। সমস্যাকে বিভিন্ন দিক থেকে দেখে কিভাবে সমাধান করা যায় তা খুঁজে বের করতে হয়। চিন্তা করার ক্ষমতা বাড়ানোর জন্য বেশি বেশি সমস্যা নিয়ে চিন্তা করতে হবে, বেশি সমস্যা সমাধান করতে হবে। এর বাইরে কোন উপায় নেই।

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

এই দুটি একটা লম্বা সময় ধরে করতে থাকলে একসময় আপনি নিজেই বুঝতে পারবেন যে আপনি একজন ভাল প্রোগ্রামার হয়ে গেছেন।

ম্যালকম গ্ল্যাডওয়েলের একটি বই- Outliers-এ তিনি উল্লেখ করেছেন যে, যে কোন বিষয়ে মাস্টার হতে হলে রাফলি ১০ হাজার ঘণ্টা অণুশীলন করতে হয়। সে অনুযায়ী আপনি যদি সপ্তাহে ৫ দিন ৪ ঘণ্টা করে অনুশীলন করেন, আপানর লাগবে প্রায় ১০ বছর।

নিচে একটি লিংক দিয়ে দিলাম। এটি ব্যবহার করে আপনি নিজেই ঠিক করে নিন প্রতিদিন কত ঘণ্টা এবং সপ্তাহে কতদিন অণুশীলন করবেন-http://ryac.ca/10000-hours-how-long-is-that/



Sunday, October 23, 2016

5 Mistakes Java developer makes that prevent them from growing their careers

ব্রুনো সোজা (Bruno Souza) জাভা ডেভেলপারদের ক্যারিয়ার উন্নতির লক্ষ্যে একটি নতুন সাইট তৈরি করেছে। গতকাল তার একটি ওয়েবইনার ছিল। এর টপিকটি হলো- একজন জাভা প্রোগ্রামার তার ক্যারিয়ার উন্নতির ক্ষেত্রে যে ৫ টি ভুল করে থাকে তার উপর। 

ওয়েবইনারটির লিংক: https://www.youtube.com/watch?v=pFbMYZUUT8Q


তবে এটিকে আমি বাংলাতে সংক্ষেপে বলার চেষ্টা করবো। তিনি শেষ থেকে শুরু করেছেন । এখানেও সেভাবেই লিখছি - 

পঞ্চমত, শুধুমাত্র টেকনোলজি জানলেই চলবে। 

ডেভেলপারা নিজেদের সময়ের সাথে নিজেদের নৈপুণ্য ধরে রাখতে এবং তা উত্তরোত্তর উন্নত করতে অনেক কাজ করে থাকে, প্রতিনিয়ত নতুন কিছু দেখে এবং শেখে। তবে একজন ভাল ডেভেলপার হওয়ার জন্যে এগুলোই একমাত্র বিষয় নয়। টেকনোলজি শেখার বাইরেও অনেক কিছু করতে হয়। যে জিনিসগুলো একজনের ক্যারিয়ারে সবচেয়ে বেশি প্রভাবিত করে তা শুধুমাত্র টেকনোলজি নয়। সফটওয়্যার কোম্পানিগুলোতে হায়ারিংগুলো সাধারণত পরিচিত নেটওয়ার্কের মধ্যে থেকেই বেশির ভাগ ক্ষেত্রে হয়ে থাকে। যাদের ইতিমধ্যে হায়ার করা হয়েছে তাদের পরিচিত রেফারেন্সের উপর ভিত্তি করে অনেক হায়ার হয়ে থাকে। এ জন্যে অনেক ভাল ভাল জবগুলো সাধারণত সহজে খুঁজে পাওয়া যায় না। সফটওয়্যার ফার্মগুলোর জব নোটিশগুলো সাধারণত তখনি প্রকাশ্যে পাওয়া যায় যখন তারা তাদের পছন্দমত লোক খুঁজে পায়নি নিজেদের নেটওয়ার্কের মাঝে। এক্ষেত্রে আপনি যদি দ্রুত হায়ার্ড হতে চান, তাহলে নিজেকে পরিচিত করে তুলতে হবে। আপনি যে জাভাতে এক্সপার্ট এই তথ্যটি যারা হায়ার করছে তাদের জানাতে হবে। তারা আপনাকে হায়ার করছে না কারণ আপনি হয়তো কখনো ইন্টারেস্ট দেখান নি। আপনাকে ভিজিবল হতে হবে। বিভিন্ন সোসাল কর্মকাণ্ডের সাথে নিজেকে জড়াতে হবে। জাগবিডির (http://www.jugbd.org) ইভেন্টগুলোতে যোগ দিতে পারেন। কোন ওপেন-সোর্স টেকনোলজিতে অংশগ্রহণ করতে পারেন। নিজে নিজে একটা সফটওয়্যার বা এপিআই লিখে সেগুলো শেয়ার করতে পারেন। কারণ আপনি নিজেও হয়তো জানেন না কতরকম অপরচুনিটি আসতে পারে। কেও হয়তো নতুন স্টার্টআপ দিতে পারে যেখানে আপনার মতো একজন ডেভলপারের প্রয়োজন হতে পারে। ইত্যাদি। 

চতুর্থত, অনেক বেশি অনুশীলন বা চর্চা না করা 

প্রচুর অনুশীলন করতে হবে। সফটওয়্যার ডেভেলপমেন্ট একটি ক্রিয়েটিভ প্রক্রিয়া। এতে প্রচুর চিন্তাভাবনার ব্যপার থাকে। কিন্তু এই কাজ করতে যেয়ে যদি ছোটখাটো ইস্যাুুগুলো যেমন- কিভাবে লুপ লিখতে হয়, কিভাবে ল্যাম্বডা ব্যবহার করতে হয় এগুলো নিয়ে চিন্তা করতে হয়, তাহলে মূল বিষয়টিতে বেশি মনযোগ দেওয়া কঠিন হয়ে যায়। এজন্যে কম্যান্ড লাইন, কমন এলগরিদম, ল্যাম্বডা এগুলোকে প্রচুর অনুশীলনের মাধ্যমে একদম হাতের মেমরিতে নিয়ে আনুন যাতে এগুলো করার সসয় খুব বেশি চিন্তা না করতে হয়। 

তৃতীয়ত, আপনি যা জানেন তা অন্যদের সাথে শেয়ার না করা 

অনেকেই আছে যারা শেয়ার করতে পছন্দ করে না। অনেকটা এমন, এই জিনিস আমি জানি, সুতরাং এটি অন্য কাওকে জানাবো না, অন্যের দরকার হলে আমার কাছে আসবে। আরেক দল আছে যারা মনে করে যে তারা শেয়ার করার মতো তেমন কিছু জানে না। ব্যপারটি সত্য নয়। প্রত্যেকেই কিছু না কিছু জানে। অনেকে আবার ভয় পায়। মনে করে, আমি তো জানি না কীভাবে শেয়ার করতে হয় কিংবা আমি তো ভাল বলতে পারি না বা আমার ইংরেজি ভাল নয় ইত্যাদি। কিন্তু এই শেয়ারিং না করা ক্যারিয়ারের জন্যে খারাপ হতে পারে। মূল বিষয় হচ্ছে আপনি যত বেশি শেয়ার করবেন, অন্যরা আপানার সাথে তত বেশি শেয়ার করবে। এতে আপনিও অনেক বেশি লাভবান হবেন। এতে আপনার টিম অনেক ভাল ভাবে কাজ করতে পারবে। আপনি যত বেশি শেয়ার করবেন, আপনার টিম-এ আপনি তত বেশি ভ্যালুয়েবল হবেন। এছাড়াও যত বেশি শেয়ার করবেন, আপনার আশে পাশের লোকজন সেগুলো সম্পর্কে জানবে, এতে করে সবসময় আপনাকে প্রশ্ন করতে আসবে না। এতে আপনার টাইম বেঁচে যাবে। এছাড়াও এটি আপনাকে ভিজিবল করে তুলবে যা পঞ্চম মিসটেকও শুধরে দেবে। 

আরেকটি কঠিন সত্য ব্যপার হলো, মানুষ আসলে আপনাকে খুব একটা কেয়ার করে না। আপনি আসলে তাদের জন্যে কি করতে সেটাই মুখ্য। সুতরাং আপনি যত বেশি শেয়ার করবেন, আপনি অন্যের জন্যে ততবেশি প্রয়োজনীয় হয়ে উঠবেন। 

দ্বিতীয়ত, ফোকাস 


আপনি নিজে দুনিয়ার সব মানুষকে অ্যাকসসে করতে পারবেন না বা সবার সঙ্গে সবকিছু শেয়ার করতে পারবেন না। আপনাকে একটি নির্দিষ্ট বিষয়ে ফোকাস করতে হবে। 

এক্ষেত্রে একটি স্পেসিফিক একটি লাইন ফলো করা যেতে পারে- 

I help (a person) to do (something) so he/she can have (something) 

Example - 

I help my coworker to learn Java so he/she can program in Java 

I help professional java developers do solve hard Java problems so they can have a secure and satisfying job or project


প্রথমত, সব কিছু নিজে করা

অনেকেই আছে যারা সব কিছু নিজে নিজে করতে চায়। তারা নিজে অনেকটা গ্রেট পার্সন, দি গ্রেট গাই অথবা দি অ্যমেজিং গার্ল হিসেবে দেখতে চায়। এজন্যে সবকিছু নিজেই করতে চায়। এটি একটি মিস্টেক। নিজে নিজে সব কিছু করা যায় না। শিখতে হলে অন্যদের সাথে টিমআপ করতে হবে। আপনার চেয়ে যারা অনেক ভাল তাদের সাথে কাজ করতে হবে। 


অনেকভাবেই টিমআপ করতে পারেন। একটি চমৎকার আইডিয়া হতে পারে জাভা ইউজার গ্রুপে জয়েন করা। অন্যের কোন ওপেন-সোর্স প্রজেক্টের সাথে জয়েন করতে পারেন।

Wednesday, October 19, 2016

I'm writing a book

Yes, that's true!

It's a book about a programming language called Java. The written language of the book is Bangla, and I targeting mostly Bangladeshi developers who know a basic programming language eg C or python and want to explore Java.

I, in fact, intend to write three separate part of the book.

Here is the outline of the books: 


Java :  Part 1 (Basic Java)
  1. Introduction 
  2. Your First Java Programming 
  3. Syntax 
  4. Data Types, Operators 
  5. Control flow-looping-branching 
  6. Array 
  7. Object Oriented Programming 
  8. Exception Handling 
  9. Generics 
  10. Java IO 
  11. Java NIO 
  12. String Operations 
  13. Collection Framework 
  14. Core Utilities 
  15. Unit Testing 

Java : Part 1.5 ( Java 8)
  1. Intro – like why should you care 
  2. Lambda Expression 
  3. Functional programming using Java 
  4. Stream API 
  5. New utilities-> Optional, Future, Completable Future etc 
  6. New Date Time API
Java : Part 2 (Advance Java)
  1. Java Memory Model 
  2. Thread & Concurrency 
  3. Annotation Processing 
  4. Java Reflection API 
  5. Java NIO2 → asynchronous I/O 
  6. Java Networking 
  7. JDBC 
  8. Example 
    1. Single Threaded Web server 
    2. Multi-Threaded Web Server 
    3. Multiplexed Web Server 

The first one is complete and hopefully, will be published by late November.




Friday, August 19, 2016

একটি MVP ও একজন সফটওয়্যার প্রকৌশলী



জিনিসটা হচ্ছে এমন- 

আপনাকে বলা হলো একটা MVP বানাতে। MVP মানে হচ্ছে - minimum viable product. (যা আসলে কোন কাজ করে না, শুধুমাত্র দেখানো যায়, যে এইটা এইরকম করে কাজ করবে) 

আপনি আপনার product owner দেখালেন। সে খুশি হয়ে ছাদে উঠে গিয়ে বিজনেজ টিমকে ডেমো দিলেন। বিজনেজ টিম ডেমো দেখে আকাশে উঠে গেলো । তারা সাথে সাথে রকেট ভাড়া করে প্রচার প্রচারনা শুরু করলো এমন ভাবে যে, এই প্রডাক্ট না ব্যবহার করলে আপনার জীবনটাই বৃথা। 

পরেরদিন শুনতে পেলেন যে, আপনার বানানো MVP কে নাকি প্রোডাকশনে দিতে হবে। এই কথা শুনে, আপনার মাথায় সাথে সাথে কুফুর পিড়ামিড ভেঙে পরল, এমন অবস্থা। 

আপনি অনেক চিন্তা ভাবনা করে বললেন যে, এই প্রডাক্ট প্রডাকশন রেডি করতে হলে ৪ মাস ২৩ দিন লাগবে (আসলে কতদিন লাগবে সেটা শুধুমাত্র আ্ল্লাহ জানে)। আপনার দেওয়া এস্টিমেট দেখে আপনার product owner হেসে উড়িয়ে দিলেন। এতো সময় লাগার কোন কারণ নেই। আপনি যা বানিয়েছে তা খুব সুন্দর মতো কাজ করে। আমি চালিয়ে দেখেছি। দু-একটা বাগ থাকতে পারে। ওতে কোন সমস্যা নেই। নতুন প্রডাক্ট সেটা সবাই বুঝবে। কিছু টুয়িক করতে হবে, এর জন্যে আপনি ২ সপ্তাহ নিন। 

আপনি সাথে সাথেই সিউর হয়ে গেলেন নেক্সট ছয় মাস আপনার ঘুম হওয়ার কোন কারণ নেই। কারণ দু-এক হাজার বাগ আসলেও আপানার অবাক হবার কারণ নেই। 

তারপর, যখন বছর খানিক খাটা খাটি করে প্রডাক্টটি মোটামুটি দাড়া করালেন। তখনি শুরু হবে স্কেলিং সমস্যা। ঘন ঘন OutOfMemoryError: GC overhead limit exceeded টাইপ জিনিস পাওয়া শুরু করবেন। মাঝরাতে আপনার ঘুম ফেলে দিয়ে OutOfMemoryError ধরণের সমস্যা ফিক্স করতে হবে। 

এই টাইপ সমস্যা গুলো যখন উতরে যাবেন নেক্সট ২/৩ সপ্তাহ না ঘুমিয়ে, তখন দেখবেন আপনার বিজনেজ টিম নতুন একটা আইডিয়া নিয়ে এসেছে, যেটা ১ সপ্তাহের মধ্যে বানিয়ে দিতে হবে। 

তারা ঘটনা এমনভাবে হয়তো ব্যাখ্যা করবে যে, এই জিনিস না বানালে দুনিয়ার অর্ধেক মানুষ দঃখে কষ্টে আত্মহত্যা করে মরে যাবে।

Tuesday, July 26, 2016

We need to learn how to be an accountable person

There is a saying which goes "we have three hands – ডান হাত, বা হাত এবং অজুহাত- left hand, right hand and the excuse which is the “অজুহাত” in Bangla".

Cognitive dissonance (CD) helps the most people to elude accountability. CD is a self-protection mechanism by which we human justify our actions, it doesn't matter what is. Our brains work to line up our beliefs, attitude towards our actions and our expectation. When there is a disconnect or dissonance, we become uncomfortable and make things up or change our thinking process to align according to your feelings and that's when we do snap judgment and start blaming others or denying mistake and make excuses.

However, excuses are the antithesis of accountability. Accountability is the acknowledgment and assumption of responsibility for the actions and outcomes. It is normal to make a mistake because we are only human. We need to learn how to own mistake and move forward in a positive manner. An accountable person does that. 

An accountable person, that's what we need to be. 

Well, being a human, its is not possible to do everything that is out there. However, there is a fine line between what needs to be done and what are the available things to be done. We just need to do what needs to be done and avoid excuses! That's the root of all success.

We are all going to make mistakes at some point. Though both making mistakes and making excuses are human phenomena, however, making excuses doesn't change the mistake that is made. We should rather, acknowledge the mistake and step forward and do something.

In a world of talkers, we need to be a thinker and a doer. That's all. 

We need to learn how to be an accountable person.

Monday, July 4, 2016

How come someone can justify killing

Today I want to tell two stories from the history.

Both of them are very sad and at the same time significant. The first one is about Umar Bin Khattab(RA) and the second one is about Uthman Ibn Affan(RA). We all know that both of them were assassinated.

Umar Bin Khattab (RA) was stabbed when he was praying Fajr and he fell unconscious right away. He was then carried to the house of his son Abdullah by some of the companions. In the meantime, the remainder of the companions quickly finished up the prayer. Because, no matter what happens, once you are done with the situation, the prayer has to be finished.

After a few while when the sun rose up and he comes out of the unconsciousness, the very first question that he asked, was, have the people finish the prayer, as he was leading the prayer. When he was confirmed that prayer was finished, he said, “Alhamdulillah, whoever abandoned the prayer has no share of being a Muslim." Then he asked for Abdullah to bring water because he himself had not finished his own prayer.

The second story is about Uthman Ibn Affan(RA).

A lot of acquisitions were made against him by the rebels during his time. Especially they were not happy with the governors. I am not going to the details of much of this. To put it simply, a group of rebels marched to Medina from Egypt and demanded the dismissal of the Egyptian governor with a lot of other complaints. Uthman(RA) asked Ali (RA) to speak with them. Ali (RA) met them with others and persuaded them to return by promising remedy for all their grievances and agreeing to act as guarantors. However, on their way back to Egypt, a mysterious letter came into play, they caught an African slave, a messenger from Uthman(RA) riding fast to the current Egyptian governor and carrying orders for the governor to execute the rebels when they reached home. Upon discovering the content of the letter, the rebels outraged and immediately return to Medina and begun to the siege.
Uthman(RA) denied any knowledge of the letter, he swears by Allah, but the rebels did not listen to him, the siege was continued about 40 days.

Uthman(RA) asked them to bring two witnesses who saw him write the letter. As the hadith of Prophet Mohammad(SM) goes, the plaintiff has to bring the evidence and the defendant has to swear by Allah that he is innocent.(Sahih Bukhari, Volume 6, Book 60, Number 72) So if there is no evidence exhibiting, the defendants just have to swear by Allah and the case is closed. Later, a lot of studies were done on the incident, and a lot of scholars concluded that the letter was forged.

The rebels could not show the evidence, however, they camped outside the house of Uthman(RA) and kept protesting and more and more people continued to come from the outlying regions.
In the beginning, they rebels were just shouting and protesting, Uthman(RA) could go to the mosque, and he still led the prayers. A few days later, however, the rebels forbade him to enter the mosque unless he listened to what they had to say. Things progressively got from bad to worse and they eventually stopped food and water being delivered to the house and they started to demand the resignation of Uthman(RA). Later they threatened him with death. Uthman(RA) called a council of the senior companion of Muhammad (SM) in his house, and he asked their suggestions and majority of them suggested him not to resign. After having the discussion, he refused to resign, at the same time he also refused to defend himself.

We all know the rest of story, that, he was then killed by the rebels.

Now I want to conclude these two stories with a note. In the first story, we see, Umar Ibn Khattab(RA) was concerned about the prayer even in his death bed.

And in the second story, Uthman Ibn Affan (RA) refused to defend him. He was the Caliph, he had huge supporters among the companions of prophet (SM) and even though the son of Ali(RA) came with their sword to defend him, he could command anytime, and it was very easy for him to defeat the rebels. But he refused and said over and over, that he did not want to be the first after prophet (SM) to shed the blood of a Muslim, instead, he would offer himself. He insisted on everyone not to defend him physically, and he did not command to fight the rebels.
The question is how come a mighty Caliph did not command to kill anyone to defend him while he himself was killed?

But today, the death has become so cheap, so easy and so common in the name religion when no one actually prays but kills, it does not matter if they are Muslim or not.

Whoever kills an innocent human being it shall be as he has killed all mankind(Chapter (5) sūrat l-māidah )

Tuesday, June 28, 2016

Is democracy headed in the right direction ?

There are a lot of benefits of democracy, I don't deny that. But right now what is happening in the world, is really not good, anyone can understand that. 

This democracy can in fact offer office to a person like Donald Trump and allow you such situation like leaving EU when the voter has no idea of its consequences.

I always prefer the idea of having weighted voting. Seriously, a vote of a person who has no idea about the subject matter and a person who is, essentially, an expert on the subject matter count the same.

I don't mean to discriminate, but look, if a person who is not a physician, surely wouldn't be allowed to exercise, but how come it is allowed while taking a most important decision like running a country?

Friday, June 24, 2016

Shiite Phenomenon In Iran

I was doing my own research on the topic of the Shiite-Sunni split. Historically the idea of Shiite was entirely the Iraqi phenomenon. But how come it became Iranian phenomenon when Iran was kind of the backbone of Sunni Islam. Some of the greatest theologian e.g. Imam Al Gazzali, Imam Bukhari, Imam Muslim, Imam Al-Tirmidhi are Iranian?

Even, Sibawayh, who is considered to be the founder of Arabic Grammer, was Persian.

How is now Iran is a Shiite state?

It goes back to one incident, which is the Safavid dynasty. Yes, it was a political issue. The Safavid empire came into the power in 1500. Ismail Safavid who was a Sunni Muslim and the founder of the Safavid Empire. He wanted to break away from the Ottoman Empire. But as you know, technically, in the Sunni Islam, there should be only one Khalifa. Therefore, for the sake of politics, he converted himself to Shiite and then started a brutal campaign to convert the Iranian people to Shiite.

Mughal Emperor Akbar wanted to change the religion and Safavid did change it for the sake of politics.

Apparently, everything is right in politics.

Friday, June 17, 2016

ইউএস ইলেকশন এবং অন্যান্য

ইউএস ইলেকশন নিয়ে পুরো দুনিয়াতে মোটামুটি আলোচনা  হয়, এর কারণ সম্ভবত দুটি । এক, অনেক লম্বা সময় ধরে প্রচার প্রচারণা চলে। আরেকটি হচ্ছে পুরো প্রক্রিয়াটি বেশ মজার এবং চিত্তবিনোদনকর। ব্যপারটি এমন যে, দুই পার্টির পার্থীদের ডিবেইট শুনলে স্ট্যান্ডআপ কমেডি শুনার দরকার পরে না, প্রত্যেকেই একেকজন কমেডিয়ান।

যথারীতি আমিও অনেক দিন থেকেই ফলো করছি। ডোনাল্ড ট্রাম্প একটা পরিচিত নাম। হেইটফুল রেটরিক (hateful rhetoric) এর জন্যে বিখ্যাত ইতিমধ্যে। যদিও সে রিপাবলিকান নমিনি (মোস্ট লাইকলি), কিন্তু ব্যপারটা কেও যেন ধর্তব্যের মধ্যে রাখছে না। মোটামুটি সবাই ধরে নিয়েছে নেক্সট আমেরিকান প্রেসিডেন্ট হতে যাচ্ছেন হিলারি রডহ্যাম ক্লিনটন। আমার ব্যক্তিগত পছন্দ যদিও বার্নি স্যান্ডার্স। অনেকের মতে ডেমক্রেটিক ইলেকশনে হিলারি বোধহয় একটা বাজে উদাহরণ।

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

তবে শুরুতে বলতেই হবে যে দুনিয়াতে মানুষ গুলো অদ্ভুত। ডাবল স্ট্যান্ডার্ড সর্বত্র। আমরা গর্ব করি এই বলে আমাদের জানাশোনা জগতের মধ্যে মানুষের মস্তিষ্ক সবচেয়ে অতুলনীয়, কিন্তু সেই মস্তিষ্ক না ব্যবহার করে নানা রকম ননসেন্স এর সাথে ক্যারিডআউট হয়ে যাই, তখন বিষ্ময়ের সীমা-পরিসীমা কিছুই থাকে না। একটা সময় ভাবতাম ব্যাপারটা শুধুমাত্র শিক্ষার অভাবে হয়। কিন্তু ইতিহাস থেকে পর্যালোচনা করলে দেখা যায়, শিক্ষা থাকলেও প্রকৃত শিক্ষার অভাব তো আছে বইকি, যে সব সমাজকে আমরা সভ্য, প্রগ্রেসিভ বলে জানি,  তাদের মাঝেও যখন চরম রেসিজম দেখা যায়, তখন সব কিছু অন্যরকম লাগে।  

খুব বেশিদিন আগের ঘটনা না। সম্ভবত আমরা সবাই ২০১২ সালের অক্টোবর মাসের অস্ট্রেলিয়ান প্রাইম মিনিস্টার এর সেই বিখ্যাত মেসাজিনি স্পিসটি শুনেছি। জুলিয়া গিলার্ড, ফরমার প্রাইম মিনিস্টার অব অস্ট্রেলিয়া, যা অস্ট্রেলিয়ার ইতিহাসে একটি বিশাল মাইলস্টোন।  অস্ট্রেলিয়া ১৯০১ সালে ব্রিটিশদের কাছ থেকে স্বাধীনতা লাভ করে গত ১১০ বছর তাদের শাষণ ব্যবস্থা ছিল মেইল ডমিনেটেড। ২০১০ সালে এর সমাপ্তি ঘটে। অস্ট্রেলিয়ার শাষন ব্যবস্থা ইন্টারেস্টিং। এটি একটি ফেডারেল পার্লামেন্টারি কনস্টিটিউশনাল মনার্কি। মনার্কি শুনলেই যে ব্যপারটি মাথায় আসে, সেটি হলো, একজন রাজা বা রাণী থাকবে যার মাথায় ক্রাউন থাকবে এবং সে সমস্ত ক্ষমতার অধিকারী। কিন্তু কনস্টিটিউশনাল মনার্কি ব্যপারটি অনেকটা সেরিমনিয়াল। তাদের কোন পলিটিক্যাল স্ট্যান্ড থাকে না। তারা কোন রুলস এবং রেগুলেশান পরিবর্তন করতে পারে না। কিং বা কুয়িন হেড অব স্টেট হলেও গভার্মেন্ট এর হেড হয় প্রাইম মিনিস্টার অথবা যে পার্লামেন্ট এর লিডার। কুইন এলিযাবেথ-II কে আমরা সবাই চিনি। টেকনেক্যালি কুইন এলিযাবেথ সবগুলো কমনওয়েল্থ দেশ গুলোর কুইন বা হেড অব স্টেট। যদিও তিনি এসব দেশের জন্যে কিছু করেনা না, এসব দেশে একজন গভর্নর জেনারেল থাকে, সে তার কাজ গুলো করে থাকে। যাহোক মূল বিষয় হলো, অস্ট্রেলিয়া যেহেতু কনস্টিটিউশনাল মনার্কি, সেহেতু এর হেড অব স্টেট হচ্ছে কুইন এলিযাবেথ, এবং তার কাজ গুলো করে থাকে একজন গভর্নর জেনারেল। ২০১০ সালে প্রাইম মিনিস্টার নির্বাচিত হয়  জুলিয়া গিলার্ড। জুলিয়া গিলার্ড একজন টাফ, ওয়িপস্মার্ট(whip-smart) মহিলা। ঠিক তখন অস্ট্রেলিয়ার গভর্নর জেনারেল ছিলেন একজন মহিলা (Quentin Bryce),  যিনি নিজেও একজন প্রথম মহিলা গভর্নর জেনারেল। ঠিক এজন্যেই Swearing in Ceremony টি ছিল এক বিশেষ ব্যপার। একজন প্রথম মহিলা গভর্নর জেনারেল একজন প্রথম প্রাইম মিনিস্টারকে শপথ বাক্য পাঠ করানো নি:সন্দেহে একটি আশ্চর্যজনক ঐতিহাসিক ঘটনা। এবং সবাই ধরেই নিয়েছিল যে, মহিলাদের জন্যে যে দ্বার অনেক বছর ধরে বন্ধ ছিল তা খুলে গেল। সামনে আসছে এক বিশাল পরিবর্তন।

এখানে আমরা সবাই জানি যে, প্রাইম মিনিস্টার একটি পদমর্যাদা। জেন্ডার এখানে কোন রুল প্লে করে না। মহিলা হলেও তিনি প্রাইম মিনিস্টার এবং পুরুষ হলেও প্রাইম মিনিস্টার।  জুলিয়া গিলার্ড এর ক্ষেত্রে ব্যাপারটা তেমন থাকে নি।  তার অফিসের দ্বিতীয় বছর শুরু হতেই ঘটনা কুৎসিত হতে শুরু করে। অপজিশন পার্টি তার নামে ভয়ংকর কুৎসিত কথা বলা শুরু করে। ডিচ দি ওয়িচ বলে মানুষজন স্লোগান শুরু করে। তার অপোনেন্ট তার নুড সেক্সুয়াল কার্টুন সার্কুলেশান শুরু করে। মিডিয়া গুলো এমন ভাবে লিখে যেন সে কোন হেড অব গভারমেন্ট নয়, রিয়েলিটি টিভি স্টার, তার আউটফিট নিয়ে লেখা লেখি করে। ঘটনা আরও জগণ্য হতে শুরু করে।

একটি প্রগ্রেসিভ দেশে ইন্টেলিজেন্ট এডুকেডেট পার্লামেন্ট মেম্বার গুলো যদি একজন মহিলা প্রধাণমন্ত্রী নির্বাচিত করে নিজেদেরকে প্রগ্রেসিভ দাবি করে, তাহলে তাদের আচরণ থেকে তা মোটেও প্রমাণ পাওয়া যায় না। ইউটিউবে তাদের আচরণের অনেক কিছু পাওয়া যায়, যেগুলো আমি উল্লেখ করতে চাই না।
একদম শেষের দিকে গিলার্ড পার্লামেন্ট এ একটি বিশেষ স্পিস দেয়, যা কিনা তার বিখ্যাত মেসাজিনি স্পিস যা কিনা টনি অ্যাবট (অপজিশন পার্টি লিডার ) কে উদ্দেশ্য করে দেওয়া।  আমি আর এখানে ডিটেইল এ গেলাম না।


মজার ব্যপার হচ্ছে Tony Abbott তার এহেন মেসাজনিস্টিক হওয়ার পরেও পরেরবার প্রাইম মিনিস্টার নির্বাচিত হয়। এমন প্রগ্রেসিভ দেশে এগুলাে কিভাবে খুব সাধারণ ভাবেও নিয়ে নেয় তা ভাবতেই অবাক লাগে।
সম্ভবত অদূর ভবিষ্যতে আর কখনো অস্ট্রেলিয়াতে ফিমেইল প্রামই মিনিস্টার কেও হতে যাচ্ছে না।
মিডিয়াগুলো কিভাবে কাজ করে আমরা মোটামুটি সবাই ইতিমধ্যে জেনে গেছি। ভাল ভাল খবরে তাদের কাটতি নেই, সুতরাং রসাল নোংড়া খবরে তাদের আকর্ষণ বেশি।  মানুষের রূচিবোধ নিয়েও আমার বিষ্ময়ের সীমা নেই।
তার একটি প্রমাণ পাওয়া যেতে পারে নিচের একটি ভিডিওটিতে।


মানব প্রজাতি বড়ই অদ্ভুত। এমন প্রগ্রেসিভ দেশে এতো শিক্ষিত, ভদ্র বুদ্ধিমান মানুষগুলো একজন মহিলা প্রাইম মিনিস্টার সহ্য করতে পারেনি।
হিলারি ক্লিনটন এর ব্যপারেও কি এমন হবে ? হতেই পারে যে বারাক ওবামা প্রথম এবং শেষ ব্ল্যাক প্রেসিডন্ট, হিলারি ক্লিন্ট প্রথম এবং শেষ মহিলা প্রেসিডেন্ট অব ইউনাইটেড স্ট্যাটস অব আমেরিকা।

 ব্রাজিল, ইউনাইটেড কিংডম, জার্মানী, ক্রোয়েশিয়া, পাকিস্তান এসব দেশেও  মহিলা লিডার নির্বাচিত হয়ে ছিল যা কিনা একবারই, এর পর আর কখনো হওয়ার সম্ভবনা দেখা দেয়নি।

তবে আমি মানুষ হিসেবে অপটিমিস্টিং, বাংলাদেশে বহু টার্ম ধরে মহিলা প্রধানমন্ত্রী নির্বাচিত হয়ে আসছে । সুখের ব্যপার এই যে বাংলাদেশে দারিদ্রতা ও শিক্ষার অভাব থাকলেও এমন মেসাজনিস্টিক কেও নেই যতটা সেইসব প্রগ্রেসিভ দেশ গুলাতে দেখা যায়।
আমি আমার দেশ নিয়ে আশাবাদী। অনেক বেশি।

বন্যকবলিত এলাকায় যখন ফ্লোটিং স্কুল দেখি


তখন মন ভরে যায়। যখন স্ট্যাটিসটিকস দেখি বাংলাদেশের গড় আয়ু বৃদ্ধির, শিশু মৃত্যুর হার হ্রাস, পার ক্যাপিটা আয় বৃদ্ধি ইত্যাদি, তখন দেশ নিয়ে গর্ব করতে বাধা কোথায়। একদিনে লাফ দিয়ে উন্নত হওয়া যাবে না সত্যি, তবে এর গতি আরও বৃদ্ধি হোক, এই প্রত্যাশা।


Wednesday, March 2, 2016

২ মার্চ ১৯৭১: জাতীয় পতাকা

২ মার্চ ১৯৭১ -প্রথম জাতীয় পতাকা উত্তোলন করা হয় ঢাকা বিশ্ববিদ্যালয় প্রাঙ্গনে । ঘটনাটি নিয়ে ভাবতেই কেমন অদ্ভুত অনুভূতি নিজে মনের ভেতর পাক খায়, সেই অনুভূতিটুকু যে গর্বের সে বিষয়ে সন্দেহের অবকাশ নেই। বই পড়ে যতটুকু জেনেছি , পাকিস্তানের শাসক গোষ্টি তখন মোটেও সহজ কিছু ছিল না। তারা ঘৃণার বিষপাত্রের সবটুকু নিঃশেষ করে ঢেলে দিয়েছিল বাঙালিদের উপর। তাদের মানবিক দীনতা স্পষ্ট হয় ৪৮ এর ভাষা সংকট থেকে শুরু করে ২৫ মার্চ-এ পশুত্বের সীমা ছাড়িয়ে। 
৭১ কোন ছেলেখেলা একটি বিষয় নয়, ভুলবার তো নয় বটেই। মানুষ মানেই বৈচিত্র্য থাকবে, মতের পার্থক্য হবে, প্রত্যেকেই নিজের মতমত নিয়ে হেঁটে যাবে। কিন্তু স্বাধীনতা, এই একটি মাত্র শব্দের জন্যে ৭ কোটি বাঙালীর ঐক্য রূপকথার গল্পে নয়, বাস্তব সত্য একটি ঘটনা, যার দৃষ্টান্ত অনেক বেশি পাওয়া যাবে এমন মনে করি না। 

২৫ মার্চের রাতের কথায় ভাবুন। রাতের অন্ধকার সুনসান তারার আলোয় বাতাসে প্লেগের মতো ভয় ছড়িয়ে পড়ছে চারদিকে। একদঙ্গল মনুষ্যত্বহীন, বিবেকবর্জিত, মস্তিষ্কবিহীণ দুপেয়ে প্রাণি ট্যাংক নিয়ে যাত্রা করছে ঢাকা বিশ্ববিদ্যালয়ের হলে। তারা ভেবেছিল কিছুক্ষণ পরেই সুর সুর করে নেমে এসে নতজানু হয়ে হাটু গেড়ে বসে যাবে তাদের সামনে সব ছাত্ররা, তারা ভুল করেছে এইবলে প্রাণ ভিক্ষা চাইবে। কি অসীম সাহস তাদের, কেও আত্মসমর্পণ করে নি, বরং লাঠি নিয়ে রুখে দাড়িয়েছে, যেন তারা জানতো এই দিন দিন নয় আরও দিন আছে। তার ভুল করেনি, নির্ভীক থেকে আকাশের সহস্রকোটি নক্ষত্রের মাঝে সবচেয়ে উজ্জ্বল হয়ে আছে । 

১৬ ডিসেম্বর এ আত্মসমর্পণ করার সব আনুষ্ঠিকতা শেষ করে নিয়াজী নাকি ভারতীয় জেনারেলকে প্রশ্ন করেছিল, “বলুন তো এই যুদ্ধ আমরা কি যথেষ্ট সাহসের সাথে লড়ি নি? পাঁঠার মতো প্রশ্ন। সাহসিকতা কাকে বলে তা বাঙালিরা হারে হারে তাদের দেখিয়ে দিয়েছে। পরাজয়ের গ্লানি নিয়ে ভুট্টো যখন তার শেষ চালটি চালতে চেয়েছিল, বঙ্গবন্ধু তার হাতে বন্ধী থেকেও তা হতে দেন নি। প্রতি মুহূর্তে মৃত্যুর জন্যে প্রস্তুতি নিতে নিতে দীর্ঘ নয় মাস কারাগারের নিকৃষ্টতম প্রকোষ্টে থেকেও কোনও মুহুর্তেও ভেঙ্গে পরেন নি, তাদের সাথে কোন রকম সমঝোতা করেন না, সপ্তাতের পর সপ্তাহ কোন বাক্য ব্যয় না করে কাটিয়ে দিয়েছেন । এর থেকে বড় সাহসীকতা, ধৈর্য কেও দেখিয়েছে কখনো ? 
বাঙ্গালী ৪৮, ৫২, ৬৯, ৭১ এর সেই সাহসীকতার মহাকাব্যের শেষ কখনই হবে না। 

এতো শত সাহসীকতা আর বিজয়ের গল্পগাথা আমাদের থাকলেও মাঝে মাঝেই মনের ভেতর অদ্ভুত রিনিরিন ভাব চলে আসে, একরাশ কুয়াশা যেন ভেতরটা ভিজিয়ে দেয়, মনটা খারাপ হয়ে যায়। এই গল্পগাথা গুলো নিয়ে আমরা কথা বলি না, এগুলো খাবার টেবিলের গল্পের বিষয় বস্তু হয়ে উঠে না। বরং কেও কেও এগুলো নিয়ে পশ্ন করে, বিশ্বাস করতে চায় না, রূপকথার গল্পের মত হালকা ভেবে হেসে উড়িয়ে দেয়। 

আমাদের ধৈর্য, সাহসিকতা, বিজয়ের স্বারক জাতীয় পতাকা অম্লান থাকুক, পত পত করে উড়ে চলুক আরও সহস্র বছর।