Thursday, September 20, 2018

Steps you must follow before trying to feed your data into any Machine Learning model

This is a great #pipeline or set of steps you should (must) obey even before trying to #feed your #data into any #MachineLearning model. Maths behind those steps/terminologies can also be found in different sections of this blog!!!

https://sebastianraschka.com/Articles/2014_scikit_dataprocessing.html

* Nuhil Mehdy

Saturday, September 8, 2018

How to create a Machine Learning Project regardless of whether you have a computer or not

Did you understand the intuition behind #Machine #Learning and basic Maths behind this and now create a little project for saving the world, regardless of whether you have a computer or not? Go to a shared computer (e.g. library, cyber cafe, tablet) or manage a #chrome book that has a web browser at most.

Then -
# You need a dataset to work on?
Go to Google #Dataset Search
# You need a Jupyter notebook with GPU backed?
Go to #Google #Colab
# You need some high level library to use?
Google colab has #Tensorslow with #Keras by default
# You need to port in the notebook code to script?
Go to Google Cloud ##Shell Editor
# Done with the scripts and wants to deploy it?
Google Cloud Shell comes with a #Unix instance
# Serve the model (e.g. as #API) to the world?
Google Cloud Shell has built in web server

* Nuhil Mehdy

Monday, September 3, 2018

লেখক (অনুবাদক) হতে চাইলে অবশ্যই যা করতে হবে

লেখক হওয়া কি খুব সোজা? হাতে কলম আর টেবিলে সাদা কাগজ থাকলেই কি লেখা ঝরতে থাকে তরতর করে?

কিংবা ধরুন অনুবাদক হওয়া? মনিটরের একপাশে পিডিএফ, আরেকপাশে ওয়ার্ড ওপেন করে টাইপ করতে থাকলেই কি হয়ে যায় অনুবাদ?

অত্যন্ত নিষ্ঠুরের মতো বলতে হচ্ছে: না হয় না। শুধু কলম-খাতা কিংবা ওয়ার্ড ওপেন করলেই লেখা বা অনুবাদ হয়ে যায় না। অন্য আর দশটা দক্ষতার মতো লেখালেখি/অনুবাদ একটি বিশেষ দক্ষতা। একে শিখতে হয়। কলাকৌশলগুলো জানতে হয়। তারপর চর্চা করতে হয় নিয়মিত। তবেই কেউ হয়ে ওঠেন নামজাদা লেখক কীবা অনুবাদক।

কীভাবে জানবেন লেখালেখির সেসব হাঁড়ির খবর? আমার ব্যক্তিগত অভিজ্ঞতা থেকে আজ তেমনই কিছু বারুদ শেয়ার করব আপনাদের সঙ্গে। যদি আপনার মাঝে শলাকা থাকে, তা হলে জ্বলে উঠবেনই—ইন শা আল্লাহ।

▒ বারুদ ১: “মার্জিনে মন্তব্য”র, সৈয়দ শামসুল হক, অন্যপ্রকাশ

আমার স্বল্প লেখক-জীবনে যেকয়টা বই পড়ে মারাত্মকভাবে উপকার পেয়েছি তার মধ্যে এটা সবার আগে। সচেতনভাবে লেখালেখি কী জিনিস তা হাড়ে হাড়ে টের পেয়েছি এই বই পড়ে।

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

প্রতিটি লেখকই পাঠক, তবে আর দশটা সাধারণ পাঠকের মতো হলে তার চলবে কেন? তিনি যেকোনো লেখা পড়বেন মনোযোগী শিশুর মতো। খেয়াল করলে দেখবেন, ১/২ বছরের বাচ্চারা কী গহন মনে বড়দের—বিশেষ করে তারা বাব-মা’র—প্রতিটা কাজ হলফ করে দেখে। এরপর ঠিক বাবা-মা’র মতো না পারলেও অনুরূপ বা কাছাকাছি ঢঙে তা করার চেষ্টা করে।

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

কেউ নিয়মিত লিখতে চাইবেন, বা অনুবাদ করতে চাইবেন, অথচ এ বইটির অন্তত গদ্য লেখার কারুকার্য অংশটি পড়বেন না কখনো—সংলাপের ঢঙে বলতে হলে বলব, “এ হতে পারে না!”

▒ বারুদ ২: “এসো কলম মেরামত করি”, আবু তাহের মিছবাহ, দারুল কলম

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

