DNS on Ubuntu 18.04 or up

For years it’s been simple to set up DNS on a Linux machine. Just add a couple of entries to /etc/resolv.conf and you’re done.

# Use Google's public DNS servers.
nameserver 8.8.4.4
nameserver 8.8.8.8

But things change and now it’s not that simple. If you now edit /etc/resolv.conf on Ubuntu you’ll find that the edits are ephemeral. If you restart (or even hibernate) your machine then they’ll be overwritten by default content.

nameserver 127.0.0.53

This is pretty simple to fix though.

1. Install the resolvconf package by executing sudo apt install resolvconf

2. Edit /etc/resolvconf/resolv.conf.d/head and add the following:

# Make edits to /etc/resolvconf/resolv.conf.d/head.
nameserver 8.8.4.4
nameserver 8.8.8.8

3. Restart the resolvconf service by executing sudo service resolvconf restart

Fix should be permanent.

ধর্ষণ এবং আমরা…

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

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

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

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

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

মাইএসকুয়েলঃ গ্রুপ রেপ্লিকেশন

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

এই পোস্টে দেখানো হয়েছে কিভাবে একটি “মাইএসকুয়েল গ্রুপ রেপ্লিকেশন” সিস্টেম কনফিগার করতে হয়।

যা যা লাগবেঃ 

  • একাধিক মাইএসকুয়েল ডাটাবেস সার্ভার (রুট এক্সেস সহ)।
  • উবুন্টু অপারেটিং সিস্টেম (যে কোন *নিক্স ভিত্তিক সিস্টেম হলেও চলবে)।

প্রাইমারী ডাটাবেস সার্ভার সেটআপঃ

মাইএসকুয়েল ৫.৭* এর অফিশিয়াল বিল্ডে গ্রুপ রেপ্লিকেশন প্লাগিন ডিফল্ট ভাবে থাকে না, তাই এখানে মাইএসকুয়েল কমিউনিটি বিল্ড ব্যবহার করা হয়েছে। নিচের কমান্ড দিয়ে কমিউনিটি বিল্ড ভার্শন ইন্সটল করুন।

 curl -OL https://dev.mysql.com/get/mysql-apt-config_0.8.3-1_all.deb && sudo dpkg -i mysql-apt-config* && sudo apt-get update && sudo apt-get install mysql-server

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

ডাটাবেসের রুট পাসওয়ার্ড সেট করুন।

uuidgen কমান্ড দিয়ে একটি আইডি জেনারেট করুন, এবং আইডিটি সেভ করে রাখুন এটি আমাদের গ্রুপের UUID হিসাবে ব্যবহার করা হবে।

sudo nano /etc/mysql/my.cnf কমান্ড দিয়ে মাইএসকুয়েল কনফিগ ওপেন করুন। !includedir এর নিচে , নিচের কোড টুকু যুক্ত করুন (সামান্য এডিট করে)।

# সার্ভার এর নাম (এটা দরকারি না)
[mysqld]
# General replication settings
gtid_mode = ON
enforce_gtid_consistency = ON
master_info_repository = TABLE
relay_log_info_repository = TABLE
binlog_checksum = NONE
log_slave_updates = ON
log_bin = binlog
binlog_format = ROW
transaction_write_set_extraction = XXHASH64
loose-group_replication_bootstrap_group = OFF
loose-group_replication_start_on_boot = ON
loose-group_replication_ssl_mode = REQUIRED
loose-group_replication_recovery_use_ssl = 1

# Shared replication group configuration
loose-group_replication_group_name = "গ্রুপ UUID" #এটা জেনারেট করে সেভ করতে বলা হয়েছিলো
loose-group_replication_ip_whitelist = "প্রাইমারী সার্ভারের আইপি, সেকেন্ডারি সার্ভারের আইপি"
loose-group_replication_group_seeds = "প্রাইমারী সার্ভারের আইপি:33061, সেকেন্ডারি সার্ভারের আইপি:33061"

