Wednesday, December 23, 2009

Markov Chains

You know developers have an itch to implement something cool that they learned about. No can say it better than XKCD.



I learnt about Markov Chains today.

In mathematics, a Markov chain, named after Andrey Markov, is a discrete random process with the Markov property. A discrete random process means a system which can be in various states, and which changes randomly in discrete steps. It can be helpful to think of the system as evolving once a minute, although strictly speaking the "step" may have nothing to do with time. The Markov property states that the probability distribution for the system at the next step (and in fact at all future steps) only depends on the current state of the system, and not additionally on the state of the system at previous steps. Since the system changes randomly, it is generally impossible to predict the exact state of the system in the future. However, the statistical properties of the system at a great many steps in the future can often be described. In many applications it is these statistical properties that are important. - From the wikipedia entry on Markov Chains


It was so cool that I decided to do something with it. So I wrote a simple helper that generates articles for the app that I was testing. Here is the code in all its glory. It is not the fastest piece of code and is a memory hog, but who cares?



This is how you use it.



And this produced this fine article. Isn't this cool?

Tuesday, December 08, 2009

The problem with certifications

There was a question on ILUGC today to which I responded. I am reposting it as a blog entry.

You should first understand how certifications work from the perspective of a vendor who offers such certification say Microsoft, Redhat or SAP. The vendor has an economic interest in selling his product to a company. The company which buys a product (or a service in case the of Redhat) wants to know if the product/service they buy can be used by people they are going to employ. This is where the brilliance of marketing sets in.

They con the students and the candidates in the job market that there are several jobs awaiting them if only they clear the certification in their technology. They then go and talk to all the colleges and institutes like NIIT and convince them to market the certification and give them the necessary materials to make it a course. They then contact book authors who fill in pages and pages with mind numbing facts about the technology. The institute in the meanwhile has started tailoring a course and claims that it can get you from a dud to a certified professional in 3 months. As with any statistical distribution in a country with a billion people, a sizable few take up the certifications. The first few batches are always tough. Only the good guys clear the first 3 or 4 batches. But good guys like to share knowledge. So they share the dumps with the world.

The vendor does nothing to oppose this as they need that pool of skills in the market. After they have got enough number of people with the piece of paper with the name of the vendor and a printed signature of the CEO/founder of the company, the marketing department gets busy making powerpoint slides. The slides have graph of stating the number of people who have finished the certification and how easy it would be for their customers to find the right skills. And since the numbers (supply) are aplenty and the licensed customers are a few (demand), by the laws of economics, they should have no problem in finding people with the right skills (and a cheap pay).

The mindless HR then goes and "recruits" people with certifications. So if you notice, if you are a good candidate, you can lower your value just by getting certified. There are alternative means to improve your employability. You can start contributing to open source for a start. Do not pick difficult projects. If you cannot find a project, try building something. Try creating a simple webapp or a game. I am seeing too many freshers with "Biometric AI-Driven Neural Network Enabled Grid Based Path Finding World Domination Engine" on their resumes. And they want me to believe that they did it in 3 months without being able to write fizz buzz in their favorite language.

As an employer myself, I would recommend you to do the following. Take up a small project. A small pong game or a simple webapp that solves your problem and document all your learnings in a blog. This will make you a better writer and a better programmer. Use open source technologies. Apart from being the best choice in terms of freedoms that you get, you also get to interact directly with better programmers in mailing lists like these.

To pioneer a change, I, on behalf of Artha42, am ready mentor a select group of students every year. Your work will be entirely open sourced. I promise that you will not write a single line of proprietary code. That said, we are not Google. We are a small startup with limited resources. We cannot hold something as large as the Google Summer of Code. But we can do something smaller. If you are interested in such an internship opportunity, do drop in a line to careers artha42 com with "internship" in the subject line or visit our careers page.