আমাদের অনেকেই ভাস্কর্য বা মাটির তৈরি তৈজসপত্র গড়তে বা বানাতে দেখে থাকবেন। সামনসামনি না হলেও টিভি-ইন্টারনেটের কল্যাণে দেখা হয়ে থাকার কথা। কী পরিমাণ অভিনিবেশ আর যত্নের সঙ্গে এক একজন মৃৎশিল্পী যে এসব ভাঙাগড়ার কাজ করেন, তা ইতিহাসের পাতায় ঠাঁই পাওয়ার মতন। এখন সেই একই কাজ যদি কাউকে বাংলা ভাষায় লিখতে গিয়ে করতে দেখেন, কী মনে হবে তাকে? উন্মাদ? অতি খুঁতখুঁতে?

নাহ। তাহারেই আমি কইব ভাষাশিল্পী। আবু তাহের মিছবাহ আক্ষরিক অর্থেই একজন ভাষাশিল্পী।

কোন শব্দের সঙ্গে কোন শব্দ যায়, কোন শব্দ যায় না, কোন শব্দ কার শানে খাটে, কার শানে খাটে না, শব্দের ইতিবাচকতা, নেতিবাচকতা—নবিশ লেখক/অনুবাদকদের মনে যা কখনো উদয় হওয়ার দাবি রাখে না সাধারণত, এ অঙ্গনের বাইরের কারও কাছে যা মনে হতে পারে পাগলামি—সেসব বিষয় নিয়েই পৃষ্ঠার পর পৃষ্ঠা লিখে গেছেন বর্ষীয়ান এই ‘আলিম!

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

শুধু শব্দই নয়, একটা লেখার প্রতিটা বাক্য ধরে ধরে কীভাবে তার সুর-সংগতি বহাল রাখতে হয়, প্রয়োজনে কেটে-ছিড়ে নতুন করে সাজাতে হয় সেই ‘অপারেশন’ দেওয়া আছে উদাহরণসহ।

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

▒ বারুদ ৩: “সাহিত্যের ক্লাস”, মুহাম্মদ যাইনুল আবিদীন, মাকতাবাতুল আখতার

শেখার যে কোনো শেষ নেই, সেই প্রবচনের সার্থক উদাহরণ এ বইটি।

লেখালেখি বিষয়ক বই কুড়োচ্ছি সেই ২০১৩ সাল থেকে। বাংলা ভাষায় এ-সংক্রান্ত যত বই আছে, সম্ভবত তার বেশিরভাগই ২০১৭ সালের মধ্যে পড়া হয়ে গিয়েছিল আমার। লেখালেখির কৌশল নিয়ে মৌলিক বা অভিনব যা কিছু আমি অন্যান্য বইতে পেয়েছি, তা ঘুরেফিরে উপরের প্রথম দুটো বইয়ের কথারই ভিন্ন ভিন্ন উপস্থাপন। কিন্তু এই ২০১৮ সালে এসে যাইনুল আবিদীনের এ বইটিতে সাহিত্যের অতি গুরুত্বপূর্ণ একটি জিনিস—অলংকার—একদমই নতুন করে জানলাম যেন। ঠিক জানলাম বললে ভুল হবে; আগেও জানতাম, কিন্তু জিনিসটা যে আসলে কী, কীভাবে এর প্রয়োগ—তা উনার আগে কারও লেখায় এত প্রখরভাবে দেখিয়ে দেয়নি কেউ। অথচ, সাহিত্যকর্মে অলংকার খুবই খুবই জরুরি জিনিস। এই অলংকারই একটি অসামান্য কর্মকে আলাদা করে গড়পড়তা কাজ থেকে। এই অলংকারের জোরেই কুরআন পৃথিবীর শ্রেষ্ঠ সাহিত্যকর্ম। অথচ, সেই কুরআনের অনুসারীদের লেখনীতে তা সুন্দরবনের বাঘ দেখার মতো বিরল।

