Tuesday, October 25, 2011

AI Compiler LISP's Creator, John McCarthy died 24th October


Father of Modern Artificial Intelligence, John McCarthy died yesterday, 24th October. He died at his age of 84 years. He created the artificial intelligence programming language LISP. He studied Mathematics with Nobel Prize winner John Nash at Princeton University.

He has great career and achievements in science and mathematics. He arranged a chess match between scientists of US and USSR where he used telegraph technology transmitting the moves on that match. He is the owner of the lab "Siri" where he tried to give opportunities to genius scientists to explore new things in a free style. He spent his whole life to make AI more interactive and he had worked hard to make it real. He created LISP when he was creating Turing Machines for embedded systems. Most of the computer giants used his technologies and made their computing products user friendly and interactive with user's according to their own behavior. He also contributed lot to make Internet technology improved as we can see today.

John McCarthy was born in 1927 in Boston. He had lots of interest in mathematics and he tried to learn higher mathematics in his own. He achieved Ph.D from Princeton in 1951. He won the Turing Award from the Association for Computing Machinery in 1972 and the National Medal of Science in 1991. Her daughter confirmed his death informally and today Stanford has confirmed it officially.

Friday, October 21, 2011

তথ্য প্রযুক্তি কর্মীদের বেতন কাঠামোর অধ:পতন

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

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

কম বেতন আর সবকিছু করানোর পেছনে অভিজ্ঞতা সঞ্চয় কারন নয়, এর পেছনে কারন ঐসব প্রতিষ্ঠানের মালিকদের নিচু ব্যাবসায়িক মানসিকতা। গত ছয়মাসের ঘাটাঘাটি আর অভিজ্ঞতা থেকে বলতে পারি, ঢাকা শহরে এখানে সেখানে যে আইটি কোম্পানীগুলো তৈরী হয়েছে তার ৯০ ভাগের মালিকই আইটি সম্বন্ধে যথেষ্ট জ্ঞানী নন, এবং তারা সত্যিকারের ব্যবসা করতে এ ক্ষেত্রে আসেননি। একজন আলুর ব্যবসায়ীকেও যেখানে কমপক্ষে ১০ লাখ টাকা পুঁজি নিয়ে মাঠে নামতে হয়, চালের ব্যবসা করতে এলেও ৫০ লাখ নিয়ে নামতে হয়, আর সেখানে সর্বোচ্চ ব্যবসা প্রতিষ্ঠান আইটি কোম্পানী তৈরী হয় মাত্র ২-৩ লাখ টাকা পুঁজি নিয়ে। তাও আবার যদি একজন সত্যিকারের তথ্য প্রযুক্তি জিনিয়াস যদি অল্প পুঁজিতে নামত তাহলেও সেটি আলাদা রকমের হত, কিন্তু বেশিরভাগ ক্ষেত্রেই কিছু কুটিল লোকজন অন্যের ঘাড়ে চড়ে ব্যবসা করতেই মাঠে নেমেছে। একটি ফ্লাট, কয়েকটা কম্পিউটার, আর ইন্টারনেট কানেকশন, সব মিলিয়ে ২ লাখ পুঁজি খাটিয়ে আর ১ লাখ টাকা হাতে রেখে অল্প বেতনে কয়েকজন প্রযুক্তি কর্মী আর দুয়েকজন মার্কেটারকে কে নিয়োগ দিয়ে হাতে লাঠি নিয়েই এসব ব্যবসায়ী ব্যবসা করতে বসে পড়েন। আর তার বেচা বিক্রির সব দায়ভার এদের উপর দিয়ে তাদের নাকের উপর ছড়ি ঘোরাতে থাকেন। কয়টা প্রজেক্ট এল গেল, কত টাকা আয় হল এ নিয়ে প্রোগ্রামারদের পর্যন্ত তটস্থ থাকতে হয়। একজন হতভাগা প্রোগ্রামার একে তো সঠিক বেতন পাচ্ছেননা, সেই সাথে টিম ওয়ার্ক আর পারদর্শিতার সুযোগ পাচ্ছেনা, তার ওপর কেন কোম্পানী এ মাসে আয় করতে পারলা না তার দায়ভারও তাকে নিতে হচ্ছে। একে সংশ্লিষ্ট ব্যবসায়ীগন হয়ত একে রিয়েল এস্টেট ব্যবসার মত মাছের তেলে মাছ ভাজার মত করে তুলনা দিতে চেষ্টা করবে, কিন্তু আমি একে বলি মাঝির দেহ থেকে তেল নিঙড়ে নিয়ে তা দিয়ে তার নৌকার ইঞ্জিন চালানোয় বাধ্য করা।

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

Friday, October 7, 2011

Working with Banking APIs using PHP- Possible but troublesome

RPC is a smart method to interaction between two different process of a same/different system in a secured way. WSDL is a w3 standard for information sharing over internet and soap is also a w3 standard. WSDL and SOAP uses XML as standard for transferring data which helps to communicate two different type of system (example. windows to unix) or two different software of different platforms.

For securing the data manipulated by the clients Banks uses some APIs which uses WSDL and SOAP standards to communicate over http. cURL helps to PHP programmers to make a http request over internet. But working with PHP for this kind of job is not so easy. For other APIs it is not so complicated, but easier. Banks uses more security so programmers should do it carefully to integrate the system with those APIs.

Usually Banks uses two different security system together. They allows only some predefined ip address with defined SSL certificates. Most of them uses pkcs12 formatted SSL, but PHP doesn't like this. For using this format to communicate. Programmers usually breaks this SSL into three different parts of PEM formatted SSL. Then it is verified by cURL codes and then the response could be found from the server. It's complicated.

Sunday, October 2, 2011

Why should we use frameworks for web development?

Web programming, now-a-days it is the biggest field of working for programmers. PHP, Ruby, python etc. are popular languages of web programming. There are some frameworks for developing web programs using PHP, Ruby and Python. Zend, Cake, Codeigniter etc. are popular frameworks of web programming. Ruby-on-rails is the framework for Ruby and Plone is the framework for Python web programming. For developing a web program, it is not a mandatory to use these frameworks, but it is better to use them.

What is client's expectation from programmers?
1. They want fresh working codes.
2. They need codes which will be understandable by other programmers.
3. They need module based codes for easy opportunity to increase or decrease functionality.
4. All of above, they need something smarter.

Are frameworks gives opportunity to fulfill these expectations?
1. Yes, frameworks has a about to standard format of coding (Model-View-Controller).
2. They have a predefined structure, so every programmers can understand where to go for editing or changing a function.
3. Frameworks use Object Oriented Style of programming which allows to divide all modules into pieces.
4. Frameworks help to write codes in smart way but it also waste time of development and execution.

Without framework, is it impossible to write smart codes?
1. No, coding is the art of coders. It should not be predefined. It is obviously possible to write codes better than frameworks.
2. Procedural codes reduces time of development and execution. It is flexible to develop something newer and different without frameworks.
3. Coder can make codes more understandable than frameworks by his own ability.

I prefer not to use frameworks. Because, I can't write codes in a predefined way. I usually like to work for new and different things with new algorithm and new possibilities. So, I don't use any framework. But a new framework or style of coding is established for my own works by my experience. I like to work with that and I will try my best to improve this style.