# Host specific replication configuration
server_id = 1 # সার্ভার নাম্বার (১২৩ এই স্টাইলে)
bind-address = "প্রাইমারী সার্ভারের আইপি"
report_host = "প্রাইমারী সার্ভারের আইপি"
loose-group_replication_local_address = " প্রাইমারী সার্ভারের আইপি:33061"

sudo systemctl restart mysql কমান্ড দিয়ে মাইএসকুয়েল সার্ভিস রিস্টার্ট করুন এবং sudo ufw allow 33061 && sudo ufw allow 3306 কমান্ড দিয়ে উবুন্টু ফায়ারওয়ালে 330613306 পোর্ট আলাউ করুন। mysql -u root -p কমান্ড দিয়ে মাইএসকুয়েল কমান্ডলাইন ইন্টারফেসে প্রবেস করুন। এবার রুট পাসোয়ার্ড দিয়ে অথেন্টিকেট করুন।

নিচের কমান্ডগুলো দিয়ে  SQL_LOG_BIN এর ভ্যালু 0 সেট করুন এরপর রেপ্লিকেশওন এর জন্য একটি ইউজার যুক্ত করুন এবং তাকে রেপ্লিকেশন এর জন্য পারমিশন দিন। এবং শেষে SQL_LOG_BIN এর ভ্যালু 1 সেট করে নিন।

SET SQL_LOG_BIN=0;
CREATE USER 'repl'@'%' IDENTIFIED BY 'password' REQUIRE SSL;
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1; 

এবার group_replication_recovery চ্যানেলে রেপ্লিকেশন ইউজার এবং পাসোয়ার্ড সেট করতে হবে, এই ইউজার এবং পাসোয়ার্ড গ্রুপের সকল ডাটাবেস সার্ভার রেপ্লিকেশন এর জন্য ব্যবহার করবে।

CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='এখানে পাসোয়ার্ড দিন' FOR CHANNEL 'group_replication_recovery';

নিচের কমান্ড দিয়ে রেপ্লিকেশন প্লাগিন ইন্সটল করুন;

INSTALL PLUGIN group_replication SONAME 'group_replication.so';

এবার SHOW PLUGINS; কমান্ড দিয়ে দেখুন প্লাগিনটি ইন্সটল হয়েছে কিনা (group_replication  নামে একটি লাইন দেখতে পাবেন)।

নিচের কমান্ড গুলো দিয়ে রেপ্লিকেশন চালু করুনঃ

SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;

এবার SELECT * FROM performance_schema.replication_group_members; কমান্ড দিয়ে দেখুন রেপ্লিকেশন চালু হয়েছে কিনা (MEMBER_STATE  ONLINE দেখাবে)।

এবার এই প্রাইমারি ডাটাবেস সার্ভারে একটি ডাটাবেস তৈরি করুন এবং তাতে কিছু ডাটা যুক্ত করুন (রেপ্লিকেশন টেস্টিং এর জন্য)। 

মনে রাখবেন আপনার ডাটাবেসের ইঞ্জিন টাইপ অবশ্যই InnoDB হতে হবে অন্যথায় রেপ্লিকেশন কাজ করবে না।

সেনেন্ডারী ডাটাবেস সার্ভার সেটআপঃ

আপএবার আসুন সেকেন্ডারী ডাটাবেস সার্ভার কনফিগার করি।

sudo nano /etc/mysql/my.cnf কমান্ড দিয়ে মাইএসকুয়েল কনফিগ ওপেন করুন। !includedir এর নিচে , নিচের কোড টুকু যুক্ত করুন (সামান্য এডিট করে)।

# সার্ভার এর নাম (এটা দরকারি না)
[mysqld]
# General replication settings
gtid_mode = ON
enforce_gtid_consistency = ON
master_info_repository = TABLE
relay_log_info_repository = TABLE
binlog_checksum = NONE
log_slave_updates = ON
log_bin = binlog
binlog_format = ROW
transaction_write_set_extraction = XXHASH64
loose-group_replication_bootstrap_group = OFF
loose-group_replication_start_on_boot = ON
loose-group_replication_ssl_mode = REQUIRED
loose-group_replication_recovery_use_ssl = 1