এ বইয়ের আরেকটি মূল্যবান আলোচনা: অনুবাদ। আমাদের দেশের বেশিরভাগ অনুবাদকর্মই যে ‘বাংলা অক্ষরে লিখিত মাত্র’ সেই হাহাকার ফুটে উঠেছে যাইনুল আবিদীনের লেখায়। কিছু উপায়ও বাতলে দিয়েছেন তিনি সেই দৈন্য দশা কাটিয়ে উঠতে। যদি পারতাম, যারা প্রথমবারের মতো অনুবাদকর্ম শুরু করতে চান, তাদের কাজ শুরুর আগে আমি এ বইটা (এবং এর পরের বইটা) অবশ্যই পড়িয়ে নিতাম। এবং এ বইটা পড়ার আগে তার জন্য অনুবাদকর্মে হাত দেওয়াকে ‘হারাম’ ঘোষণা করতাম। আপনি যদি স্রেফ ফরমায়েশি অনুবাদক হোন, যদি শুধু দুটো টাকার জন্য অনুবাদকর্ম করেন তা হলে এ বই না পড়লেও চলবে। কিন্তু অনুবাদ যদি হয় আপনার শিরা-উপশিরা, তা হলে আমার মনে হয় এ বই ছাড়া আপনার অনুবাদ বাঁচবে না।

▒ বারুদ ৪: Literary Translation: A Practical Guide, Clifford E. Landers, Multilingual Matters

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

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

▒ এখন জ্বলে উঠবেন কীভাবে?

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

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

মাসুদ শরীফ
উপ-সম্পাদক

সিয়ান পাবলিকেশন
বিশুদ্ধ জ্ঞান | বিশ্বমান

Friday, July 13, 2018

How to Start Learning Machine Learning