# Shared replication group configuration
loose-group_replication_group_name = "গ্রুপ UUID" #এটা জেনারেট করে সেভ করতে বলা হয়েছিলো
loose-group_replication_ip_whitelist = "প্রাইমারী সার্ভারের আইপি, সেকেন্ডারি সার্ভারের আইপি"
loose-group_replication_group_seeds = "প্রাইমারী সার্ভারের আইপি:33061, সেকেন্ডারি সার্ভারের আইপি:33061"

# Host specific replication configuration
server_id = 2 # সার্ভার নাম্বার (১২৩ এই স্টাইলে)
bind-address = "সেকেন্ডারি সার্ভারের আইপি"
report_host = "সেকেন্ডারি সার্ভারের আইপি"
loose-group_replication_local_address = "সেকেন্ডারি সার্ভারের আইপি:33061"

sudo systemctl restart mysql কমান্ড দিয়ে মাইএসকুয়েল সার্ভিস রিস্টার্ট করুন এবং sudo ufw allow 33061 && sudo ufw allow 3306 কমান্ড দিয়ে উবুন্টু ফায়ারওয়ালে 330613306 পোর্ট আলাউ করুন। mysql -u root -p কমান্ড দিয়ে মাইএসকুয়েল কমান্ডলাইন ইন্টারফেসে প্রবেস করুন। এবার রুট পাসোয়ার্ড দিয়ে অথেন্টিকেট করুন।

নিচের কমান্ডগুলো দিয়ে  SQL_LOG_BIN এর ভ্যালু 0 সেট করুন এরপর রেপ্লিকেশওন এর জন্য একটি ইউজার যুক্ত করুন এবং তাকে রেপ্লিকেশন এর জন্য পারমিশন দিন। এবং শেষে SQL_LOG_BIN এর ভ্যালু 1 সেট করে নিন।

SET SQL_LOG_BIN=0;
CREATE USER 'repl'@'%' IDENTIFIED BY 'password' REQUIRE SSL;
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1; 

এবার group_replication_recovery চ্যানেলে রেপ্লিকেশন ইউজার এবং পাসোয়ার্ড সেট করতে হবে, এই ইউজার এবং পাসোয়ার্ড গ্রুপের সকল ডাটাবেস সার্ভার রেপ্লিকেশন এর জন্য ব্যবহার করবে।

CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='এখানে পাসোয়ার্ড দিন' FOR CHANNEL 'group_replication_recovery';

নিচের কমান্ড দিয়ে রেপ্লিকেশন প্লাগিন ইন্সটল করুন;

INSTALL PLUGIN group_replication SONAME 'group_replication.so';

এবার SHOW PLUGINS; কমান্ড দিয়ে দেখুন প্লাগিনটি ইন্সটল হয়েছে কিনা (group_replication  নামে একটি লাইন দেখতে পাবেন)।

START GROUP_REPLICATION; কমান্ড দিয়ে রেপ্লিকেশন শুরু করুন (যদিও আমাদের কনফিগারেশন এর কারনে এটা অটোমেটিক হয়ে যাওয়ার কথা)।

SELECT * FROM performance_schema.replication_group_members; কমান্ড দিয়ে দেখুন নতুন একটি ডাটাবেস সার্ভার রেপ্লিকেশন গ্রুপ মেম্বার হিসাবে যুক্ত হয়েছে। এখই পদ্ধতি অনুসারে আপনি আরো ডাটাবেস সার্ভার এই রেপ্লিকেশন গ্রুপে যুক্ত করতে পারবেন।

GTID ডুপ্লিকেট সমস্যার সমাধান

reset master; দিয়ে ডুপ্লিকেট GTID সমস্যার সমাধান করা যায়। reset master; কমান্ড দেওয়ার পর mysql_upgrade দিতে হয়। mysql_upgrade এ যদি রিড অনলি ইরর দেখায় তবে set global read_only = off; দিয়ে রিড অনলি অফ করে mysql_upgrade দিতে হবে, এরপর set global read_only = on; করে দিতে হবে।

TV Show Downloader

আমি বেশ কয়েক বছর ধরে নিয়মিত টিভি সিরিজ দেখে যাচ্ছি। বলতে পাররেন আমিই এডিক্টেড হয়ে গেছি টিভিসিরিজে। এখন আমি প্রায় ৫০+ টা সিরিজ নিয়মিত দেখি। এতগুলো সিরিজের ট্রাক রাখা সহজ কাজ না, এই ট্রাক রাখার জন্য আমি "টিভিশো টাইমস" নামের একটি সাইট ব্যবহার করে থাকি। এইতো গেল শো এর ট্রাক রাখার কথা।

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

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

আর্টিফিসিয়াল ইন্টিলিজেন্স

“আর্টিফিশিয়াল ইন্টিলিজেন্স” অথবা “কৃত্রিম বুদ্ধিমত্তা” ইদানিং এই ব্যাপারে প্রচুর লেখালেখি হচ্ছে। এই লেখালেখির অধিকাংশই হচ্ছে “ইন্টিলিজেন্ট মেশিন” এর কাছে আমরা কিভাবে হেরে যাব অথবা “ইন্টিলিজেন্ট মেশিন” আমাদের তুলনায় অনেক বুদ্ধিমান হবে এতে আমরা অবসলিট (বিলুপ্ত) হয়ে যাব ইত্যাদি।

“ইন্টিলিজেন্ট মেশিন” / “আর্টিফিশিয়াল ইন্টিলিজেন্স” বলতে আমরা কি বুঝি? অধিকাংশ মানুষের কাছে এটি হচ্ছে রোবট জাতীয় কিছু আবার অনেক কাছে এটি হচ্ছে মানুষের মত চিন্তা করতে সক্ষম কোন মেশিন অথবা প্রোগ্রাম আবার অনেকের কাছে “মানবীয় অনুভূতি” সম্পন্য মেশিন অথবা প্রোগ্রাম।

এবার দেখা যাক বুদ্ধিমত্তা বা ইন্টিলিজেন্স বলতে আমরা কি বুঝি? আপনি বুদ্ধিমত্তা বলতে কি বোঝেন? বুদ্ধিমত্তার প্রাথমিক সংজ্ঞা হচ্ছে যে কোন কিছু বুঝতে পারে, আত্ম-সচেতনতা আছে, সিদ্ধান্ত নিতে পারে, যুক্তি বোঝে, শিখতে পারে এমন কোন প্রাণী অথবা যন্ত্র। আমরা আপাতত কেবল অল্পকিছু প্রাণীর বুদ্ধিমত্তা সম্পর্কে জেনেছি, এর মধ্যে মানুষ, ডলফিন, বানর, এইপ ইত্যাদি উল্লেখযোগ্য। আমাদের সবচেয়ে বড় সমস্যা হচ্ছে আমরা “মানুষের মত চিন্তা করতে সক্ষম” প্রোগ্রাম বানাতে চাচ্ছি, কিন্তু “মানুষের মত চিন্তা” ব্যাপারটি কি সেটা আমরা জানি না। আপনি কি হিটলার/মুসোলিনির মত চিন্তা করতে সক্ষম প্রোগ্রাম চান নাকি গান্দি/মেন্ডেলার মত চিন্তা করতে সক্ষম প্রোগ্রাম চান নাকি আইন্সটাইন/টেসলা/টুরিন এর মত চিন্তা করতে সক্ষম প্রোগ্রাম চান নাকি আপনার পরিচিত সবচেয়ে বোকা ব্যাক্তির মত প্রোগ্রাম চান ?

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

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

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

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

আমাদের জীবন সহজ করতে কোন আনপ্রেডিক্টেবল ইন্টেলিজেন্ট মেশিনের দরকার নেই আমাদের দরকার প্রেডিক্টেবল ইন্টেলিজেন্ট মেশিন। আনপ্রেডিক্টেবল ইন্টেলিজেন্ট মেশিন আমাদের জীবন সহজ করতে পারবে না কিন্তু প্রেডিক্টেবল ইন্টেলিজেন্ট মেশিন তা পারবে।