You can find lots of tutorials literally anywhere you look. If you have already learnt python, I would suggest you try to get acquainted with scikit-learn and keras. I gave links to a book which might be helpful; it has code examples and a bit of theory (It's also HUGE so learn only what you need). I would also suggest to learn theories in detail after you have learnt to implement simple networks.

https://sites.google.com/site/asfdgfhgjhkjgfhdgsf43/download-in-pdf-hands-on-machine-learning-with-scikit-learn-and-tensorflow-by---aurelien-geron-read-online

https://github.com/amitanalyste/aurelienGeron

* Samiul Alam

Thursday, June 14, 2018

Skin Specialist in Chittagong Dr. Saifuddin

Dr. Saifuddin
Skin Specialist
01716735256 (compounder- Salim vai)
You have to collect serial number by contacting with the compounder before visiting the doctor.

Monday, June 11, 2018

How I Started Learning Machine Learning

This is a long post where I would like to share how I started learning ML.

I first learned about machine learning from Andrew Ng's Coursera course. I did not complete the course or the assignments. Just went through the videos. The videos were short and I completed it in 2-3 weeks. I got a good overview of what ML was and where it could be applied.
Then I moved on to Michael Nielsons Deep learning booklet. Another little gem which is easy to understand and requires no prior knowledge of ML. It took me one week to finish it.

I then decide to get into some machine learning projects. I found some interesting competitions in Kaggle. In the beginning, I used Matlab but soon realized it did not have enough support in DL community and Python was more popular (and definitely more intuitive). So, I decided to learn Python. I started using a popular mobile app for learning Python. It was a good app but I found the process slow. Therefore, I started learning code straight from the Kaggle Kernels. I found some amazing people there, who wrote really good tutorials. Especially, exploratory data analysis (EDA) and beat the benchmark (BTB) notebooks from users like Anokas (he's a prodigy) and ZFTurbo were extremely useful. I tried to run their code each line at a time. Whenever I had questions regarding any functions, I read the documentation.

Fortunately, Python and Matlab have a few similarities. For Python, I had to learn how to manipulate some widely used data structure such as list, numpy array, and dictionary. I learned the data structures (series, dataframe) in the pandas library from their website (10 minutes to pandas). Also, I had to get used to the for loop implementation in Python which is quite different but extremely intuitive when you get the hang of it. Another useful concept was list comprehension. Once I got those down, all I had to do was get familiar with different libraries used in ML (e.g., keras, scikit-learn). While using the libraries, I found the tutorials in machine learning mastery website extremely useful.

To know about the current state of AI, I have subscribed to medium, a very popular blogging platform. This is an excellent source to learn about current technological advances. I get notifications through gmail and often find interesting articles to read. One of the most popular bloggers in AI, Andrej Karpathy (Tesla) writes on this platform. His blogs in github and medium are gold-mines. Another wonderful source for the advances in AI is the two-minute paper channel on Youtube. This youtuber gives a non-technical overview of recent papers. I like his enthusiasm :p

Another course that was very interesting was Jeremy Howard's Fast.AI. He takes a top-down approach where he gives an overview of all the state of the art concepts used in DL and shows how to use the tools. But the details exploration are left upon the participants. Which means you will find everything extremely difficult to comprehend in the beginning. Nevertheless, by getting exposed to the applications of such concepts you will understand what might be useful to you and you can focus on that instead of learning everything as a whole. The videos can be found on youtube. When I watched the videos (around 2017) there were seven of them, each were 2 hours long, and he was using keras. But in his updated videos he has included tons of stuff and he is probably using Pytorch.

So, that's the end of this post. I might have forgotten/never seen some great tutorials. Let me know your thoughts. Thanks for reading.

I encourage you to share the story of your journey in ML. It is great to know about people having a different approach to learning ML!

Resources:

Andrew Ng's Course:
https://www.youtube.com/watch?v=qeHZOdmJvFU&list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW

Michael Nielson's book:
http://neuralnetworksanddeeplearning.com/

Anokas:
https://www.kaggle.com/anokas

ZFTurbo:
https://www.kaggle.com/zfturbo

10 minutes to Pandas:
https://pandas.pydata.org/pandas-docs/stable/10min.html

Machine Learning Mastery (Deep Learning part):
https://machinelearningmastery.com/category/deep-learning/

Karpathy blog:
http://karpathy.github.io/
https://medium.com/@karpathy

Two minute papers:
https://www.youtube.com/channel/UCbfYPyITQ-7l4upoX8nvctg

Jeremy Howard's fast.ai:
http://www.fast.ai/
https://www.youtube.com/user/howardjeremyp

* Tahsin Reasat

Tuesday, May 15, 2018

How to Extract Multiple Integers from a String Input with Python

"How do I extract multiple integers from a string input?" is a very common question.

The most common answer is "use map( )."

Nope. There are many ways to extract multiple integers from a string, like using map( ) or the ast module or writing your own function. If you use these methods, it's cool because all of them work.

The problem is that these are not good answers for new Python learners. Functions like map( ), filter( ) and reduce( ) belong to a different style of programming called functional programming. The ast module depends on the user to provide input in the correct format. And writing your own function is redundant because Python already has elegant, built-in solutions.

Introducing LIST COMPREHENSIONS and GENERATOR EXPRESSIONS, to those who didn't already know.

These are built-in Python tools to process items in a list/tuple/dict/set or other iterators. I won't go into details; you can read about them on the internet. Instead, I'd like to show three examples.

A list comprehension can process a string of integers and return a list of those integers.

```
>>> s = input( )
1 2 3
>>> x = [ int( i ) for i in s.split( ) ]
>>> x
[ 1, 2, 3 ]

```

A generator expression can be used to process a string of integers and get a tuple.

```
>>> s = input( )
1 2 3
>>> x = ( int( i ) for i in s.split( ) )
>>> x
( 1, 2, 3 )

```

You can also use a generator expression to assign the extracted integers to individual variables.

```
>>> s = input( )
1 2 3
>>> a, b, c = ( int( i ) for i in s.split( ) )
>>> a
1
>>> b
2
>>> c
3
>>> a + b + c
6

```

That's all. Note that these methods work for any numerical data type, not just integers.

If you're used to map( ), then by all means continue using it because it's a great tool. But please, let us not propagate the use of map( ) to new Python learners, when a simple 'for' loop is more Pythonic and can be used to do the job neatly and efficiently.

- Sharif Muhaha

Sunday, May 13, 2018

যে প্রজেক্টটা অলরেডি অনেকদূর ডেভলপ করা হয়েছে অন্য ডেভলপার দ্বারা। সেই ডেভলপারের বদলে আপনাকে দায়িত্ব দেয়া হলো।

"ধরুন, আপনাকে একটা প্রজেক্টের জন্য হায়ার করা হলো, যে প্রজেক্টটা অলরেডি অনেকদূর ডেভলপ করা হয়েছে অন্য ডেভলপার দ্বারা। সেই ডেভলপারের বদলে আপনাকে দায়িত্ব দেয়া হলো।

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

এই মুহুর্তে আপনার দায়িত্ব কি হবে?

অর্থাৎ আরেকজন ডেভলপারের কোনো লার্জ স্কেল প্রজেক্ট এ আপনাকে মডিফাই, আপডেট, বাগ ফিক্স, নতুন কিছু এড ইত্যাদি কাজ করতে দিলে আপনি কিভাবে আগাবেন?"

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

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

আগের ডেভেলপারের কোড এবং প্রোডাক্ট রিকয়ারমেন্ট বুঝে ফেললে কাজ করতে খুব একটা অসুবিধা হবে না ।

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

আর যদি দেখেন প্রোডাক্ট মার্কেটে ভালো পজিশনে আছে, মেইনটেন্যান্স করার মত সময় হাতে আছে, তাহলে ম্যানেজমেন্ট এর সাথে কথা বলে ২-৩টা রিফ্যাক্টর স্প্রিন্ট শুরু করুন ।

বিজনেস ভ্যালু কে আমি সবসময়ই কোড কোয়ালিটির চেয়ে প্রাধান্য দিবো । বিজনেস সফল হলে পরে রিফ্যাক্টর করা যায়, পুরোটা নতুন করে রি-রাইট করার মত সময়ও বাজেট থাকে । বিজনেস ফেইল করলে হাই কোয়ালিটি কোডও কাজে আসে না ।
- Abu Ashraf Masnun

** আগের অফিসের সিনিয়র কলিগ ভাই যিনি নিউজক্রেড থেকে এসেছিলেন, উনি বলতেন - "আমরা যদি ম্যানেজমেন্ট বা বিজনেসের কথা মাথায় না রেখে শুধু কোড কোয়ালিটি নিয়ে চিন্তা করি তাহলে সেই কোড জাদুঘরে সুন্দর করে সাজিয়ে রাখা যাবে। বিজনেস হবে না"
- Hasan Abdullah

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

২/ ইস্যু, গিট হিস্টরি, কমিট ম্যাসেজ। দেখার চেষ্টা করুন তাদের কর্মধারা সময়ের উর্ধক্রমে। যদি এইগুলি না থাকে তাহলে, আবারো, সুখী হওয়া মুস্কিল হয়ে দাঁড়াবে।

৩/ লেয়ারে ভাগ করুন, এপিআই লেয়ার, ডাটাবেজ লেয়ার, মডেল, ভিউ, কন্ট্রোলার, আসলে এই বিভক্তি আপনার প্রজেক্টের উপর। এরপর এক একটা লেয়ার ধরুন ও সাবার করুন।

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

৫/ একি কথা বলা যায় ডাটাবেস ডিজাইন ডিয়ায়াগ্রাম নিয়ে, অনেক টুল দিয়ে কিন্তু আপনি নিজেই ইন্ট্রোস্পেক্ট করে বার করে আনতে পারেন ডাটা ডায়াগ্রাম।

৬/ টেস্ট কেইস থাকলে তো সোনায় সোহাগা।
- Arnab Bagchi

Monday, March 5, 2018

এখন আমরা কিভাবে প্রোডাক্ট চুজ করছি [Amazon Affiliate Marketing]

অনেকেই প্রোডাক্ট সিলেক্ট করে কিছু প্যারামিটারের উপর ভিত্তি করে। যেমন রিভিও সংখ্যা, রেটিং কেমন, রিভিও গুলো নেগেটিভ কিনা, প্রাইস। একেক জন একেক ভাবে করে। কেউ ৫, কেউ ১০ আবার কেউ ২০ টি প্রোডাক্ট চুজ করে। তবে বেশির ভাগ ক্ষেত্রেই ১০ টি করে প্রোডাক্ট নেয়। প্রোডাক্ট গুলো নেয়ার পর তাদের সম্পর্কে কিছু ডেসক্রিপশন লিখে, প্রোস এন্ড কনস লিখে.

সমস্যা কি হচ্ছে
অনেক রকম সমস্যা হয়। এসইওতে কি ধরনের সমস্যা হতে পারে সেটা আগের ভিডিওতে লিখেছি। ভিডিওটির লিঙ্ক নিচে পাবেন। সেটা প্যান্ডা আপডেট রিলেটেড। থিন ও ডুপ্লিকেট কনটেন্স সমস্যা।

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

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

আমরা যে প্রোডাক্ট গুলো নিলাম সেই গুলোই কি সাম্ভাব্য ক্রেতার জন্য বেস্ট চয়েজ?

উপরের জাজমেন্ট ক্রাইটেরিয়াতে নিলেই আসলে ১০টি বেস্ট প্রোডাক্ট যে আমরা দাবী করছি সেটা আসলে সঠিক না।
অন্য প্রোডাক্ট রিভিও সাইট তাহলে কিভাবে করে? তারা সত্যি অর্থেই সেই গুলো রিসার্চ করে। টেস্ট করে। তারপর রেটিং করে। তারপর নির্দিস্ট কিছু ক্রাইটেরিয়ার উপর ভিত্তি করে প্রোডাক্ট গুলো সাজায়।

আমরা কি টেস্ট করে এভাবে প্রোডাক্ট সিলেক্ট করতে পারবো। নিশ্চিত করেই না।

সমাধান কি

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

ইউটিউব হলো সেই বিশেষ সোর্স।

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

এমন অনেক সাবজেক্ট ম্যাটার এক্সপার্ট আছে যারা কেবল মাত্র ইউটিউবে কনটেন্ট তৈরি করে। তারা যেহেতু সাবজেক্ট মেটার এক্সপার্ট তারা সেই টুল বা প্রোডাক্ট সম্পর্কে অনেক গভীর জ্ঞান রাখে। তারা জানে যে কোন প্রোডাক্ট কেমন।তাদের নির্বাচিত প্রোডাক্ট গুলোকে অনায়াসে আমরা আমাদের রিভিও রাউন্ড-আপ কনটেণ্টের জন্য নিতে পারি।

যেমন https://www.youtube.com/watch?v=3920R1zIvCs
এই ভিডিওটিতে যিনি করেছেন তিনি সাবজেক্ট ম্যাটার এক্সপার্ট। উনার করা লিস্ট অবশ্যয় তার জ্ঞান,অভিজ্ঞতা ও দক্ষতার উপর নির্ভর করে তৈরি করেছেন। উনার এই লিস্টে যে প্রোডাক্ট গুলো আছে আমরা তা নিলে ধরে নিতে পারি যে আন্দাজে প্রোডাক্ট চুজ করার চেয়ে ভালো হবে। এতে করে আমাদের সাইটের ভিজিটররা অনেক ভালো গাইডলাইন পাবে।

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

সেই ক্ষেত্রে এই লিস্ট অপেক্ষাকৃত অর্থবহ হবে।

আমরা কি তাদের ভিডিও আমাদের পেইজে এমবেড করবো?

আপনি তাদের ভিডিও এমবেড করবেন না। এখন পর্যন্ত কেবল ইউটিউব ব্যবহার করে কিভাবে অপেক্ষৃত অর্থবল প্রোডাক্ট লিস্ট তৈরি করতে পারি তা তুলে ধরেছি।

প্রোডাক্ট লিস্ট তৈরি করার পরের কাজ হলো প্রোডাক্টের রিভিও লেখা। সেইটি আলাদা করেই আপনাকে করতে হবে। সেই ক্ষেত্রে ঐ সব ভিডিওতে পাওয়া তথ্য আপনার ডেসক্রিপশনে আপনার মতো করে তুলে ধরতে পারেন।

সেটা কিভাবে সেটাই আমরা ভিডিওতে দেখবো ( পাবলিশ হবে শীঘ্রই) ।

* Abul Kashem

Saturday, February 24, 2018

গণিতের নামে আমরা একঘেয়ে হিসাব করা শিখাই

ভাষার মাসে একটা অন্যরকম ভাষা নিয়ে কথা বলি। লম্বা লেখা, তবে আশা করি নতুন কিছু চিন্তার খোরাক জুটবে। স্টিফেন উলফ্রামের (Stephen Wolfram) সাথে গত মাসে এমআইটিতে একটি টকে কথা বলার সুযোগ হয়। বিশিষ্ট গণিতবিদ ও পদার্থবিদ। ম্যাথমেটিকা সফটওয়্যারের প্রধান আর্কিটেক্ট উনি। এআই নিয়ে তাঁর চমৎকার আইডিয়াগুলো আরেকদিন লিখব। তবে এই এআইয়ের যুগে পড়াশোনার কারিকুলাম ও আমরা কিভাবে গণিত করি এবং শিখি, তা নিয়ে উনার কিছু কথা আমার ব্যক্তিগত চিন্তার সাথে খুব মিলেছে। সেটা হচ্ছেঃ গণিতের নামে আমরা একঘেয়ে হিসাব করা শিখাই। সেই ক্লাস ওয়ান থেকে যেভাবে ২ + ২ = ৪ শেখানো হয়, তা কিন্তু আন্ডারগ্র্যাজুয়েট বা গ্র্যাজুয়েট লেভেলেও পরিবর্তন হয় না অনেক সময়। কিন্তু গণিত কি আসলে এটাই? কিভাবে এর কারিকুলাম পরিবর্তন করা উচিত?

গণিত একটি ভাষা। মানবজাতির সৃষ্ট ভাষার মধ্যে সম্ভবত সবচেয়ে কৃত্রিম কিন্তু এলিগ্যান্ট। এর বদৌলতে আমরা যেকোন ঘটনাকে বর্ণনা করতে পারি একজন আরেকজনের কাছে। আবার সব ভাষার মতই এক বাক্যের বর্ণনাকে কাটাকুটি করে সেই বাক্যকে সরলীকরণ করতে পারি। দুঃখর কথা হচ্ছে যে এই ব্যাপারটা ছাত্রদের পরিষ্কার করে বলা হয় না। GRE পড়লে ভোকাবুলারি বাড়ে, সেরকমভাবে নানা টেকনিক্যাল বিষয় পড়লে গণিত দিয়ে একটি ধারণাকে বর্ণনা করার ক্ষমতা বাড়বে। হ্যামিল্টনিয়ান বা লাগ্রাঞ্জিয়ান দিয়ে যা বর্ণনা করতে পারি, তাকে ডিফারেন্সিয়াল ইকুয়েশনে নিয়ে আসতে পারি, কিংবা সহজ ভাষায় লিখতে পারি F = ma. এই তিন প্যারাডাইমেই শব্দগুচ্ছকে ম্যানিপুলেট করার লজিক আলাদা, কিন্তু একই জিনিস বর্ণনা করা যায়। যত নতুন তথ্য দিতে চাবো, ততই বাক্যের পরিধি বাড়বে। সাধারণ ভাষার মতই। আবার সাধারণ ভাষা এবং গণিতের ভাষা একত্র করে না লিখলে আমরা সাধারণত বুঝতেই পারি না কি বলা হচ্ছে।

আমাদের বর্তমান কারিকুলামে ছাত্রছাত্রীদেরকে রোবট হিসেবে গণ্য করা হয়। আমাদেরকে অনেক হিসাবের উদাহরণ দেয়া হয়, যেমন ২ + 2 = ৪ ইত্যাদি busy work। এআই যেরকম অনেক উদাহরন থেকে বোঝার চেষ্টা করে what the hell is going on, আমরাও কিন্তু অনেক ক্ষেত্রে এখন তাই করি। উদাহরন শেখা ভালো কিন্তু কি কারনে উদাহরন শিখছি সেটাই অনেক সময় পরিষ্কার না, আবার একই ধরণের উদাহরন বারবার করালে একঘেয়েমি বাড়ে, কিন্তু তাইই বর্তমানে করানো হয়। ব্যাপারটা তখন আর কনসেপ্ট বেসড থাকে না, মুখস্ত বিদ্যার মত হয়ে যায়। বড় নামতার টেবিল মুখস্ত না করে আমরা ক্যালকুলেটর ব্যবহার করি। কিন্তু, নানা অপারেটর অ্যালজেব্রা দিয়েই গণিত বা পদার্থবিদ্যা/ইঞ্জিনিয়ারিং অনেক কোর্স চলে যায়। সেটা ২ + ২ = ৪ শেখার থেকে বেশি কিছু না। কিন্তু এই যুগে কম্পিউটার এসব খুব সুন্দরভাবে করতে পারে।

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

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

প্রোগ্রামিং শেখার জন্য এখন এরকম টুল আছে, যেমন Scratch। সেটা দিয়ে শুরুতে “হেলো ওয়ার্ল্ড” না লিখে বাচ্চারা এখন সুন্দর সব গল্প তৈরি করতে পারে। গণিতের জন্য Scratch কি তৈরি করা যায়? যেখানে গাণিতিক মডেল দিয়ে গল্প তৈরি করা যাবে। সেটা খুব চমৎকার একটা ব্যাপার হবে।

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

লেখাটা শেষ করি এলিয়েনদের জন্য নতুন ভাষা কিভাবে তৈরি করা উচিৎ, তা নিয়ে Arrival নামক ছবিতে স্টিফেনের ছেলের করা একটি কাজ শেয়ার করে। ছেলেমেয়েদের এরকম মজার, সৃজনশীল গণিত সমস্যা দেয়া উচিৎ আগে, নানারকম ফাংশন ব্লকের ভেতরে কি চলছে সেটা শেখা উচিৎ পরে।

* Nazmus Saquib

http://blog.stephenwolfram.com/2016/11/quick-how-might-the-alien-spacecraft-work/