സ്വതന്ത്ര മലയാളം കമ്പ്യൂട്ടിങ്ങ് പ്ലാനറ്റ്

January 24, 2012

SOPA and PIPA are not Dead.

Praveen Arimbrathodiyil blogs here

Some of you are probably pretty happy around now. You’re probably saying to yourself, “Yay, we’ve defeated SOPA and PIPA! Yay, victory us!!!”

Actually, you’ve lost. You’ve lost this war, because you… along with everyone else in this half-decayed republic of ours, allow a specific hot button issue to cloud your judgement and allow public sentiment to be unanimous concerning one specific topic.

Pedophiles.

You may be wondering what the hell Pedophiles have to do with Internet Censorship. The answer is; Everything. You cannot win, you are going to lose your internet freedom. You will be monitored, you will be followed and every act and idea you commit to the web will be logged and archived in the halls of Government.

All because you’re afraid of Pedophiles. If you aren’t, then maybe I am using the Royal “YOU” to comment on the public at large; the ignorant Baby Boomers who don’t understand the interwebs, the vacuous youth who haven’t learned the hard way that real opinions don’t make you many friends and often alienate you.

The sort of “YOU” that cannot argue that Pedophiles, just like Homosexuals, have a right to Exist.

It’s that “YOU” that is responsible for the death of the internet.

“But Wait, Heretic,” You might say. “The Net isn’t DEAD yet, we beat SOPA! We Beat PIPA!”

Wrong. You’ve insured your defeat. Consider the following;

http://investmentwatchblog.com/threatening-new-bill-worse-than-sopapipa-this-bill-entitled-the-protecting-children-from-internet-pornographers-act-of-2011-is-a-bill-with-overly-broadened-language-that-greatly-threatens-all/#.Tx0xqPk8d8G

No no. Follow the link. Copy-pasta if you must. You read it. You understand it… and realize that it is from the same corporate schill that propose SOPA and PIPA.

“What is this thing?” You might ask. Well if you’re part of the vast illiterati, I’ll explain you the thing (Bad grammar intentional).

H.R. 1981 is titled “The Protect Children From Internet Pornographers Act of 2011″.

It is a bill that requires the following; Your real, legal I.D. name, personal home address, IP address, browsing history, search terms you’ve searched and the complete details of your online habits are to be made trackable and must be logged by all ISP’s.

“Wait a second!” You might argue, “That has nothing to do with Children!”

At this point in the discussion is where I typically chime in with; I told you so.

For the last twelve years of my life, I’ve been arguing rationality in the face of rampant, frothing at the mouth hatred concerning Pedophiles and the various scaremongering news articles that are propogated and proliferated across the news media services and sites.

I recognized that this one topic, out of any topic, is where people lose any sense of proportion or reason; people cease thinking or functioning when a discussion starts involving, “People that diddle children”. Or people that might, hypothetically, because of pornography they look at, decide to diddle children.

“That’s monstrous, Heretic,” You might say. “Why would you defend people such as this?”

The answer is I am defending you. I am defending humanity, because if you allow a portion of humanity to become classified as sub-human, you allow the Government to abuse that concept for it’s own gain.

I am defending Pedophiles as human beings, because if I don’t, someone will be next. And then another. Who would it be? The Furries? People into BDSM? Japanese Hentai fans with their schoolgirl fetishes?

It turns out, no. They didn’t just move on to other fetishists and people with peculiar or abnormal paraphilias. They skipped them and decided to bilk the public.

Oh, fat surprise.

This bill will pass. It will pass because nobody in the Congress or House will vote against it. They won’t vote against it because it’s to protect children from Pedophiles.

And there you have it, folks. Because Pedophiles are universally reviled by society, you have your reason that all of your freedom gets to be stripped away.

Not because you are guilty, and it certainly isn’t because you might have child pornography on your computer.

H.R. 1981 isn’t for pornography, it’s the mechanism of control. It is the perfect tool to combat piracy, to punish the public and to create… as some writers would term it… Total Criminality.

You’re a criminal because you’re on the internet.

Who is to blame for this? You are. You are because you didn’t defend the most reviled people in society, did not argue for their rights, did not protect them from having their human rights stripped away.

You can blame yourself for the death of the Internet, because you never put yourself on the line to take the stand nobody else would take.

But I’m sure it’s fine. I’m sure you’re okay with this, because after all, some of you MIGHT be pedophiles.

So when your children ask you when the internet died, you can look them straight in the eyes and tell them it was murdered by everyone who couldn’t stand to think of Pedophiles existing on earth, and how the very idea of such a thing was enough for us to hand our betrayers the keys to the house.

If, on the other hand, you aren’t okay with this bill… I encourage you to fight against it. I say this while laughing, because good fucking luck; the entirety of the U.S. super-ego will crush you into a fine powder rather than hear anyone object to a bill protecting kids from Pedophiles.

Oh, and if you do want to fight the destruction of the internet, why don’t you share this with everyone you know. Print it and give it to your mum, pass it out to the elderly and the infirm, read it to your teenage children, make people understand.

Though I don’t have much hope of THAT happening.

This has been your Heresy of the Day.

Note: Repost of a diaspora update by The Heretic Of Ethics

by Praveen A at January 24, 2012 01:11 PM

January 10, 2012

ragsagar

r4g54g4r's h4ckl0g

Last month itself there were talks that the final year BE/BTech results will be available by January first or second week. When it became January there were posts in various unofficial blogs that the results will be coming out by January 4th. Blogs said that on worst case it will be postponed to January 5th and they even stated the time University will be updating it in the database. But days passed, nothing happened. And this cycle is still going on. I was thinking how much traffic will they be getting during these days. I just wanted to know how much clicks they will be getting for using those particular keywords in their posts. Even if they are providing fake news they will be getting lots of hits. Even i am checking those blogs twice daily. They are exploiting students’ eagerness to know about their examination results. Let me check the increase in number of traffic to this blog after posting this. I will come up with an update to this post if there is considerable increase in number of clicks.
BTW, now one of the University site says that the results are expected to come out by January 12th.


by Rag Sagar.V രാഗ് സാഗര്‍.വി at January 10, 2012 05:12 PM

January 05, 2012

2012 ഐ ടി

ബ്ലോഗ് ഭൂമി - e lekhanangal

ലാപ്‌ടോപ്പ് , സ്‌മാര്‍ട്ട് ഫോണ്‍ , ടാബ്‌ലറ്റ് കമ്പ്യൂട്ടറുകള്‍ എന്നിവ തമ്മിലുള്ള അതിര്‍വരമ്പുകള്‍ ഇല്ലാതാകാന്‍ അല്ലെങ്കില്‍ നേര്‍ത്തതാകാന്‍ ഇടയുണ്ട്, ഇതിനോടകം തന്നെ സ്‌മാര്‍ട്ട് ഫോണും ടാബും തമ്മില്‍ വലിപ്പത്തിന്റെ വ്യത്യാസം മാത്രമേ ഉള്ളൂ എന്ന് പറയാം. ചുരുക്കം ചില കമ്പനികളേ ടാബ് , സ്‌മാര്‍ട്ട് ഫോണ്‍ വിപണിയില്‍ ഇത് വരെ ഇറങ്ങിയിട്ടൂള്ളൂ എങ്കിലും ഈ വര്‍ഷം വിപണിയില്‍ ഭാവികാലത്തും പിടിച്ച് നില്‍ക്കണം എന്ന് താത്പര്യമുള്ളവരെല്ലാം ടാബുമായി എത്തും. ഒപ്പം തന്നെ ടാബിനും സ്‌മാര്‍ട്ട് ഫോണിനും മധ്യേ ഇരിപ്പുറപ്പിക്കാവുന്ന തരത്തിലുള്ള ഉപകരണങ്ങളും മത്സരിക്കും , നിലവില്‍ ഗാലക്‍സി നോട്ട് ഈ വിടവില്‍ സാന്നിദ്ധ്യമറിയിച്ച് കഴിഞ്ഞു. ലോകമാകമാനം സ്‌മാര്‍ട്ട് ഫോണുകളുടെ സഞ്ചിത ശരാശരി വളര്‍ച്ചാ നിരക്ക് (CAGR) ഇരട്ട അക്കത്തിലാണ്, സാധാരണ ഫോണുകളുടേതാകട്ടെ ഒറ്റ അക്കത്തിലും. ഇത് കൃത്യമായി വിരല്‍ ചൂണ്ടുന്നത് വരും വര്‍ഷങ്ങളിലെ സ്‌മാര്‍ട്ട് ഫോണ്‍ വിപണിയുടെ വളര്‍ച്ചയിലേക്ക് തന്നെയാണ്. ഫോണ്‍ വിപണിയുടെ ചരിത്രം തന്നെ നോക്കിയാല്‍ ഇത് മനസിലാകും. ഒറ്റവര്‍ണ സ്‌ക്രീനില്‍ നിന്ന് ബഹുവര്‍ണ സ്‌ക്രീന്‍ സൌകര്യത്തിലേക്ക് നാം പറിച്ച്നടപ്പെട്ടതിലും വേഗത്തിലാകും സ്‌മാര്‍ട്ട് ഫോണിലേക്കുള്ള വളര്‍ച്ച. കേവലം വിളി ഉപകരണം മാത്രമല്ല കൈഫോണുകള്‍ എന്ന തിരിച്ചറിവാകാം ചില ഉപഭോക്താക്കളെ എങ്കിലും മാറ്റത്തിന് പ്രേരിപ്പിക്കുന്നത്.

മൊബൈല്‍ ഫോണിലേക്ക് ആദ്യം കൂട്ടിയിണക്കപ്പെട്ടത് ക്യാമറ ആയിരുന്നെങ്കില്‍ പിന്നീട് പാട്ട് പെട്ടി , സഞ്ചരിക്കുന്ന സിനിമാ തീയേറ്റര്‍ , സ്ഥലമാപിനി (ജി പി എസ് ), ഇന്റര്‍നെറ്റ് (ജി പി ആര്‍ എസ് / ത്രി ജി) , വായന (ബുക്ക്/ പി ഡി എഫ് റീഡര്‍ ), ബാങ്കിംഗ് (ഇന്റര്‍നെറ്റ് /മൊബീല്‍ ബാങ്കിംഗ് ) ഒക്കെയായി ഫോണ്‍ മാറി. പോയ രണ്ട് വര്‍ഷങ്ങളിലായി മൊബൈല്‍ ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ വ്യാപകമായ സ്വീകാര്യത നവം‌നവങ്ങളായ എത്രയോ ആപ്ലിക്കേഷനുകളാല്‍ ഇന്ന് നമ്മുടെ ഫോണുകളെ വിവര സമ്പന്നമാക്കി കൊണ്ടിരിക്കുന്നു. ആന്‍‌ഡ്രോയ്‌ഡ്, ആപ്പിള്‍ ഐ ഓ‌എസ് , ബ്ലാക്ക് ബെറി എന്നിവയിലായി അഞ്ച് ലക്ഷത്തിലേറേ ആപ്ലിക്കേഷനുകള്‍ നിലവിലുണ്ട് ഒരു പക്ഷെ ഈ വര്‍ഷാവസാനത്തിന് മുന്നെ തന്നെ ഇത് പുതിയ കടമ്പ കടന്നേക്കാം.

മൊബൈല്‍ ഫോണില്‍ സന്നിവേശിപ്പിച്ചിട്ടുള്ള ഒരോ ഘടകത്തിനും സാമാന്യ ചിന്തയ്‌ക്ക് അപ്പുറത്തെ പ്രയോഗ സാധ്യതകളാണ് വരുന്നത്. ഒരു ഉദാഹരണം എടുത്ത് കാട്ടാനായി കാമറയുടെ കാര്യം തന്നെ നോക്കാം. ഉചിതമായ ഒരു ആപ്ലിക്കേഷന്‍ കൂട്ടിച്ചേര്‍ത്താല്‍ ഫോണ്‍ ക്യാമറയെ ബാര്‍ കോഡ് ഒപ്പിയെടുക്കല്‍ സംവിധാനമാക്കാം. വിപണിയിലെ പല ഉത്പന്നങ്ങളുടേയും പുറം‌ചട്ടയില്‍ കുത്തനെയുള്ള വരകളുടെ കൂട്ടം കാണമല്ലോ. സാധാരണയായി ബാര്‍കോഡ് സ്‌കാനര്‍ എന്ന ഉപകരണം ഉപയോഗിച്ച് കടകളില്‍ വിലയിടല്‍ വേളയിലാണ് ഈ വരകളെ വിവരമാക്കി ബില്ലില്‍ അച്ചടിച്ച് തരുന്നത്. എന്നാല്‍ ഇതിന് വേണ്ടിയുള്ള ആപ്ലിക്കേഷന്‍ സജീവമാക്കിയാല്‍ ഉടന്‍ തന്നെ മൊബൈല്‍ ഫോണ്‍ കാമറ വരകള്‍ക്ക് അഭിമുഖമായി പിടിച്ച് ക്യാമറ ക്ലിക്ക് ചെയ്താല്‍ ഉത്പന്ന/പുസ്തക വിവരം ഫോണ്‍ സ്‌ക്രീനില്‍ എത്തും. അതായത് ക്യാമറയെ വെറും പടമെടുക്കല്‍ സംവിധാനമായല്ല സ്‌മാര്‍ട്ട് ഫോണ്‍ കാണുന്നത്. സ്‌മാര്‍ട്ട് ഫോണ്‍ ഉപയോഗിച്ചുള്ള വൈദ്യശാസ്ത്രവുമായി ബന്ധപ്പെട്ട പ്രയോഗങ്ങളും നിലവില്‍ വന്നു കഴിഞ്ഞു, ചിലത് പണിപ്പുരയിലുമാണ്. വരും വര്‍ഷങ്ങളില്‍ ഫോണിന് മെഡിക്കല്‍ മേഖലയില്‍ വര്‍ധിച്ച സാധ്യതകളാകും തുറക്കപ്പെടുക.

എടുത്ത് പറയേണ്ട മറ്റൊരുമാറ്റം സമീപസ്ഥ വിനിമയ ധാര -സവിധ! (Near Field Communication) ആകും. സവിസം പ്ലാസ്റ്റിക് പണമായ ഡെബിറ്റ്/ക്രെഡിറ്റ് കാര്‍ഡുകളെ ഇല്ലായ്‌മ ചെയ്യും എന്ന് പോലും പ്രവചിക്കുന്നവര്‍ ഉണ്ട്. ക്യാമറ പോലെ തന്നെ ഫോണിനുള്ളില്‍ കൂട്ടിച്ചേര്‍ക്കപ്പെടുന്ന ഈ ഹാര്‍ഡ്‌വെയര്‍ ഉപയോഗിച്ച് തൊട്ടടുത്തുള്ള ഫോണുകള്‍ തമ്മിലോ അല്ലെങ്കില്‍ കടകളിലെ ബില്ലിംഗ് ഉപകരണമായോ ബന്ധിപ്പിച്ച് പണമടവ് നടത്താം. എ ടി എം ന് പകരം വ്യാപകമായി ഉപയോഗിക്കപ്പെട്ടേക്കാം, പെട്ടെന്ന് മറ്റോരു മികച്ച ബദല്‍ ഉപകരണം ഉരുത്തിരിഞ്ഞ് വന്നില്ലെങ്കില്‍ അടുത്ത കാലത്ത് സമീപസ്ഥ വിനിമയ ധാര മേല്‍‌ക്കൈ നേടും. എ ടി എം മുറിയില്‍ ഇത് മതിയാകും പണമെടുക്കാന്‍ . 2014 ആകുമ്പോള്‍ 50 ശതകോടി ഡോളര്‍ പണം സവിധ ഉപകരണങ്ങള്‍ കൈകാര്യം ചെയ്യുമെന്ന് അനുമാനിക്കപ്പെടുന്നു. വീസ , അമേരിക്കന്‍ എക്‍സ്‌പ്രസ്, മാസ്റ്റര്‍ കാര്‍ഡ് എന്നീ‍ പ്രബലര്‍ ഇതില്‍ നേരിട്ടോ അല്ലെങ്കില്‍ സാങ്കേതിക പങ്കാളി വഴിയോ നിക്ഷേപമിറക്കി കഴിഞ്ഞു. രസകരമായ മറ്റൊരു സമാന ഉപകരണം സ്‌ക്വയര്‍ ആണ്. ഐ ഫോണിലെ ഹെഡ്ഫോണ്‍ ജാക്കില്‍ പിടിപ്പിക്കാവുന്ന കാര്‍ഡ് റീഡര്‍ ആണ് ഇത്. പണക്കൈമാറ്റം ആവശ്യം വരുമ്പോള്‍ കാര്‍ഡ് ഇതില്‍ ഉരസിയാല്‍ പണം നല്‍കാം. സവിധ ആയാലും സ്‌ക്വയര്‍ ആയാലും ഇ-കൊമേഴ്സിന്റെയും എം-കൊമേഴ്സിന്റെയും വരും കാല ഉപയോഗത്തിന്റെ സാധ്യത ആണ് ഉറപ്പിക്കുന്നത്. സ്‌ക്വയര്‍ എന്ന സംരംഭത്തിന് ചുക്കാന്‍ പിടിക്കുന്നത് ട്വിറ്ററിന്റെ സഹസ്ഥാപകനായ ജാക്ക് ഡോഴ്സിയും.

എടുത്ത് പറയാവുന്ന മാറ്റം ഈ വര്‍ഷം നടക്കാനിടയുള്ളത് ടെലിവിഷനിലാകും. ഇതിനോടകം തന്നെ കേരളവിപണിയിലടക്കം സ്‌മാര്‍ട്ട് ടിവി വരവറിയിച്ച് കഴിഞ്ഞു. സോഷ്യല്‍ നെറ്റ്വര്‍ക്കിംഗും യൂ ട്യൂബ് വീഡിയോയും ഒക്കെ ലഭിക്കുന്ന ടി‌വിക്ക് വര്‍ധിച്ച സ്വീകാ‍ര്യത ആണ് ലഭിച്ച് വരുന്നത്. ടി വി യും ഇന്റര്‍നെറ്റും സമ്മേളിക്കുന്ന അനുഭവം (Convergence) . ഒപ്പം തന്നെ സ്‌ക്രീന്‍ സാങ്കേതികവിദ്യയിലും വന്‍‌കുതിച്ച് ചാട്ടമാണ് സംഭവിക്കുന്നത്, ഇത് ഊര്‍ജ ഉപഭോഗത്തില്‍ കുറവ് ഉണ്ടാക്കുന്നു , മിഴിവുള്ള ചിത്രങ്ങള്‍ നയനാന്ദകരമായി സ്വീകരണ മുറിയിലെത്തുന്നു. ഗെയിമിങ്ങ് സൌകര്യങ്ങളായ ഹാര്‍ഡ്‌വെയര്‍ കൂട്ടിയിണക്കാനും ഇന്ന് ടി‌വിക്ക് സാധിക്കുന്നു. ചില നിര്‍മ്മാതക്കള്‍ ആകട്ടെ ഉള്‍ച്ചേര്‍ന്ന (in built) രീതിയില്‍ കമ്പ്യൂട്ടര്‍ ഗെയിമിങ്ങ് ഹാ‍ര്‍ഡ്‌വെയര്‍ ടി വി ക്കുള്ളില്‍ തന്നെ ചേര്‍ക്കുന്നു. പ്രകടമായ മറ്റൊരു മാറ്റം കാണാന്‍ സാധ്യത ഉള്ളത് ടി വി റിമോട്ടുകള്‍ക്കാകും. വിവരം ടൈപ്പ് (text input) ചെയ്യലും മൌസ് മുന ചലിപ്പിക്കാന്‍ പറ്റുന്ന സ്‌ക്രോള്‍ വീലും റിമോട്ടില്‍ വ്യാപകമായി വരാന്‍ ഇടയുണ്ട്. ഇതില്ലാതെ പൂര്‍ണ ഇന്റര്‍നെറ്റ് അനുഭവം പെട്ടെന്ന് സാധ്യമാകുവതെങ്ങനെ ! ശബ്ദ നിയന്ത്രിത സൌകര്യവും റിമോട്ടിലേക്ക് / ടി വി യിലേക്ക് വരുമെന്ന് കണക്കു കൂട്ടുന്നവരും കുറവല്ല, ചാനല്‍ മാറ്റാന്‍ ആജ്ഞാപിച്ചാല്‍ മതി ബട്ടന്‍ അമര്‍ത്തേണ്ടതില്ലന്ന് ചുരുക്കം

സിനിമാ ഗാനങ്ങള്‍ ട്യൂണിനൊപ്പിച്ച് എഴുതുന്നു എന്ന ആക്ഷേപം പോയ ദശകങ്ങളില്‍ പലവുരു ചര്‍ച്ചയായതാണ്. എന്നാല്‍ ഇനി കേള്‍ക്കാനാകുക പാട്ടെഴുതുന്നത് റിംഗ് ടോണിനൊപ്പിച്ചാണ് എന്നതാകും. സംവാദങ്ങളില്‍ ഇത് ഇടം പിടിച്ച് തുടങ്ങിയിട്ടില്ലെങ്കിലും ഹിന്ദിയില്‍ ഇത് തുടങ്ങിക്കഴിഞ്ഞെന്ന് പറയാം. വരാനിരിക്കുന്ന സിനിമ ഹിറ്റാകാന്‍ ഉപകരിക്കുമെന്ന് മാത്രമല്ല , ഇത് വഴി നല്ലോരു തുക വരുമാനമായും നിര്‍മാതാവിന് ലഭിക്കുമെന്ന സാമ്പത്തിക മേന്മയുമുണ്ട്. സിനിമാ മാര്‍ക്കറ്റിംഗിന് സോഷ്യല്‍ നെറ്റ്വര്‍ക്കിംഗ് ഉപാധികള്‍ മികച്ച തന്ത്രബോധത്തോടെ തന്നെ 2012 ല്‍ ഉപയോഗിക്കും എന്നതില്‍ തര്‍ക്കമില്ല. സിനിമ ടെലി‌വിഷനില്‍ റിലിസ് ചെയ്യുന്നത് പോലെ വീഡിയോ ഷെയറിംഗ് സൈറ്റുകളായ യൂ ട്യൂബ് പൊലെയുള്ളവ വഴി എല്ലാ നാടുകളിലെയും കാഴ്ചക്കാരെ തേടി ഔദ്യോഗികമായി തന്നെ എത്തും.

പ്രാദേശിക ഭാഷകളിലെ ആപ്ലിക്കേഷനുകള്‍ മൊബീല്‍ ഫോണുകളില്‍ ഇടം പിടിക്കേണ്ടത് അനിവാര്യതയാകും. വിവിധ കമ്പനികള്‍ തമ്മിലുള്ള പേറ്റന്റ് യുദ്ധം മുറുകാന്‍ ഇടയുണ്ട്. കമ്പനികളും സര്‍ക്കാരും പരമ്പരാഗത മാധ്യമങ്ങളും എങ്ങനെയാകും ഫേസ്‌ബുക്ക്, ട്വിറ്റര്‍ , യൂ ട്യൂബ് തുടങ്ങിയ സോഷ്യല്‍ നെറ്റ് വര്‍ക്കിംഗ് ഉപാധികളെ ഉരുക്ക്/നിയമ മുഷ്ടി കൊണ്ട് നേരിടുമോ സക്രീയമായി ഈ നവമാധ്യമത്തെ വരിക്കുമോ എന്നും 2012 തീരുമാനിക്കും. 2011 ന്റെ പാഠം അതാണല്ലോ സൂചിപ്പിക്കുന്നത് .

by വി. കെ ആദര്‍ശ് (noreply@blogger.com) at January 05, 2012 09:13 AM

December 29, 2011

Hadoop Database access experiment

Jaggu's world

Over a couple of weeks I was reading and practicing the book "Hadoop in Action". After getting some insight on Hadoop and Map Reduce I worked out a couple of examples from the book and some example problems which I created too. Then I was discussing about features of Hadoop with some of my colleagues over a cup of tea. One of the guy asked a question regarding accessing database from Hadoop and process the data. I saw some discussions related to Hadoop and database access some where in the internet. Finally I digged-out the article "Database Access with Hadoop" for Cloudera blog. After reading the same I decided to work with a sample problem.

To workout the Hadoop database access sample program. Before some times I extracted a bunch of Tweets related to Gmail's new look and feel. I extracted the Tweets for some social media analysis practice. The extraction was done using Twitter4j API. The data is stored in MySQL database. The database table contains one table called NewGamil with following structure.
        +-----------------+--------------+------+-----+---------+----------------+
        | Field           | Type         | Null | Key | Default | Extra |
        +-----------------+--------------+------+-----+---------+----------------+
        | TweetId        | int(11)      | NO   | PRI | NULL    | auto_increment |
        | Tweet           | varchar(240) | YES  |     | NULL    |                |
        +-----------------+--------------+------+-----+---------+----------------+

The problem which selected to workout is fetch all the tweets from the table 'NewGamil' and perform a word count. The word count result has to be stored in HDFS. In-fact there are ways to write data back to database itself. But I decided first experiment with read from database ;-).

Hadoop provides a handy API for accessing database; the DBInputformat API. The API allows us to read data from RDBMS like MySQL, PostgreSQL of Oracle . To access the data from DB we have to create a class to define the data which we are going to fetch and write back to DB.  In my project I created a class namely GetTweets to accomplish the same.

    public static class GetTweets implements Writable, DBWritable {
        String strTweet;

        public GetTweets() {

        }

        public void readFields(DataInput in) throws IOException {

            this.strTweet = Text.readString(in);
        }

        public void readFields(ResultSet resultSet) throws SQLException {
            // this.id = resultSet.getLong(1);
            this.strTweet = resultSet.getString(1);
        }

        public void write(DataOutput out) throws IOException {

        }

        public void write(PreparedStatement stmt) throws SQLException {

        }

    }

Since I am accessing only one field from the table I defined the same in readFields() method. The write() methods are kept blank because the project does not aims to write back the data to DB. I'll experiment with writing data and post it soon.  In the readFileds() method we have to define how the data had to be extracted from the DB table. Since 'Tweet'  the data which I extractes for processing is VARCHAR() I am reading it as string and casting it to Text() data in hadoop. This class "GetTweets" will be used in our Mapper and Reducer class.

Now lets write our Mapper class:

    public static class TweetWordCountMapper extends MapReduceBase implements
            Mapper<LongWritable, GetTweets, Text, IntWritable> {
        private final static IntWritable intTwordsCount = new IntWritable(1);
        private Text strTwoken = new Text();

        public void map(LongWritable key, GetTweets value,
                OutputCollector<Text, IntWritable> output, Reporter reporter)
                throws IOException {
            GetTweets tweets = new GetTweets();
            tweets.strTweet = value.strTweet;
            TwitterTokenizer twokenizer = new TwitterTokenizer();
            List<String> twokens = twokenizer.twokenize(value.strTweet
                    .toString());

            for (int i = 0; i < twokens.size(); i++) {
                output.collect(new Text(twokens.get(i)), intTwordsCount);
            }

        }

    }

In the mapper class 'TweetWordCountMapper' I used the 'GetTweets' class to fetch the values for processing. Then we can access the data by creating object of the class inside the Mapper class.
NB: The code for TwitterTokenizer is taken from https://github.com/vinhkhuc/Twitter-Tokenizer.

Now we can write our reducer class :

    public static class TweetWordCountReducer extends MapReduceBase implements
            Reducer<Text, IntWritable, Text, IntWritable> {
        public void reduce(Text key, Iterator<IntWritable> values,
                OutputCollector<Text, IntWritable> output, Reporter reporter)
                throws IOException {
            int intTwokenCount = 0;
            while (values.hasNext()) {
                intTwokenCount += values.next().get();
            }
            output.collect(key, new IntWritable(intTwokenCount));
        }
    }

This reducer is responsible to sum the word count and produce the final output.

After this we have to configure the job with database connection details and driver class.

        JobConf twokenJobConf = new JobConf(TweetWordCount.class);
        twokenJobConf.setJobName("twoken_count");

        twokenJobConf.setInputFormat(DBInputFormat.class); //Set input format here
        twokenJobConf.setOutputFormat(TextOutputFormat.class);// Sets the output format

        Object out = new Path("twokens");

        twokenJobConf.setMapperClass(TweetWordCountMapper.class);
        twokenJobConf.setCombinerClass(TweetWordCountReducer.class);
        twokenJobConf.setReducerClass(TweetWordCountReducer.class);

        twokenJobConf.setOutputKeyClass(Text.class);
        twokenJobConf.setOutputValueClass(IntWritable.class);

        DBConfiguration.configureDB(twokenJobConf, "com.mysql.jdbc.Driver",
                "jdbc:mysql://localhost/GmailTrend", "jaganadhg", "jagan123"); //Specifies the DB configuration

        String[] fields = { "Tweet" }; //Specifies the Fields to be fetched from DB
        DBInputFormat.setInput(twokenJobConf, GetTweets.class, "NewGamil",
                null /* conditions */, "Tweet", fields); // Specifies the DB table and fields

        SequenceFileOutputFormat.setOutputPath(twokenJobConf, (Path) out);

        JobClient.runJob(twokenJobConf);


Before compiling and running the program we have to some additional setup in the Hadoop ecosystem. The MySQL connector library has to be put in $HADOOP_HOME/lib folder. To download the connector .jar file go to MySQL Connector/J download folder. I used the mysql-connector-java-3.1.14-bin.jar file in my program. After putting the jar in $HADOOP_HOME/lib restart the hadoop ecosystem. Viola !! now you are ready to run the program. Convert the code to .jar file and run it.

The complete project is available in my bitbucket repository .

Happy hacking !!!!!!!!!!!!

by jaganadhg at December 29, 2011 10:28 AM

December 26, 2011

Fedora 16 - Uninstall proprietary Nvidia driver and switch back to Nouveau

Solid Smoke

If you have an Nvidia graphics card, then one of the first things you'd probably do after installing Fedora is to disable nouveau driver and install the Nvidia proprietary driver. The easiest way to do this is using the packages from RPMFusion.

But if you happen to be unlucky like me, you'd have KDE apps (and some others too) crashing all around the place with this proprietary Nvidia driver. Apparently, there's some compatibility problem between glibc and the Nvidia driver. Switching back to nouveau is the best way out.

Here's how to uninstall the proprietary Nvidia driver from RPMFusion and get back to nouveau driver.

  1. Switch to a terminal by pressing Ctrl+Alt+F3 and login as 'root'
  2. Switch to runlevel 3 (terminate X):
    init 3
  3. Get a list of all nvidia packages installed:
    yum list installed "*nvidia*"
  4. Remove these packages. Use the following sample command:
    yum remove kmod-nvidia kmod-nvidia-PAE nvidia-settings nvidia-xconfig xorg-x11-drv-nvidia xorg-x11-drv-nvidia-libs
  5. Confirm that none of the following files exists. If they do, delete them or move them to some backup location.
    /etc/X11/xorg.conf
    /etc/X11/xorg.conf.d/00-nvidia.conf
    /etc/modprobe.d/blacklist-nouveau.conf

  6. Re-create initramfs to remove the blacklisting of nouveau
    dracut --force
  7. Reboot the computer
    reboot

The above steps worked for me and brought back nouveau. All these days, I was waiting for the proprietary driver to be fixed. In the mean time, I was using LD_PRELOAD=/usr/lib/libGL.so.1 in my profile file to avoid the crashes. But so many days have passed without any improvement. With nouveau, I get reasonable 3D performance and desktop effects. Best of all, no crashes :-)




by Solid Smoke (noreply@blogger.com) at December 26, 2011 11:42 PM

To be washed away by Mullaperiyar.

freebird

Yesterday, the Christmas day I had gone out to get few vegetables which we had missed out during the shopping. Everywhere the discussion was about Indian Prime minister meeting with the head of a province / state to discuss about a dam which is supposed to collapse any moment killing millions of people. For the uninitiated: Mullapperiyar is masonary [...]

by Bobinson at December 26, 2011 08:22 AM

December 21, 2011

Kochi Flash Mob - No Hate Mate!

Solid Smoke

This happened last week - 16th Dec, 2011 at the Oberon Mall, Kochi. Over 150 dancers took to the floor - for a noble cause.



With the Mullaperiyar issue going viral and threatening the livelihood, and more importantly the lives, of people, it's heartening to see such efforts. Kudos to the organisers!

I'm supposed to travel to Kanyakumari district on official business tomorrow. Who knows what awaits me at the border!


PS: The music and choreography reminds me of Step Up 3. May be it was indeed inspired from the movie.

by Solid Smoke (noreply@blogger.com) at December 21, 2011 08:05 PM

Play! framework + BeagleBone workshop at NSS Engineering College

Pramode C.E - The GnuVision Blog

Play! framework + BeagleBone workshop at NSS Engineering College

Dec 21, 2011

I was at the NSS Engineering College, Palakkad on the 20th (at the invitation of "ABACUS", the association of CS tudents of the college) to conduct a workshop on the broad topic of "do something fun with GNU/Linux". The audience was a bunch of 6th semester CS students with very little exposure to GNU/Linux. My plan was to show them how to develop a small web-app which will interact with some Python code running on the BeagleBone. This was going to be my first public demonstration of the amazing Play! framework as well as the lovely BeagleBone.

As there were students in the audience who did not even have exposure to HTML, I started with a quick intro to HTML and then explained the basics of the HTTP protocol, how does a web client interact with a web server and stuff like that. This was followed by an introduction to Play. I didn't get enough time to explain the working of some Python code I had written for the BeagleBone (the code simply turns LED's ON/OFF) - so, I had to be content with just giving a demo of the final program which lets you turn ON/OFF the LED's on the BeagleBone through a web interface.

The surprising thing for me was the very low level of awareness about GNU/Linux among the students. The college CS labs still seem to be using primitive stuff like Turbo-C and the only notion students have of an "IDE" is the Windows Notepad!! Hopefully, things will now change for the better, as there are some students who are taking the initiative to bring more FOSS awareness.

December 21, 2011 12:00 AM

December 20, 2011

shijualex

abundance of the heart

Here are the statistics of Indic language Wikipedias for the month of October 2011. The data for this report is taken from http://stats.wikimedia.org/

I have restructured my report to make it shorter and easier to read and compare – but without losing any of the data points. I have divided it into Quality of Projects, Community Building, and Readership.

NOTE: I have used the Indian way way of denoting large numbers: Crore is equal to 10 million, and Lakh is 100,000.

Community

In the table below are new users who have edited at least 10 times, existing editors with at least 5 edits in that month, and existing editors with more than 100 edits in that month. Once again, it is essential to look at all three numbers in conjunction with each other.

Something that I have been reflecting on is how even in relatively small communities (which is what almost all Indic communities are) there is still a relatively low number of new users coming on board and a very tiny number of editors have edited more than 100 times. The former is self-evident as a problem because it means we need to do so much more to encourage new editors. The latter is worrying because it means we also need to do much more to encourage editor retention as well as editor motivation.

(For context the number of speakers of each language is provided in all the tables.)

Malayalam and Tamil have the healthiest position on this table – across all three parameters and looking at progress month-on-month. This is most probably because of the strong efforts at community building in both communities. It is really important that these communities continue to build on their strong foundations.

I am particularly excited about two languages in this list. Both Marathi and Bengali editor counts have increased across all parameters and that is very encouraging. They are large languages with massive potential. I am also really hopeful that the Marathi media coverage around last month’s WikiConference is going to support the community as they go about encouraging and supporting new and existing editors.

Overall, though, it must be said that the total number of new editors coming to new Indic wikipedias is low. So focus need to be on bringing new editors to wiki and retaining existing users.

Quality of Projects

The following table gives data on the total number of articles, new articles per day, and the number of edits per article on each language wikipedia as of October 31, 2011. The data for September 30, 2011 is also given to provide a comparison point on progress over the past month.

These three numbers should be read in conjunction with each other. Theoretically, the number of edits per article can be taken as a surrogate for the quality of that article (based on the assumption that more edits on an article increases its quality.) To that extent, it would be good to have large numbers in all three – and not only one or two of them. For instance, if there is a large number of articles but a low number of edits, it might point to either poor article quality or high use of bots.


The Tamil and Sanskrit Wikipedias are showing encouraging growth in the number of articles. The Sanskrit Wikipedia’s growth is particularly laudable given the tiny number of speakers and the efforts the community is putting into increasing community strength. Assamese is a relatively tiny Wikipedia, but is growing with increasing edits per article. Malayalam has the highest consistent number of edits per article – which speaks well of the kind of collaborative editing environment that is being fostered by Malayalam community.

Hindi with more than 1 lakh articles continues to be on the top of the article count list. However, article growth is relatively low and number of edits per article is also low. A reason for this is probably the low number of active contributors (see next section). One of the reasons might be (and this is something that I have mentioned in various channels in the past) the relatively higher emphasis on increasing article numbers to reach the 1 lakh article milestone instead of putting greater emphasis on community building. It is also similar to what is happening on Newari Wikipedia which has nearly 70,000 articles but with an average of just 4 edits per article and with no increase in article count.

The Pali, Bishnupirya Manipuri, Newari, Bhojpuri and Sindhi communities have been inactive as far new articles are concerned.

Readership

The following table gives a rough estimate on the number of readers for each language wikipedia.

Given the huge speaker base of Hindi, it is not surprising that the Hindi Wikipedia continues to be on top with close to 87 lakh readers. Marathi also has a huge readership of 59 lakh. News coverage during WikiConference India has helped the Marathi Wikipedia to increase its readership. The near doubling of readership for Malayalam can probably be attributed to a recennt update in Google search (canonical equivalence of atomic chillus and non-atomic chillus).

The above table shows a very interesting trend. The readership on Indic language wikipedias is much higher than most people think – and is growing dramatically! Despite being involved in Indic languages for quite a while now, I was personally amazed to know that there are 4.3 crore readers across all Indic languages in October. Even more amazingly, this number grew by 1.2 crores in October over September!

This data is particularly important because at many times, Indic language Wikipedians feel a sense of dissatisfaction because there is a perception that there aren’t enough readers. By looking at the above statistics itself we know that perception is not true. So we have large number of readers waiting to read what we write. But do we have enough community members to work on different language wikis? The answer is not encouraging. We should be able to convert a small of our readers into editors. For that we all need to work together.

Mail me at shiju@wikimedia.org if you have any queries related to this post or about Indian language wiki projects.


by Shiju Alex at December 20, 2011 10:25 AM

December 19, 2011

Updated folderview’s TODO

Core Dump

Its been long time that I had blogged. May be the facebook had engulfed me for a while. Or may be post marriage effect? There are plenty of questions which roam around me, why I was inactive? So lets keep the past as “PAST”. Good news is that, I found time to work with KDE at least for the folderview patch. I need to thank Aron, Shantanu and my new colleague at office Vimal Singh. Started working on next bug(bug: 256187).  Nothing more to write :)

by sujith at December 19, 2011 07:34 AM

December 08, 2011

Hadoop Comic by Maneesh Varshney

Jaggu's world

There was a discussion on Hadoop Comic in Apache Hadoop Mailing list. I found that Maneesh Varshney created a wonderful comic strip to describe the entire Hadoop Distributed File System (HDFS). It is quite useful to understand the HDFS in easy way.
I am sharing the comic at my
Slideshare account.
Kudos to Maneesh Varshney for the wonderful and creative work.

Here it is .

Hdfs
View more documents from jaganadhg.

by jaganadhg at December 08, 2011 07:33 AM

December 05, 2011

December 03, 2011

കോക്‌ടെയില്‍ - Movie Review

Solid Smoke

അടുത്തിറങ്ങിയ ചില ചിത്രങ്ങളില്‍ നിന്ന് വ്യത്യസ്തമായി വലിയ hype ഒന്നുമില്ലാതെയാണ് കോക്‌ടെയില്‍ (cocktail) ഇറങ്ങിയത്. അരുണ്‍ കുമാര്‍ എന്ന സംവിധായകന്റെ ആദ്യ ചിത്രം. തിരക്കഥ സംഭാഷണം അനൂപ് മേനോന്‍. ജയസൂര്യ, അനൂപ് മേനോന്‍, സംവൃത സുനില്‍ എന്നിവര്‍ കേന്ദ്ര കഥാപാത്രങ്ങള്‍.

മലയാളത്തില്‍ ഈയിടെയായി ഇംഗ്ലീഷ് സിനിമകളുടെ റീമേക്കുകളുടെ കാലമാണെന്ന് തോന്നുന്നു. ഈ ചിത്രവും വ്യത്യസ്തമല്ല. Butterfly on a wheel (2007) എന്ന കനേഡിയന്‍ ചിത്രത്തിന്റെ അസ്സല്‍ മലയാളം പതിപ്പാണീ ചിത്രം. ഒരുവിധം എല്ലാ രംഗങ്ങളും, സംഭാഷണങ്ങളും എല്ലാം അതേപടി പകര്‍ത്തിയിട്ടുണ്ട്. ഇതൊക്കെയാണെങ്കിലും കോക്‌ടെയില്‍ ഒരു തരക്കേടില്ലാത്ത ചിത്രമാണ് (കോപ്പിയടി ഒരു അപരാധമായി കണക്കാക്കുന്നില്ലെങ്കില്‍).

കൊച്ചിയിലെ ഒരു പ്രമുഖ കണ്‍സ്ട്രക്ഷന്‍ കമ്പനിയില്‍ ഉന്നതനായ ഒരു ഉദ്യോഗസ്ഥനാണ് രവി എബ്രഹാം (അനൂപ് മേനോന്‍). ഭാര്യ പാര്‍വതിയും (സംവൃത സുനില്‍) മകളും കൂടിയ സന്തുഷ്ട കുടുംബമാണിദ്ദേഹത്തിന്റേത്. ജോലി സ്ഥലത്തും പിന്നെ മറ്റു ബിസിനെസ്സുകളിലും അസൂയാവഹമായ നേട്ടങ്ങള്‍ കൈവരിച്ച ഇയാള്‍ക്ക് ചില്ലറ ശത്രുക്കള്‍ ഇല്ലാതില്ല. ഭാര്യയും ഭര്‍ത്താവും ഒരു നാള്‍ മകളെ വീട്ടിലാക്കി ഒരു യാത്ര പുറപ്പെടുന്നു. രവി എബ്രഹാമിന് തന്റെ ബോസിന്റെ വീട്ടില്‍ പാര്‍ട്ടിയാണെങ്കില്‍ ഭാര്യക്ക് അവളുടെ കൂട്ടുകാരുടെ കൂടെയൊരു പാര്‍ട്ടി. മകളെ നോക്കാന്‍ ഒരു ഏജന്‍സി വഴി ഒരു ആയയെ ഏര്‍പ്പാടാക്കി അവര്‍ കാറില്‍ യാത്ര തിരിക്കുന്നു. വഴിയില്‍ ലിഫ്റ്റ് ചോദിച്ച് സൗമ്യനായ ഒരു അജ്ഞാതന്‍ (ജയ സൂര്യ) കാറില്‍ കയറുന്നതോടെ കഥയില്‍ ട്വിസ്റ്റ് സംഭവിക്കുന്നു. ഇയാള്‍ ആരാനെന്നും എന്താണിയാളുടെ ലക്ഷ്യമെന്നും വെളിപെടുന്നതിലേക്കാണ് സിനിമയുടെ ഗതി.

സിനിമയുടെ കഥ സാമാന്യം നല്ലതാണ്. പക്ഷെ cocktail എന്ന പേരുമായി വലിയ ബന്ധമൊന്നുമില്ല. ഒറിജിനല്‍ ഇംഗ്ലീഷ് ചിത്രത്തിന്റെ പേര് അല്പം കൂടി അര്‍ത്ഥവത്താണ്.

ജയസൂര്യയും സംവൃത സുനിലും നന്നായി അഭിനയിച്ചിട്ടുണ്ട്. പിയേഴ്സ് ബ്രോസ്ണന്‍ അവതരിപ്പിച്ച കഥാപാത്രം ജയസൂര്യ വിശ്വസനീയമായ തരത്തില്‍ ചെയ്തിട്ടുണ്ട്. അവസാന ക്ലൈമാക്സ് രംഗങ്ങളില്‍ സംവൃത സുനിലിന്റെ പ്രകടനം കുറച്ചുകൂടി ലഘുവാക്കാമായിരുന്നു എന്നെനിക്ക് തോന്നുന്നു. അനൂപ് മേനോനും കുഴപ്പമില്ല, പക്ഷേ ഉഗ്രന്‍ എന്ന് പറയുക വയ്യ. സാധാരണ രംഗങ്ങള്‍ നന്നായി കൈകാര്യം ചെയ്യുന്നുണ്ടെങ്കിലും കടുപ്പമുള്ള ഭാഗങ്ങള്‍ അത്ര convincing ആയി ചെയ്യാന്‍ കഴിഞ്ഞിട്ടില്ല.

ചിത്രത്തിന്റെ കഥ, തിരക്കഥ, സംഭാഷണം, സംവിധാനം എന്നിവയ്ക്കൊന്നും ആര്‍ക്കും പ്രത്യേകം ക്രെഡിറ്റ് കൊടുക്കാനില്ല. ഇംഗ്ലീഷ് സിനിമയിലെ സംഭാഷണങ്ങള്‍ മിക്കതും അതുപോലെ മലയാളത്തിലേക്ക് തര്‍ജ്ജമ ചെയ്തിട്ടുണ്ട്. എന്നാലും മോശമാക്കാതിരുന്നതിന് നന്ദി. ഗാനങ്ങളെല്ലാം നിര്‍ഗുണങ്ങളും അനവസരത്തില്‍ കുത്തിക്കേറ്റിയതുമാണ് (ഇംഗ്ലീഷ് സിനിമയില്‍ ഗാനങ്ങളില്ലല്ലോ..). ഉദാഹരണത്തിന്, 'വാ മോളേ, നമുക്ക് മമ്മിക്കൊരു ബര്‍ത്ത്ഡേ സോങ്ങ് പാടിക്കൊടുക്കാം' എന്ന് അച്ഛന്‍ പറയുന്നതോടുകൂടി പൊട്ടിവീഴുകയായി ഒരു പാട്ട്! ഇതുപോലൊരു സസ്പെന്‍സ് ത്രില്ലറില്‍ ഈ വക ഗാനങ്ങള്‍ ഒഴിവാക്കാമായിരുന്നു.

മികച്ചത് എന്ന് അവകാശപ്പെടാനില്ലെങ്കിലും, സാമാന്യം നല്ല പടമാണ് കോക്‌ടെയില്‍. ക്ലൈമാക്സ് രംഗങ്ങള്‍ക്ക് ശേഷം ഏച്ചുകെട്ടിയ ഭാഗം ഒഴിവാക്കാമയിരുന്നു എന്നെനിക്ക് തോന്നുന്നു.
പുതിയ സംവിധായകന് ആശംസകള്‍. ഒപ്പം, വെറും റീമേക്കുകളില്‍ നിന്ന് ഉയര്‍ന്ന് കുറേക്കൂടി original വര്‍ക്കുകള്‍ വരട്ടേ എന്ന് ആഗ്രഹിക്കുന്നു.

വാല്‍: 'സിനിമ കഴിയുമ്പോള്‍ പ്രേക്ഷകര്‍ കൈയടിക്കുന്ന ചിത്രം' എന്നാണ് ഈ സിനിമയുടെ പല പരസ്യങ്ങളിലും പറയുന്നത്. സംഗതി സത്യമാണ്. ആള്‍ക്കാര്‍ കൈയടിക്കുന്നുണ്ടായിരുന്നു. എന്ന് വച്ച് അത് അത്ര വലിയൊരു കാര്യമാണെന്ന് ആരും ധരിക്കേണ്ട. പ്രേക്ഷകരുടെ മച്യൂരിറ്റിക്കൊരു ഉദാഹരണം: സിനിമയുടെ ഇടയില്‍, അനൂപ് മേനോന്‍ പറയുന്ന ഒരു ഡയലോഗ് ഉണ്ട് - "ഇതിപ്പോള്‍ പദ്മശ്രീ ലെഫ്റ്റ്. കെര്‍ണല്‍ മോഹന്‍ ലാല്‍ പറഞ്ഞത് പോലെ.....". ഇത്രയും പറഞ്ഞപ്പോള്‍ തന്നെ ബാല്‍ക്കണിയില്‍ നിലക്കാത്ത കൈയടിയും വിസിലും. ബാക്കി ഡയലോഗ് ആര്‍ക്കും കേള്‍ക്കാന്‍ പോലും പറ്റിയില്ല! ഇത്രയേയുള്ളൂ ഇവിടത്തെ ഓഡിയന്‍സ്!

by Solid Smoke (noreply@blogger.com) at December 03, 2011 04:42 PM

Fedora 16 / Windows 7 - Dual booting with GRUB2

Solid Smoke

Fedora 16 was released almost a month back. This is the first Fedora release to have switched to the GRUB2 boot loader. I had some trouble installing Fedora 16 - the boot loader won't get installed on my MBR since there wasn't enough space to accommodate the boot image. The details of my struggles can probably be the subject of another post. Here, it must suffice to say that I had nuked my first partition, containing Windows 7, to make sufficient space (unallocated sectors) at the beginning of the HDD for grub2 boot image.

After installing F16, I reinstalled Windows 7 on to the first partition on the HDD. Everything was fine, except, unsurprisingly, that it replaced grub2 boot loader with its own.

Getting back grub2 to boot Fedora was a matter of doing this:
  1. Boot using Fedora 16 DVD
  2. Select 'Troubleshoot' and use the 'rescue mode'
  3. Let Anaconda autodetect existing Linux installations, and when prompted, select your F16 installation from among the multiple existing installations
  4. Read the message that says the partition has been mounted under /mnt/sysimage and I could do: chroot /mnt/sysimage if I wanted
  5. Do exactly that:
    chroot /mnt/sysimage
  6. Reinstall GRUB2 on to my MBR:
    grub2-install /dev/sda
  7. Reboot and viola! I was able to boot in to Fedora again :-)

That being said, should I be able to boot in to Windows 7 now? I wasn't! This one was a bit surprising since old grub-install used to auto-detect other operating systems and made everything work. Things have changed, and apparently for the worse!

After booting in to F16, I tried to get Windows entry in to GRUB2 menu. After reading a little bit, here's what I should've done:

  1. Make sure a package called os-prober is installed:
    yum install os-prober
  2. Back-up my existing grub.cfg file
    cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
  3. Re-create the cfg file, hoping grub2 would autodetect Windows
    grub2-mkconfig -o /boot/grub2/grub.cfg
  4. Reboot and hope it works
It seems that the above four steps would've worked. If you reached this page after searching for a way to dual boot Fedora 16 and Windows 7, this is exactly what you should do.



As for me, I did a lot of other stuff:
  1. Assume that grub2 was unable to auto-detect Windows and I should do it manually
  2. Add the following entry in /etc/grub.d/40_custom

    menuentry "Windows 7" {
    insmod ntfs
    set root=(hd0,1)
    chainloader +1
    }

  3. Find the wrong grub2 configuration file at /etc/grub2.cfg and replace it with:
    grub2-mkconfig -o /etc/grub2.cfg
  4. Reboot and find that Windows entry is still missing
  5. Boot back in to Fedora and find that /etc/grub2.cfg indeed contains the entry for Windows
  6. Re-install grub2 in a desperate attempt:
    grub2-install /dev/sda
  7. Reboot and find that nothing has changed
  8. Search the internet and repeat steps 4-7 above without any use
  9. Again verify /etc/grub2.cfg and find that there are in fact two entries for Windows 7 - one that I added manually and one, wait for it, auto-detected by grub2 (os-prober)! Apparently, the assumption I made in step-1 was wrong and step-2 wasn't really necessary!
  10. Get back in to the reality that Windows entry is still missing in grub2 boot menu even though it appears in the cfg file
  11. Search more and stumble up on a bug report that indicates /boot/grub2/grub.cfg is the right grub2 file for Fedora!
  12. Do it  right this time with:
    grub2-mkconfig -o /boot/grub2/grub.cfg
  13. Reboot and find that everything's merry

Apparently, /boot/grub2/grub.cfg is the real file that grub2 uses. On Fedora, /etc/grub2.cfg is a symbolic link to /boot/grub2/grub.cfg.
But if that's the case, then everything should've worked when I used grub2-mkconfig to overwrite the file in /etc, right? Again, as my luck would have it, grub2-mkconfig is buggy in that it doesn't follow the symlink. It just replaced /etc/grub2.cfg with a real file - a file that nobody cares about!


So, if you find that the entries you very clearly see in the cfg file are missing in the boot menu, check if you're using the right cfg file.



by Solid Smoke (noreply@blogger.com) at December 03, 2011 04:33 PM

November 29, 2011

Experiments with NoSQL databases: CouchDB

Jaggu's world

I started reading about NoSQL databases for a long time. Occasionally  I used some NoSQL databases like Apache CouchDB and Apache Cassandra for some analytics purpose(Some minor projects) with Python. This time I just thought why can't try something on Java + NoSQL. I created a small for project to play with. The idea of this project is: store Twitter search result to CouchDB.   I used the following Operating System, Programming Languages and Libraries in this project.

        Operating System                  :     Fedora 16 (verne)
        Programming Language     :     Java (JDK 1.6.0_29)
        IDE                                            :     Eclipse 3.7.1
        Apache CouchDB                   :    1.0.
        External Libraries                   :     Couchdb4J
                                                                Twitter4J
                                                              Apache Commons httpclient, logging, codec,commons,collections, beanutils
                                                              Jsonlib, ezmorph   

Installing CouchDB
To install CouchDB fire the terminal and type the command
    $su -c 'yum -y install couchdb'

After succesful installation start the CoucbDB server by issuing the command in the terminal
    $su -c '/etc/init.d/couchdb start'

Now your CouchDB instance will be up and running. You can check this by opening CouchDB Futon in the broswer by navigating to http://localhost:5984/_utils/. If everything will fine you will see the Funton Interface.

Let's start out project.
First create a function to connect to the CouchDB instance,create and retrun a database with given name. If the database already exits it has to return the database.

    /**
     * @param strDBName
     * @return dbCouchDB
     */

    public static Database connectCouchDB(String strDBName) {
        Database dbCouchDB = null;
        Session dbCouchDBSession = new Session("localhost", 5984);
        List<String> databases = dbCouchDBSession.getDatabaseNames();
        if (databases.contains(strDBName)) {
            dbCouchDB = dbCouchDBSession.getDatabase(strDBName);
        } else {
            dbCouchDBSession.createDatabase(strDBName);
            dbCouchDB = dbCouchDBSession.getDatabase(strDBName);
        }

        return dbCouchDB;

    }

   

Now we can create a function to search in Twitter Search and return the tweets.

    /**
     * @param strQuery
     * @throws TwitterException
     * @return queryResult
     */

    public static QueryResult getTweets(String strQuery)
            throws TwitterException {
        Twitter twitter = new TwitterFactory().getInstance();
        Query query = new Query(strQuery);
        QueryResult queryResult = twitter.search(query);
        return queryResult;

    }


To insert the tweets to the CouchDB document collection(database) it has to be converted to a document. Lets create a function to convert individual tweets to CouchDB document.

    /**
     * @param tweet
     * @return couchDocument
     */

    @SuppressWarnings("deprecation")
    public static Document tweetToCouchDocument(Tweet tweet) {

        Document couchDocument = new Document();

        couchDocument.setId(String.valueOf(tweet.getId()));
        couchDocument.put("Tweet", tweet.getText().toString());
        couchDocument.put("UserName", tweet.getFromUser().toString());
        couchDocument.put("Time", tweet.getCreatedAt().toGMTString());
        couchDocument.put("URL", tweet.getSource().toString());

        return couchDocument;

    }


Now we can try to write the Twitter Search results to the CouchDB document collection with the following function.

    /**
     * @param tweetQury
     * @param dbName
     * @throws TwitterException
     */

    public static void writeTweetToCDB(String strTweetQury, String strdbName)
            throws TwitterException {
        QueryResult tweetResults = getTweets(strTweetQury);
        Database dbInstance = connectCouchDB(strdbName);
        dbInstance.getAllDocuments();
        for (Tweet tweet : tweetResults.getTweets()) {
            Document document = tweetToCouchDocument(tweet);
            dbInstance.saveDocument(document);
        }

    }

Now it is time to execute our project. Add the following lines to the main() and run the project.

        String query = "java";
        String dbName = "javatweets";
        System.out.println("Started");
        writeTweetToCDB(query, dbName);
        System.out.println("Finished");


That is all !!!!!! .

The entire code is available at my bitbucket repo

Happy Hacking !!!!!!!!

by jaganadhg at November 29, 2011 09:00 AM

November 28, 2011

Preparing for your first-job interviews

Sarath Lakshman

It has been a long time since i wrote a blog entry. Here is some interesting piece for final year computer science students.

Getting a job is one of the happiest things in the life of a final year guy. I also had such wonderful moments during my final year. I would like to share some bytes of info that can help you out.






University/College studies and your first job


In the long four years of engineering course, you study a lot of things. Lot of junk and little good. In reality very few subjects really help and are useful for a computer science job. For getting a job, you will need even fewer set of subjects among them. Hence, finding a job is easy. But you have to master the subjects that you love. I will list out the few subjects that will help you find a job.

Data structures, Algorithms and Analysis, Operating Systems, Computer Networks, C Programming, Object Oriented Programming, Database Management systems, Compilers (Optional), Distributed Computing (Optional), Microprocessors (Optional)

The perspective of current education system and the industry goals diverge very much. In colleges, we study for obtaining some marks. The teachers also have the goal to help their students to obtain marks rather than learning something that may help gain the ability to solve computer science programs using their skillsets. In industry, the ultimate goal is to produce good quality software within short span of time. That means, the skill requirements are good coding skills, ability to understand and solve problems algorithmically with analysis to validate and come up with optimal and practical solution. To grow up as a software engineer that meets the industry requirements, the education system at college fails.

You have to put good self effort to gain the skillsets and the passion for learning. You should have good coding skills with proficiency in one or more programming languages, understanding of standard algorithm techniques at basic level. Let us have a run through objectives during preparation for a job.


Preparing your CV


Curriculum Vitae is important while applying for a job. Your CV is a blueprint of your personality. It is the first phase during a recruitment that gives the recruiters an overall view of your skillset and your background. Hence, it is worth to spend few days in preparing your CV. Note the following things while preparing your CV.

Use a different layout from other candidates who are applying for job along with you. Make yourself different from others. Write a career objective that states your interest. If you are applying for a specific role, Write a highlights section as the first section in your CV. Highlights should list out important achievements and your skillsets in bullets. This section is indented for HR who screens your resume. The next section can be ‘Skills’, which lists out your skill sets and programming languages. Write in an order separated by commas such that less proficient technologies should come last. You should also mention the operating systems you are familiar with. The next section can be Achievements. But you can move this section to the end of the resume if you think that you do not have considerable good technical achievements for highlighting. The next section should be Projects. This is the most important section in your resume. You should spend some time in writing this section. You should specify the title of the project, duration (optional), the technologies used, a summary of the project describing the project in few words, and project highlights section. The project highlight section should list key features about your project listed as bullets. Write them in an impressive manner stating the facts properly.

Eg.

1. Implemented a H.263 video streaming library for android 2.3

2. Implemented video frames collector and device mapper that converts video stream to v4l linux device

3. Tested on Android 2.3 and found that 25 % performance improvement than the bundled video library

If you have lot of numbers to showcase the benchmarking or awesomeness of your project. that is great. If your project bagged some awards or deployed for some good numbers of users, mention that figures and achievements in the highlights.

I would prefer to order the project in the order of significance rather than chronological order. After the project section, have an achievements section which lists all technical and non-technical achievements. You can split your achievements section into subsections like publications, events, etc. Write the educational background section as the last section of your resume. Because it is the most insignificant portion of a resume if you are looking for a good computer science job. It states few figures that indicate your marks which is not an indicator of your knowledge.


Tips for interview preparation


You should acquire sound knowledge about few of the subjects listed in the earlier section of this article. Usually recruitment process consists of a written test paper followed by a couple of interviews. Focus of your preparation should be based on the job position you are applying for. If you are preparing for a developer interview, you should be sound with Data Structures and Algorithms. You might be bored with the subject since you attended some boring series of lectures from colleges to grab marks. Try again approaching the subject in a different manner. You will definitely enjoy it. Start reading the book ‘Programming Pearls’ before you start preparing. It will give you a wonderful insight you never had before. I will focus on developer interviews.

Companies usually ask some technical aptitude questions, puzzles and questions from the subjects along with the test paper. Most of the questions will be repeated. Search for programmer interview aptitude questions and brain teasers for programmers on Google. You will find a good list. Try to solve them. Learning algorithms are not hard. But understanding the use cases and ability to apply them to solve problems require some effort and practice. Whenever you learn an algorithm, try to implement it using a programming language. For practicing algorithms to coding, you should use some highly object oriented and simple languages. The best language you can learn is python. You can practice coding algorithms with Python without any implementation complexity and it will look like a pseudo code. Learn python today. Seriously it won’t take more than a day to learn things that you will require to implement algorithms. C is a great language. Implementing certain Data structures or algorithms in C gives you a good experience to code well in C. I will write some notes on few algorithms that you should try implement in C. Algorithm analysis for important algorithms should be understood. You should know the worst case complexity (Find out the worst cases in the case of a particular algorithm), Best Case complexity (Also the best case) and the average case complexity (Also the average case example). Space complexity of the algorithm should be known in order to select the best algorithm according to problem environment.

 

Data Structures and Algorithms

Binary Search

This is a very important algorithm you can apply at many different problem environments you never expect.

Understand the runtime complexity for the Binary Search and understand how to derive the complexity from algorithm. Note that it can be applied for only sorted lists. Learn how to apply Binary Search in a Rotated Sorted List by using recursion and how the algorithm complexity varies. Implement Binary Search using C for a list of strings. You should familiarize the terms in place sorting, stable sorting and also should understand which sorts come into these categories.

Insertion Sort

Understand the algorithm and derivation of algorithm analysis. Compare it with Card game in which we move the cards to the suitable position. Keep the example in mind and apply to similar problems. In Insertion sort, we sort the element set by consequently moving the current element to the appropriate position in an already sorted set.

QuickSort
QuickSort is a very important sorting technique. It uses divide and conquer technique. Divide the given set of elements into smaller sets recursively and apply comparison and swap. When comparison and swap is performed to formulated smaller sets, it results in the larger sorted set. Learn algorithm analysis. Learn how to find kth smallest element by modifying the Quicksort algorithm in O(nk) complexity. Find out mean of a set of elements in O(n) by modifying the above problem.

MergeSort
Mergesort is also a divide and conquer sorting technique. The concept is to merge two sorted list to obtain larger sorted set. By dividing the given array into smaller subset by recursion, smaller subsets are formed. Merging the subsets from lower level to higher level, we obtain sorted array. Learn algorithm analysis. Note that merge sort takes an extra array. Hence this is not an in place sorting. It has O(n) space complexity. You should practice problems related to merge sort. Eg. You are given two sorted arrays with size n and 2n. The second array contain n elements in the positions 0 to n-1. Now without using extra space, formulate the elements in 1st and 2nd array into 2nd array and return a sorted array of size 2n.

HeapSort
Heapsort is an interesting sorting technique. Heap is a tree in which parent node is always >= child nodes (called as max-heap) or parent node is always <= child nodes (called as min-heap). This is the basic property for a heap. Let us have an overview of how to create a heap and manage it. When we need to add an element into an existing heap, we add the element as root or to the rightmost bottom element in the heap. Then apply heapify operation. Heapify operation can be of two types: shiftup and shift down. When we add a new element to an existing heap as root element, we perform shift down operation. Shift down operation performs a traversal from root level to bottom level, at each level of traversal, it compares whether heap property is violated, if so it will perform swap between parent node and child node to obey the heap property. Hence the element we added as root will move to the accurate position when the traversal reaches the bottom level. If we add a new element to the bottom right element, we need to perform a shift up to position the element to the right position. We traverse from parent in the bottom level to the root, by checking the heap property at each level and swapping elements to meet the heap property, we get a balanced heap when traversal reaches the top element.

Heapsort makes use of these operations to obtain a sorted set. Let us assume we have a heap (1,n). the root element will be the highest value (max-heap). Hence it will be the last element in the sorted list. We swap the root and the last element. Now the heap property is lost. But the nth position of array has the correct element in the sorted list. So we exclude nth element and heapify the heap(1,n-1) by using shift down operation. Because the root element is the one breaking the heap balance. After doing heapify 2nd time, we get 2nd highest element as root element. Now swap root element with n-1 element. Hence n-1, nth elements are 2nd largest and largest elements. Now exclude the n-1 and nth element, heapify heap(1,n-2). Follow the procedure until the newly formed heap size become one. You will get a sorted list. Read the chapter Heaps from Programming Pearls (It will give you a wonderful insight). Practice the problems: Find kth largest element from a given unsorted array. Implement priority queues.

External Sorting

External sorting is an important sorting technique used when the amount of data we need to process is greater than the available memory. For eg, we have 1GB of integers and 256MB of RAM. Hence it is clear that we cannot load entire list of numbers into ram and perform in memory sorting. External sorting techniques are to be used to solve this problem. K-Way merging is one of the simplest methods to solve the problem of RAM < data size. We can split the data into K parts. The part split is performed such that each split is less than the size of RAM. Then we can sort each part individually using any sorting algorithm. Then we can perform a special type of merging to obtain sorted output. Let us see how to perform the merge.

For eg, we split the data into 4 parts and we individually sorted them. Then take the first element from each 4 sorted lists and sort them and find out the lowest element. It will be the first element in the sorted output. Add it to the new list called full sorted array.

Now, from the array from which we obtained the lowest element, take the next element, sort the list again and find out the second lowest element. From the array we obtained 2nd lowest element pop out the next element and sort again to find out the third lowest element. Proceed the process until all arrays becomes empty or one array remains few elements. If an array remains unempty add those elements in the order to the full sorted array. Have a look at implementation code (http://code.google.com/p/kway/)

Bit array technique for solving RAM < Data problem for sorting counting numbers

In a 32 bit system an integer takes 32bits to store an integer and a 64 bit system takes 64bits to store a number. But for storing counting numbers, we can use bit vectors which are formulated by using 64 or 32 bits in an integer. If we set 0th bit in 32 bit we can represent it as 1. If we set 2nd position, we can represent it as 2. If we define an integer array of size N, we can actually represent 32*N numbers using that integer array. In order to sort large number of unique counting numbers we can use, bitsorting by setting and clearing bit positions. If we need to represent 1 to 68 numbers we need only 68 bits. We can represent it using an integer array of size 3. Ie, 32*3 = 96 bits. To set 68th bit, we know that 68th bit is situated in the array offset 2. To obtain the array offset, divide the number by 32. (68/32 = 2). Now we need to know which bit position needs to be set in the 32 bits available in array[2]. For that, findout modulus by 32. 68%32 = 4. Hence set the 4th bit in the array[2]. This can be performed without division and modulus operators by using bit shift operators.

i=68
array[i>>5] |= 1 << (i & 0x1F)

Here we find out i/32 using right shift operator (Each right shift causes division by two. Five times rightshift = division by 2^5 (32) ). By using AND operation with 0x1F, we get 5 Least significant bits, the value of 5 LSB returns in the position in 32 bits. Hence we shift 1 towards that much positions to left and is ORed to do the bit set operation.

Have a look at the implementation code. http://cm.bell-labs.com/cm/cs/pearls/bitsort.c

 

Bit manipulation problems

By using bit manupulation, we can do lot of tricks over numbers. See http://graphics.stanford.edu/~seander/bithacks.html for lot of interesting bit twiddling hacks.

One of the very common problems, is counting the number of set bits in a number.

int count=0

while (n){
    n=n&(n-1)
    count++
}

n&(n-1) will return a number obtained by setting rightmost set bit in number n to zero.

Another problem is to check whether a number is power of 2. For a number which is power of 2, there will be only one set bit in the number. Hence if we do n=n&(n-1), we will obtain zero. Using a single line operation we can identify power of 2 or not.

Hashing

Hash is an important data structure that can be used to solve different problems. When you are asked to find the number of occurrence of numbers in a given list of numbers, you can simply use hash for solving the problem. Iterate through the list of numbers, like:

for (n in numbers)
{
    hash[n] = 0
}

for (n in numbers)
{
    hash[n] = hash[n] + 1
}

We can solve many problems in O(n) using hash.
Implementing a hashtable in C is not easy at a first attempt. Try to code yourself a hashtable in C using pointer to pointer.

Binary Tree and Traversals

Binary trees are common interview questions. There are lot of BT based questions. Have understanding of common questions like the following.

* Difference between full binary tree and complete binary tree

* Find out Maximum/Minimum height of a tree (Recursive and Non-Recursive)

* What is the maximum number of elements in a tree with height H.

* Nth smallest/largest element in a binary tree

* Algorithm to find out Least Common Ancestor (LCA)

For your information, Least Common Ancestor is the common node in a binary tree which is obtained by traversing from two selected leaf nodes to the root element.

Linked list problems

- Reversing linked list

Linked lists are also very common interviewer question. First practice to be done for linked list problem is to write a linked list structure in C yourself and implement linked list traversal. Then add functions to reverse the linked list in place as well as by creating new linked list. If you do not want a new linked list, but you only need to print the elements of linked list in reverse order, use a recursive function that can do recursive calls till the end of linked list and print the elements.
Eg.

void reverse(struct linked_list *list)
{
   if (list->next!=NULL)
       reverse(list->next);

   printf("%s\n", list->element);
}

- Cycle in a linked list

Test for cycle/loop in a linked list is a commonly asked problem. You can initialize two variables as start node for linked list and traverse in a while loop such that while loop ends when one of them becomes null or both variables becomes equal. In the while loop, we traverse two variables with different speed.
(varA=varA->next, varB=varB->next->next)

Have a look at well explained tutorial, ?http://ostermiller.org/find_loop_singly_linked_list.html

Tree traversals

It is very important to understand all the tree traversals and implementation.

1. Preorder traversal

2. Post order traversal

3. Inorder traversal

Traversals can be easily implemented using recursion. But interviewers might ask about non-recursive algorithm. In that case, use stack based algorithm to explain inorder traversal. You can easily implement inorder traversal using stack.

Graph Traversals

Graph traversals are commonly asked in interviews. Have the understanding of Shortest path algorithms.

Depth First Search

In depth first search initially traversal goes deep into deepest node and traversal proceeds. You can use a stack to implement depth first search or else ?you can use recursion to implement this.

Breadth First Search

In breadthwise traversal, you can use it to print the tree in the sorted order. You can use the same algorithm used for depth first search by changing stack into queue to obtain the algorithm for BFS.

Dynamic programming
Dynamic programming is an important algorithm technique to solve a large problem by splitting into smaller overlapping problems. When overlapping small problems are solved, the larger problem solution is obtained. Problems like finding shortest path can be solved using dynamic programming. It usually involves using a storage of subsolutions so that they are used in solving bigger problems which overaps the subsolutions. The dynamic programming is difficult to identify as well as apply to solve problem scenarios. It requires considerable spending of time to learn and master it. When you look into some problems and look at its solutions, you may feel it is not that hard. But when you are given a different problem you may not be even able to identify it can be solved using dynamic programming. Even if you identify, you will find hard to code the problem solution. Hence, give considerable time to work on this one.

Try to learn the problem to find subsets of a set using dynamic programming

Trie data structure
Trie is an interesting data structure that can be used to implement autocomplete feature. You can read more about trie from my older blog post. (Implementing autocomplete with trie data structure)

Conceptual Questions

Lot of conceptual questions are being asked during interviews. It will test your basic knowledge and understanding. Find some of the commonly asked topics

* CPU Scheduling algorithms

* Layers of TCP and OSI network stack

* Understand how Virtual Memory/Paging works

* Understand what happens when you enter a URL on web browser and how website is loaded

* Understand how a computer boots and explain the story

* What is the difference between 32 bit and 64 bit machine and OS

* Understanding TCP/UDP protocol

* Understanding ARP/RARP

* Understand DHCP

* Understand DNS (Recursive, Iterative resolution)

* Understand how email works (POP, SMTP)

* Understand Web 2.0, REST, Thrift, RPC

* Understand IPV4 vs IPV6


Books/References


1. Programming Pearls
Programming pearls is a great book you should read as a computer enthusiast. You will be inspired to learn about data structures and algorithms.

2. Cracking the Code interview
It is a nice book consisting of lots of interesting questions

3. Glassdoor.com
Glassdoor is a great website consisting of lots of questions being asked for different companies. As a first programming exercise, write a perl/python/bash script to parse questions into a text file. I had a python script that I had written long time ago. (Lost that somewhere)


Choosing your first job


Every job interview is a great experience. In my life, i had attended three job inteviews and ended up in receiving 3 offers. Each of the interviews were different experiences. Once you face interviews build positive approach in finding feedback yourself. When you receive multiple offers, put enough effort to understand about what you are going to do with each of the job offers your receive. Choose the job you love to do, so that you never have to work a day in life. Thanks and all the wishes.

You can find few posts about interviews from this blog here, http://www.sarathlakshman.com/category/interview/
I dedicate this blog post to all my juniors in Computer Science Dept, Model Engineering College, Cochin

Image credit: http://www.flickr.com/photos/stevefrog8/

by Sarath at November 28, 2011 07:16 PM

Lucene Index Writer API changes from 2.x to 3.x

Jaggu's world

The 3.x version of Lucene introduces lots of changes in its API. In 2.x we used IndexWriter API like this:
       

         Directory dir = FSDirectory.open(new File(indexDir));
        writer = new IndexWriter(dir,new StandardAnalyzer(Version.LUCENE_30),true,IndexWriter.MaxFieldLength.UNLIMITED);


I used the same code with 3.x version for one of my project. The tool was working fine. But my IDE(eclipse) told that some of the things are deprecated hmm...... I decided to dig the new API and I found that the above given code has to be changed to this :

        Directory indexDir =  FSDirectory.open(new File(strDirName));
        IndexWriterConfig confIndexWriter = new IndexWriterConfig(Version.LUCENE_CURRENT, analyzer);
        writer = new IndexWriter(indexDir, confIndexWriter);


If you would like to use the "IndexWriter.MaxFieldLength.UNLIMITED" the IndexWriterConfig should be like:
        IndexWriterConfig idxconfa = new IndexWriterConfig(Version.LUCENE_30, new LimitTokenCountAnalyzer(new StandardAnalyzer(Version.LUCENE_30), 1000000000));

The int '1000000000' is set as maximum limit here. max(int) is the maximum you can set in IndexWriterConfig.

by jaganadhg at November 28, 2011 07:46 AM

November 23, 2011

Taming Text : Review

Jaggu's world

    We are living in the era of Information Revolution. Everyday wast amount of information is being created and disseminated over World Wide Web(WWW). Even though each piece of information published in the web is useful in some way; we may require to identify and extract relevant/useful information.Such kind of information extraction includes identifying Person Names, Organization Names etc.. ,finding category of a text, identifying sentiment of a tweet etc ... Processing large amount text data from web is a challenging task, because there is an information overflow. As more information appears there is a demand for smart and intelligent processing and text data. The very field of text analytics has been attracted attention of developers around the glob. Many practical as well as theoretical books has been published on the topic.

This book, "
Taming Text", written by Grant S. Ingersoll, Thomas S. Morton and Andrew L. Farris is an excellent source for Text Analytics Developers and Researchers who is interested to learn Text Analytics. The book focuses on practical Text Analytics techniques like Classification,Clustering, String Matching, Searching and Entity Identification. The book provides easy-to follow examples in using well-known Open Source Text Analytics tools like Apache Mahout, Apache Lucece, Apache Solr, OpenNLP etc.. The entire book is based on the author's experience in contributing to relevant Open Source tools, hands on experience and their industry exposure. It is a must-read for Text Analytics developers and Researchers. Given the increasing importance of Text Analytics this book can be served as a hand book for budding Text Analytics Developers and Industry People. Definitely it can be used in Natural Language Processing, Machine Learning and Computational Linguistics courses.

Chapter 1: Getting Started Taming Text
The first chapter of the book introduces what is Taming Text? The authors gives list of challenges in text processing with brief explanations. The chapter is mostly an introductory stuff.

Chapter 2: Foundations of Taming Text
This chapter gives a quick warm up of your high school English grammar. Starting from words, the authors presents essential linguistic concepts required for text processing.  I think "Taming Text" will be the first technical book which gives a good warm up on basics of Language and grammar. The chapter gives a detailed introduction to words, parts of speech, phrases and morphology. This introduction is sufficient enough to capture the essential linguistic aspects of Text Processing for a developer. The second part of this chapter deals with basic text processing tasks like, tokenization, sentence splitting, Part of Speech Tagging (POS Tagging) and Parsing. Code snippets for each of the task has been given in the chapter. All the code examples are narrated with the tool
OpenNLP . The chapter gives some basic of handling different file formats using Apache Tika. This chapter gives a step by step intro to the preliminaries of Text Processing.

Chapter 3: Searching
This chapter introduces the art of Search. It gives a brief but narrative description of the Search mechanism and scene behind the curtains. The chapter discusses the basics of Search with the help of
Apache Solr. There is an interesting discussion on search evaluation and search performance enhancements and page rank too. The chapter gives a detailed list of Open Source search engines. But I think the authors forgot to add the "Elasticsearch" library  to the list. I hope that it may be added in the final print version of the book.

Chapter 4: Fuzzy String Matching
Everybody might have wondered how the "Did you mean:" feature in Google or any other search engine works. Long ago I saw a question in Stackoverflow; querying about the availability of source code for  "Did you mean:" feature !!! (something similar I think). If you wonder how this feature is working this chapter will give you enough knowledge to implement something similar. There is a simple discussion on different fuzzy string matching algorithms with code samples. There is practical examples on how to implement the "Did you Mean" and type ahead (auto suggest) utility on Apache Solr. Over all this chapter gives a solid introduction and hands on experience on Fuzzy String Matching.

Chapter 5: Identifying People, Places and Things
Diving deeper into text processing ocean, the authors narrates many deeper concepts in Text Processing starting from this chapter. The main focus of this chapter is Named Entity Identification (NER), one of the trivial tasks in Information Extraction and Retrieval. The chapter gives a good introduction to the task on Named Entity Identification along with code samples using OpenNLP. The code samples will help you to make your hands dirty. There is a section which deals with how to train OpenNLP to adopt a new domain. This will be one of the most useful tip for working professionals. The only thing which I feels to be missing is a mention about
GATE and Apache UIMA. Both of the tools are famous for their capability to accomplish the NER task.

Chapter 6: Clustering Text
The sixth chapter mainly deals with Clustering. Clustering is an unsupervised (i.e. no human intervention required) task that can automatically put related content into buckets.[Taken from the book "Taming Text"]. The initial part of this chapter narrates clustering with reference to real world applications. A decent discussion on clustering techniques and clustering evaluation is also there. Code examples for clustering is given in this chapter.
Apache Solr, Apache Mahout and Carrot are used to give practical examples for clustering.

Chapter 7: Classification, Categorization and Tagging
Seventh chapter deals with document classification. As like in the other chapters there is a reasonable discussion on document classification techniques. This chapter will teach you how to perform document classification with Apache Lucene, Apache Solr, Apache Mahout and OepnNLP. There is interesting project called 'tag recommender' in this chapter. The only hiccup which I faced with this chapter is the "TT_HOME" environment variable which used through out the book. I think the authors forgot to mention how to set TT_HOME. I was familiar with Apache Mahout so ther was no issue with MAHOUT_HOME environment variable. A totally newbie will find it difficult to spot the TT_HOME and MAHOUT_HOME used in the code samples. A little bit light on setting these variables may help reader a lot. I think this will be included in the final copy(I am reading a MEAP version).

Chapter 8: An Example Application: Question Answering

This chapter gives a hands on experience in Taming Text. The entire chapter is dedicated for building a Question Answering project using the techniques discussed in all the chapters. A simple make your hands dirty by Taming Text chapter. Here also you will be caught with the TT_HOME ghost.

Chapter 9: Untamed Text: Exploring the Next Frontier

The last chapter "Untamed Text: Exploring the Next Frontier" mentions other ares in Text processing such as Semantics Pragmatics and Sentiment Analysis etc.. Brief narration on each of these field are included in this chapter. There are a lots of pointers to some useful tools for advanced Text processing tasks like Text Summarisation and Relation Extraction etc ..

Conclusion
Grant S. Ingersoll, Thomas S. Morton and Andrew L. Farris have done a nice job by authoring this book with lucid explanations and practical examples for different Text Processing Challenges. With the help of simple and narrative examples the authors demonstrates how to solve real world text processing challenges using Free and Open Source Tools. The algorithm discussions in the book is so simple; even a newbie can follow the concepts without much hiccups. It is a good desktop reference for people who would like to start with Text Processing. It provides comprehensive and hands-on experience in Text Processing. So grab a copy soon and be ready for Big Data Analysis.

Free and Open Source Tools Discussed in the Book
Apache Solr
Apache Lucene
Apache Mahout
Apache OpenNLP
Carrot2.

Disclaimer : I received a review copy of the book from Manning

by jaganadhg at November 23, 2011 11:57 AM

November 18, 2011

Starting MySQL Server in Fedora 16

My Experiences with Free Software

The selinux-policy package in Fedora 16 had a bug which prevents MySQL server from starting when SELinux is in enforcing mode. Fedora has released an update for selinux-policy which can be updated from updates-testing repository.

To install thisupdate run the following command:
yum update selinux-policy --enablerepo=updates-testing

The relevant error messages in /var/log/message:
Nov 17 18:44:12 es016 kernel: [  172.476165] type=1400 audit(1321535652.092:14): avc:  denied  { read } for  pid=1907 comm="mysqld_safe" path="/bin/bash" dev=dm-1 ino=396459 scontext=system_u:system_r:mysqld_safe_t:s0 tcontext=system_u:object_r:shell_exec_t:s0 tclass=file
Nov 17 18:44:12 es016 systemd[1]: mysqld.service: control process exited, code=exited status=127
Nov 17 18:44:12 es016 systemd[1]: mysqld.service holdoff time over, scheduling restart.
Nov 17 18:44:12 es016 systemd[1]: Job pending for unit, delaying automatic restart.
Nov 17 18:44:12 es016 systemd[1]: Unit mysqld.service entered failed state.

More details:
Bug Report: RHBZ #754072
Package update: https://admin.fedoraproject.org/updates/selinux-policy-3.10.0-56.fc16


by മണിലാല്‍ കെ എം : Manilal K M (noreply@blogger.com) at November 18, 2011 11:36 AM

ओकुपै वालस्ट्रीट आन्दोलन में हमारी भूमिका क्या है?

Praveen Arimbrathodiyil blogs here

अमेरिका में न्यूयोर्क शहर में दो महीनों से चलने वाली ओकुपै वालस्ट्रीट आन्दोलन के बारे में सब सुना ही होगा। अब वह न्यूयोर्क के बाहर अमेरिकी शहरों में ही नही पूरी दुनिया में फैली है। अमेरिकी समाज में आज हम को बहुत खैर बराबरी दिखाइ देगा, बहुत सारे लोगोंको अपना घर और नैकरी आज नहीं है, बहुत युवा लोग अपनी शिक्षा के लिए जो खर्चा लिया वो वापस कर नहि पा रहा है, उनको अच्छी नैकरी की प्रतीक्षा भी नहीं है। यह सभी लोग यह अन्याय व्यवस्था खतम करके एक न्याय समाज लाने के लिए आज रस्ते पर आयें है। यह लोग आज पूरे दुनिया के लिए – हम सब के लिए लड रहें है। जो लोग आज एक न्याय समाज और सच्ची लोकशाही का सपना देखते है, उन सबको आज इसमें शामिल होना है और उनकी आवाजको हमारे समाज में पहूँचाना जरूरि है, क्योंकि ये हमारी ही लडाई है। हम भी इधर एक नया समाज बनाने की कोशिश शुरू करेंगे। हम यह लडाई जीत सकेंगे की नहीं ये मुझे पता नही, एक बात तो पक्कि है, हम कोशिश ही नहिं करेंगें तो बदलाव नहीं होने वाला है। कम से कम ये मुद्धे हम सबकी बातचीत और सोच में ला सकते है। जब और लोगोने इसपर सोचना शुरू किया तो शायद कुछ जवाब मिल सकता है। पूरे दुनिया में आज बदलाव के लिए लोग अपने घर और ओफीस के बाहर आकर रस्ते पर आ चुका है, और सबके मन में बदलाव की आशा मजबूत है, आज हमारे सामने यह एक ऐतिहासिक मोका है, हमको इसका पूरा फायदा उठाना है। आप भी हमारे साथ इसमें जुडें।

अधिक जानकारि के लिए http://piratepad.net/18octpune देखे।

PS: Thanks to Sandeep for spelling and grammar help!

by Praveen A at November 18, 2011 04:32 AM

November 17, 2011

How are devices reverse engineered

JEFFREY's Log

This post contains mail written by me to the famous hacker Héctor Martín. The mail was regarding the basic steps in reverse engineering devices.

– MAIL BEGIN –
> 1) After opening a device, how do you understand which chip is the CPU ?

This is usually fairly obvious from the layout and the connectivity on the board. It really depends on the device, but it’s usually one of the larger chips, and may be connected to Flash memory, and/or to a quartz crystal. On larger devices it will have its own power supply, while on smaller ones the only telltale might be that it’s connected to most parts of the board. And of course, often you can just look up the part numbers and figure out what most chips are.

> 2) How are the firmwares extracted from the devices ? Is there a general principle ?

This depends heavily on the device. It can be as easy as connecting to a debug serial port and getting a text-based console into a bootloader that lets you dump the flash. Or it can be as hard as requiring a clock/power glitching setup in order to dump an internal mask ROM buried inside the CPU. Usually if the flash is external, you can remove it and dump it externally, or there might be a JTAG port through which you can read/write it. Microcontrollers with embedded flash usually have programming ports but the code is usually protected from readout; these are nearly impossible to dump unless you know of a specific vulnerability in the particular chip’s protection.

> 3) After getting a firmware dump how do you read it ?

If you know the CPU architecture in use, you run it through a disassembler and see if it makes sense. If you don’t know the architecture, you can try some educated guesses. After a while you learn to recognize some popular CPU architectures from a simple hex dump (e.g. ARM code sticks out like a sore thumb due to the condition code field, which means that every 32-bit word almost always starts with ‘E’). You can just use GNU binutils (objdump) to disassemble code (usually), but the IDA disassembler by Hex-Rays is quite popular in the reverse engineering community (albeit quite pricey). Sometimes the CPU architecture is unknown. I know some crazy people who can eventually make sense of an unknown binary and figure out what the opcodes mean, but I’m not one of them.

And sometimes if the firmware has very high entropy (it looks like “garbage” – no patterns, you learn to recognize this too) it usually means it’s either encrypted or compressed, so you might look to see whether you can find an offset after which there’s valid compressed data using a popular algorithm (zlib, LZMA, etc…). If it’s encrypted sometimes there are blockwise patterns (e.g. duplicated 16byte or 8byte blocks) that often mean it’s encrypted using a block cipher in ECB mode.

– MAIL END –

by Jeffrey at November 17, 2011 09:06 PM

November 16, 2011

Python script for automatic synchronisation of ‘Read it later’ list and webpage

Syntax

Adding to 'Read it later' list

One of the powerful features of firefox is that it has thousands of useful addons. We are going to deal with such an addon – Read it later. It allows us to book mark page to read later with just a click. I was happy living with it.

But on one fine day, Hrishiettan told me about sharing the links we read and its advantages. Sharing links will help many people to find interesting articles easily and it will also act as a link-index in case if we want to refer it again. The idea is really good and he told he would start working on a php app.

On another day, I told about this to Raghesh sir. He told there’s an option to export our list to html in ‘Read it later’. That’s it! They have an API too! Got the API key from their website, cleared all existing links as they contain irrelevant news links, and wrote following script. It now updates the links in http://ershadk.com/links/ every 5 minutes automatically from my ‘Read it later’ list.  Thank you :)

ps: The standard way of xml parsing didn’t work, that’s why I wrote it rude :)

 

by ershad at November 16, 2011 02:58 PM

November 13, 2011

A python script to generate SQL queries for importing links/blogroll in another wordpress blog

Syntax

Here’s the problem: There are 30 precious links in my old blog under blogroll. Exporting feature of wordpress does not export the contents in blogroll/links. The task is to import those links in this new blog with minimum effort.

Well, Adding 30 links manually ain’t difficult – it may take a maximum of 15 minutes to complete the task. But it’s too repetitive and boring. The best way is obviously writing a script.

Here’s a small python script that generates SQL queries to insert old blogroll items in new database. It will ask for old blog URL and new database name – that’s it, it will search your old blog for blogroll links and print INSERT statements in stdout suitable for executing in phpmyadmin or directly in mysql shell :)

Hope you like it, Thank you :)

by ershad at November 13, 2011 07:47 AM

November 12, 2011

New home!

Syntax

It was one of my dreams to have an own domain. With god’s grace, It’s cherished now.

Thank a lot to Manuettan and his firm Coolwrks for kindly hosting this website. If he hadn’t provided me free hosting, I wouldn’t have even registered this domain :)

Please update your feed /email subscriptions from old blog to this one. Thank you :)

by ershad at November 12, 2011 12:18 PM

November 11, 2011

GNOME 3 - A Quick Review

My Experiences with Free Software

I have been experimenting with the latest and greatest version of GNOME desktop for the last 4 days. I was allured by the Simply Beautiful tag line of GNOME 3, and it was not completely wrong. The new desktop is really clean, simple and elegant. But there are some usability issues which made me crazy while using the new desktop. I did an upgrade to the beta release of Fedora 15 to test GNOME 3.


I don’t want to re-iterate all the fancy features of GNOME 3 which have been discussed else where. This scribbling is basically about the issues I faced while using the desktop and I'm not sure whether it qualifies as a review. May be the issues I faced are side-effects of a better desktop architecture and it’s due to my ignorance or unfamiliarity with GNOME 3.


The notable change in the new desktop is the absence of the bottom panel, which saved some space for the opened windows, but it costs several clicks to re-open a window. In GNOME 2, I need only a single click to re-open a window from the bottom panel, but in 3 I have to click on the Activities, and then click on the Favourites icon to get the previously opened window. If you have multiple windows opened, then you have to do another click to open the window other than the last one.


I was really frustrated, whenever I need a fresh Terminal. I was able to open a new terminal only by right clicking on the Favourites icon, if there is already an open terminal.


The Activities-->Applications has a section called Other. I thought that it may be some less important applications/utilities for the desktop. But, later I discovered that it had some really important utilities such as Firewall, Network, Input Method, Date & Time, Printing, etc... I’m not sure why these are aggregated under Other.


GNOME 3 doesn’t have a easy Shut down button to power off the machine. However, if I click on the username on the top-right corner and then hold the ALT key, I can see the Power off menu item.


I cannot change the format of date & time displayed on the top panel. The main issue is that if I have to check today’s date, then I have to click and open the calendar every time. The panel displays only the weekday and hours. I still can’t figure out how the date can be displayed.


A really great application I missed in GNOME 3 is the Hamster Time tracking applet. I know that it’s not a GNOME issue, but I have to return to gnote for tracking time at work.


There are no Minimize and Maximise button for the windows, but it’s not a big issue since I rarely used them. I always preferred double-clicking on top of the window to maximise/minimise them.

The keyboard shortcut to move files to trash have changed in Nautilus. I have to press control+delete(Same as copy, paste, etc..) to move files to trash. This is useful, since it avoids accidental removal files to trash. But it's an important usability change and users should get used to it.


I’m still exploring the new features and I wish to update the list as I progress. Since I’m using the bleeding edge of Fedora, things may change in the GA release.

Update - 6/6/2011

Solved the date issue on panel by running the following command:
$ gsettings org.gnome.shell.clock show-date true

You can also install gnome-tweak-tool(available in YUM repository) to change the advanced settings in GNOME 3.

by മണിലാല്‍ കെ എം : Manilal K M (noreply@blogger.com) at November 11, 2011 01:28 PM

November 10, 2011

സിരി - ഇന്റര്‍നെറ്റ് തിരയലിന്റെ ശബ്‌ദ വസന്തം

ബ്ലോഗ് ഭൂമി - e lekhanangal

ആപ്പിള്‍ 4എസ് മൊബീല്‍ ഫോണിലെ ഒരു പേഴ്‌സണല്‍ അസിസ്റ്റന്റ് ആപ്ലിക്കേഷന്‍ മാത്രമായി സിരീ എന്ന ശബ്‌ദ തിരയല്‍ സംവിധാനത്തെ കാണുന്നത് ശരിയാകില്ല. നിര്‍മ്മിത ബുദ്ധി (ആര്‍ട്ടിഫിഷ്യല്‍ ഇന്റലിജന്‍സ്) യുടെ സമര്‍ത്ഥമായ പ്രയോഗമാണ് ഈ സ്വഭാവിക ഭാഷാ വിശകലന ഉപാധി. ഈ ആപ്ലിക്കേഷന്‍ സജീവമാക്കിയ ശേഷം ആവശ്യമുള്ള വിവരം ഫോണിനോട് ചോദിക്കുക. ഉടന്‍ തന്നെ ഉത്തരം ലഭിക്കും. സാങ്കേതികതയുടെ ബാലാരിഷ്ടതകള്‍ ഒഴിവാക്കിയാല്‍ സീരി അടുത്ത ടെക് വിപ്ലവം എന്ന് തന്നെ പറഞ്ഞാലും തെറ്റില്ല. കാരണം ഫോണിനോ സമാന ഉപകരണങ്ങള്‍ക്കോ അതിന്റെ സന്തത സഹചാരിയായ ബഹുവര്‍ണ സ്‌ക്രീന്‍ തന്നെ ആവശ്യമില്ലാത്ത തരത്തിലാണ് കാര്യങ്ങള്‍ പുരോഗമിക്കുന്നത്. സമീപ ഭാവിയില്‍ ഒരാളെ വിളിക്കണമെങ്കില്‍ ഫോണ്‍ എടുത്ത് വിളിക്കണം എന്ന് പറയുക. തിരികെ ആരെ വിളിക്കണം എന്ന് ഫോണ്‍ ചോദിക്കും. പേര് പറയുക. ഒന്നിലേറേ പേര് ഫോണ്‍ ബുക്കില്‍ ഉണ്ടെങ്കില്‍ അതില്‍ എത് വേണമെന്ന് ഫോണ്‍ വീണ്ടും ചോദിക്കും അതനുസരിച്ച് വിളിച്ച് തരും. ഇനി അങ്ങേപ്പുറത്തെ ആള്‍ തിരക്കിലോ അല്ലെങ്കില്‍ ഫോണ്‍ ഓഫ് ചെയ്‌തിരിക്കുന്ന അവസ്ഥയിലോ ആണെങ്കില്‍ ചിലപ്പോള്‍ സീരി ഇങ്ങനെ മറുപടി പറയാം. അദ്ദേഹത്തിനെ ഈ നമ്പറില്‍ കിട്ടുന്നില്ല വീട്ടിലെയോ അല്ലെങ്കില്‍ ഓഫീസിലെയോ നമ്പറില്‍ ശ്രമിക്കണോ. അതുമല്ലെങ്കില്‍ കുറച്ച് കഴിഞ്ഞ് വിളിക്കാം. എസ് എം എസ് വേണമെങ്കിലും അയക്കാം വേണ്ടത് പറഞ്ഞ് കൊള്ളൂ. അല്‍‌പം കഴിഞ്ഞ് വിളിക്കാം എന്നാണ് മറുപടി എങ്കില്‍ ഉടനെ വരും അടുത്ത ഉപദേശം എത്ര സമയം കഴിഞ്ഞ് വിളിക്കണം സമയം പറഞ്ഞോളൂ !


കഴിഞ്ഞ വര്‍ഷം ഏപ്രിലിലാണ് സീരിയെ ആപ്പിള്‍ സ്വന്തമാക്കുന്നത്. ഉത്പന്നം എന്ന നിലയില്‍ അവതരിപ്പിക്കുന്നത് കഴിഞ്ഞ മാസം അവതരിപ്പിച്ച എറ്റവും പുതിയ ഐ ഫോണിലും. നാല് വര്‍ഷം മുന്‍‌പ് ഒരു ചെറു സംരംഭമായി വികസിപ്പിച്ച് തുടങ്ങിയതാണ് സിരീ. അമേരിക്കന്‍ പ്രതിരോധ സ്ഥാപനമായ ദര്‍പ (ഡിഫന്‍സ് അഡ്വവാന്‍സ്‌ഡ് റിസര്‍ച്ച് പ്രോജക്‍ട്) യുടെ സഹകരണവും ആവോളം ഉണ്ടായിരുന്നു. SRI International ആണ് ഈ പദ്ധതിയുടെ ഇടനാഴിയായി പ്രവര്‍ത്തിച്ചത്, ഏതാനും സര്‍വകലാശാലകളുടെ അക്കാദമിക-സാങ്കേതിക സഹായവും പിന്നിലുണ്ടായിരുന്നു. ആന്‍‌ഡ്രോയ്ഡ്, ബ്ലാക്ക്‍ബെറി തുടങ്ങിയ സ്‌മാര്‍ട്ട് ഫോണുകളിലും ശബ്ദത്തിരയല്‍ ആയി ഇത് വരുമെന്ന് അനുമാനിച്ചവര്‍ ഏറെയായിരുന്നു. എന്നാല്‍ ആപ്പിള്‍ ഇത് എറ്റെടുത്തതോടെ ഇനി ഐ ഫോണിലൂടെയാകും മുഖ്യമായും സീരി ശബ്‌ദമുണ്ടാക്കി നീങ്ങുന്നത്. നമ്മുടെ ശബ്‌ദാന്വേഷണത്തിന് വിവരം ലഭിക്കുന്നതിനായി ഇന്റര്‍നെറ്റിലെ ആശ്രയിക്കാനാകുന്ന ഇടങ്ങള്‍ക്കൊപ്പം ഫോണിലെ റിമൈന്‍ഡര്‍ , ഫോണ്‍ ബുക്ക്, എസ് എം എസ് പെട്ടി, നോട്ട്സ് ,കലണ്ടര്‍ , സമയവിവരം, ഭൂപട സൌകര്യം എന്നിവയും ഉപയോഗിക്കും. ഓഹരി വിപണി വാര്‍ത്ത കാലാവസ്ഥാ വിവരം എന്നിവയും അവിഭാജ്യ ഘടകമാണ്. മഴവരുന്നോ, ഓഹരി വിപണി ഉയര്‍ന്നോ എന്ന് വിളിച്ച് തന്നെ ചോദിക്കാം ഉടനെ ഫോണ്‍ മറുപടിയും പറയും. നമ്മള്‍ നില്‍ക്കുന്നയിടം ഫോണിന് അറിയാവുന്നതിനാല്‍ അവിടെ മഴപെയ്യുമോ ഇല്ലയോ എന്നാകും മിക്കവാറും ആദ്യം മറുപടി പറയുക എന്ന് ഊഹിക്കുന്നതില്‍ തെറ്റില്ലല്ലോ. ഒപ്പം തന്നെ മറ്റ് സ്ഥലങ്ങളുടെ കാലാവസ്ഥാ വിവരം ആണ് വേണ്ടതെങ്കില്‍ സ്ഥലനാമം പറഞ്ഞു കൊള്ളൂ എന്ന് ഉപദേശിച്ചാലോ!

നിലവില്‍ തന്നെ മൊബീല്‍ ഫോണുകള്‍ മൂകരും ബധിരരുമായവര്‍ക്ക് അനുഗ്രഹമാണ്. എസ് എം എസ് വഴിയും മൊബീല്‍ ഫോണ്‍ സ്‌ക്രീനിലെ മറ്റ് ഇന്ദ്രജാലങ്ങള്‍ വഴിയും അവര്‍ എത്ര സ്വാതന്ത്ര്യത്തോടെയാണ് നമ്മളുമായി ആശയവിനിമയം ചെയ്യുന്നത്. ഇക്കഴിഞ്ഞ പതിനഞ്ചുവര്‍ഷം കൊണ്ട് മൊബീല്‍ ഫോണ്‍ വ്യാപകമായപ്പോഴും അന്ധരായ ചങ്ങാതിമാര്‍ക്ക് അത്ര ചങ്ങാത്തം കൂടാന്‍ പറ്റിയ ഉപകരണമായിരുന്നില്ല ഫോണുകള്‍ .ചില മോഡലുകളില്‍ വോയ്സ് റെക്കഗ്നിഷന്‍ സംവിധാനം ഉണ്ടെങ്കിലും അത് ഫോണിന്റെ പൂര്‍ണ ഉപയോഗം സാധ്യമാക്കിയിരുന്നില്ല. എന്നാല്‍ സീരിയും ഇതിനെ പ്രതിരോധിക്കാന്‍ ആന്‍‌ഡ്രോയ്‌ഡും ബ്ലാക്ക്ബെറിയും അടങ്ങുന്ന എതിരാളികള്‍ ഇറക്കാന്‍ ഇടയുള്ള സംവിധാനങ്ങളും കൂടി എത്തുന്നതോടെ കണ്ണുകാണാത്തത് ഒരു തടസമായി കുറഞ്ഞ പക്ഷം ഫോണുപയോഗിക്കുന്നതില്‍ അവര്‍ക്ക് അനുഭവപ്പെടില്ല. ഇതുവരെ അന്യമായിരുന്ന എസ് എം എസ് അവര്‍ക്ക് ഇനി ഇണങ്ങും. ആളിന്റെ പേര് പറയുക അയക്കാനുള്ള സന്ദേശം നിര്‍ദ്ദേശാനുസരണം നല്‍കുക. പൂര്‍ത്തിയായ ശേഷം ഫോണ്‍ തന്നെ ടൈപ്പ് ചെയ്യിപ്പിച്ചത് വായിച്ച് കേള്‍പ്പിക്കും അയക്കട്ടെ എന്ന അവസാന ചോദ്യത്തിന് യെസ് പറയുന്നതോടെ സന്ദേശം ഫോണ്‍ കടന്ന് അടുത്ത ഫോണിലേക്കോ കമ്പ്യൂട്ടറിലേക്കോ പറക്കും.

ഫോണിലെ വിവരവിശകലന ശേഷിയുള്ള അത്യാധുനിക ചിപ്പ്, പ്രത്യേക ആപ്പ്(ളിക്കേഷന്‍), ഇന്റര്‍നെറ്റ് ബന്ധം, ഇതിനായി ആ‍ശ്രയിക്കാവുന്ന വിവരയിടങ്ങള്‍ എന്നിവയുടെ ചേരുവയാണ് ശബ്‌ദതിരയല്‍ നടത്തുന്നത്. നിര്‍മ്മിത ബുദ്ധി അടിസ്ഥാനമാക്കി പ്രവര്‍ത്തിക്കുന്നതിനാല്‍ വരും കാലത്ത് അതിശയിപ്പിക്കുന്ന മാറ്റങ്ങള്‍ ഈ സംവിധാനത്തില്‍ ഉണ്ടാകും. നിലവില്‍ പരിമിതികള്‍ ഏറെയുണ്ട്. കൂടുതലും അമേരിക്ക അടിസ്ഥാനമാക്കിയുള്ള വിവരങ്ങളാണ് ചികഞ്ഞെടുത്ത് പറയുന്നത്. ആംഗലേയവും സഹായവാണികളുമാണ് ഇപ്പോള്‍ അനുസരിക്കുന്നത്. എന്നാല്‍ എല്ലാ കണ്ടുപിടുത്തങ്ങളെയും പോലെ ഇതും ചിറക് വിരിച്ച് പറക്കാന്‍ തുടങ്ങും എന്നതില്‍ സംശയമില്ല. 1903 ല്‍ റൈറ്റ് സഹോദരന്മാര്‍ വിമാനം കണ്ടുപിടിച്ചത് നാം ഇന്ന് കാണുന്ന രൂപത്തിലും ഭാവത്തിലും അല്ലല്ലോ. ഒരു പക്ഷെ അവരുടെ ഭാവനയ്‌ക്കും അപ്പുറത്താണ് ഇന്ന് വിമാനങ്ങളുടെ ഭൂഖണ്ഡാന്തര സഞ്ചാരം. അതുപോലെ ഈ ശബ്‌ദത്തിരയല്‍ വസന്തം ഇന്റര്‍നെറ്റിനെയും മൊബീല്‍ ഫോണിനെയും സമാനതകളില്ലാത്ത പുതിയ വഴികളിലൂടെ നടത്തും. ഒരു പക്ഷെ ഭാവി സ്‌മാര്‍ട്ട് ഫോണുകള്‍ക്ക് സ്‌ക്രീന്‍ ഇല്ലാത്ത മോഡലുകളും ഉണ്ടാകും. ഒരു പേനയുടെ അടപ്പ് പോലെ കീശയില്‍ കുത്തിക്കൊണ്ട് നടക്കാനായേക്കാം.


ബിറ്റ്സ് ആന്‍ഡ് ബൈറ്റ്സ് : കല്‍‌പിത കഥ പോലെ ഒരു കാര്യം പറയാം. പുലര്‍കാലെ 4.30 നുള്ള ഒരു തീവണ്ടിയില്‍ കയറിപറ്റാനായി 4.00 മണിക്ക് അലാറം വച്ച് കിടന്നുറങ്ങുന്നു. രാവേറെ വൈകി കിടന്നതിന്റെ ക്ഷീണവുമുണ്ട് അതേ സമയം യാത്ര ഒഴിവാക്കാനും വയ്യാത്തത് കൊണ്ട് മാത്രമാണ് അലാറം വച്ചത്. പക്ഷെ ഫോണ്‍ അലാറം ശബ്‌ദിച്ചത് കൃത്യം 7 മണിക്ക് എന്നിട്ടും തീവണ്ടി കിട്ടാതെയുമിരുന്നില്ല യാത്ര മുടങ്ങിയതുമില്ലത്രേ! എങ്ങനെയെന്നോ വണ്ടി മൂന്ന് മണിക്കൂര്‍ വൈകിയോടുന്നു എന്ന വിവരം തീവണ്ടിയാപ്പീസിലെ സമയവിവര പട്ടികയില്‍ നിന്നോ റേഡിയോ അറിയിപ്പില്‍ നിന്നോ മൊബില്‍ ഫോണ്‍ സ്‌മാര്‍ട്ടായി മനസിലാക്കി. തന്റെ യജമാനന്റെ ദിനക്കുറിപ്പ് നോക്കിയപ്പോള്‍ ഈ സമയത്തിനിടയ്‌ക്ക് വേറേ പരിപാടികള്‍ ഒന്നും കണ്ടതുമില്ല, അതു കൊണ്ട് പാവം കിടന്നുറങ്ങിയതല്ലേ എന്ന് ഫോണ്‍ കണക്കുകൂട്ടി. ആര്‍ട്ടിഫിഷ്യല്‍ ഇന്റലിജന്‍സിന് അല്പസ്വല്‍പ്പം ബുദ്ധിയൊക്കെ ഉണ്ടെന്ന് മനസിലായില്ലേ !

by വി. കെ ആദര്‍ശ് (noreply@blogger.com) at November 10, 2011 10:59 AM

2011_Sep_Mobile

abundance of the heart

After a long gap of almost 7 months, I have compiled the statistical report for the Indian Language wikipedias.

As all of you know recently I joined the India Programs of WMF to support the Indic language wiki projects. In the past I was interacting with various Indic language wikipedians for various community related and technical things (for example, the FAQ booklet translated to various Indic languages, the typing tool integrated to several Indic wikipedias (now rechristened as Narayam extension and now has the official backing of WMF), Wiki India Newsletter, and so on). Now onwards I will be able to spend more time on the Indic language wiki projects.

The data for this report is taken from http://stats.wikimedia.org/. I thank Erik Zachte for providing me the support for the same.

Due to the long processing time, the report at stats.wikimedia.org is getting generated after one month. Hence in this report I have captured the data for 2011 September (also data for 2011 August is given for comparison).

Unlike the previous reports, now onwards I will be analyzing data only for the languages spoken in India. So from this report I have excluded languages of neighboring countries of India like Sinhala, Burmese, and so on (even though personally I am interested to watch the growth of these language wikipedias also since those languages are closely related to one or the other language spoken in India).

Following are the languages of India I have selected for preparing this report. The number of speakers for each language is given against each language.

NOTE: I have used the Indian way way of denoting large numbers, since that make more sense in India. Others please note, Crore is equal to 10 million, and Lakh is 100,000.

Indian languages having wikipedia

In India, Hindi is the language with most number of native language speakers. There are few more languages with huge speaker base. But when it comes to Wikimedia movement of India, speaker base is not making much impact.

The number of speakers for Punjabi (the language spoken in the Punjab state of India) is often misquoted at many places including the WMF stats. Punjabi language has two variants (Eastern Punjabi and Western Punjabi). According to various Indian statistics reports, the Punjbai language (also called Eastern Punjabi according to en Wikipedia) that uses Gurumukhi Script, is spoken by almost 2.9 crore people. The Western Punjabi (a language spoken by close to 6 crore people in Pakistan) has its own wikipedia (http://pnb.wikipedia.org). I assume the issue is similar to that of Hindi and Urdu where languages are closely related but use different scripts due to various reasons. Since my interest is in the Punjabi wikipedia (http://pa.wikipedia.org) that uses Gurumukhi script, I considered the number of speakers for that language.

Also I found that the Bhojpuri wikipedia (http://bh.wikipedia.org/) still uses the wrong language code (bh), the code that represents the Bihari language family. Bihari (ISO-639-1 bh) is a language family and the Bhojpuri language is just one of the languages in this family (Angika, Fiji Hindi and Maithili are few others). Bhojpuri has the language code bho. So we need to do two things in the case of Bhojpuri wikipedia. 1. update the language code to bho, 2. change the language name to Bhojpuri (instead of Bihari) in wikimedia records.

I have included almost all the important parameters (for which there is required and updated data) in this report. From the next report onwards I will be adding few more relevant parameters. The placement of languages in the all the tables of this report is based on the number of speakers.

Article statistics

Hindi with more than 1 lakh (100,000) articles is on the top. Newari wikipedia with 69,826 articles comes second, and Telugu comes third with 48,803.

In the span of 9 months (from 2011 January) Hindi wikipedia has added more than 40,000 articles. But did the community size increased? See the next few parameters for more information.

Odia and Assamese wikipedias made much progress since my last report. Both the article number and community strength are increased for both. The article number in Punjabi wikipedia is going high.

Edits per article

Edits per article shows the number of times a wikipedia article is edited. More edits for an articles means more people contributed to it and neutrality of the article is also high. For active wikipedias it is a rough indicator of quality. Wiki article will have more encyclopedic value when more people see and edit it.

Among active wikipedias Bengali and Malayalam got maximum edits per article. It is expected, since it has a very active community. (To see the community strength refer the next few tables).

For languages like Kashmiri, Pali the edit per article is high because it has very less number of articles and same articles are getting edited (mostly by bots) every time.

Editor and Reader Statistics

Malayalam and Tamil tops the list with almost 85 active editors. But in Malayalam there is a reduction of 14 active editors from the previous month.

As said before, when it comes to Wikimedia movement, the speaker base is not making much impact.

For example, Sanskrit language with just 50,000 speakers is making huge impact in the Wikimedia world. It has 14 active users, a bigger community than many other big Indic languages. I am impressed by the efforts of Sansskrit wiki projects especially with the sister wiki projects (for example wikisource), their way of interacting and implementing the best practices from other Indic language wikipedias, and so on.

In the past few months I have conducted 3 wiki workshops for Sanskrit. I found each time they are maturing with the vision about the future of Sanskrit wiki projects. In the last Sanskrit wiki workshop the main focus was on defining the category tree for Sanskrit wikipedia.

When I published the report last time, Odia and Assamese wikipedias were inactive. Now the situation is changed. Now we have a community to work on it.

The progress made by Odia wiki project (http://or.wikipedia.org/) is note worthy. Kudos to Odia wiki community for all the online and offline initiatives for building the community and to increase the article count. I was actively involved in the community building for Odia wikipedia. I still remember the day (2011 January 15) when I introducted Odia wikipedia and Odia tying tool (developed by Junaid) to Odia speaker to Ashuthosh Kar during Wiki X celebration at Bangalore. Through him very soon we got a wonderful wikipedian Subhashish who is leading the efforts for Odia now. Initially Subhasish and I used to meet at my home and work on the basic things for Odia wiki. I remember us working on Odia wikipedia logo, FAQ booklet, Translate wiki, and so on. Soon we got more members to the team through the few Odia wiki workshops happened at Bangalore. Along with workshops Odia wikipedians translated the FAQ booklet to Odia and took efforts to integrate the Odia tyoing solution developed by Junaid to Odia wikipedia. Later with the support of Dhanada Mishra (the chairman of Human Development Foundation (http://www.hdf.org.in/)) and a young student Odia wikipedian Srikanth Kedia we had conducted a wiki workshop at Bhubaneshwar. Odia wikipedians from Bangalore are doing an excellent job and now many of them are participating in Wikimedia India chapter activities also.

Odia wiki project picked up not because Odia has got huge speaker base, high literacy, access to computers or any thing else; it become active only because it has receieved the volunteers who has passion and vision of developing a wikipedia in their mother language. We need similar volunteers for each Indic langauge.

The case is similar for Assamese also. I was trying to get a good volunteer for Assamese wikipedia for the past 3 years. Initially I tried to get the volunteers from Bangalore since Bangalore has good representation of Assamese community and it is easy for me to reach people. But that didn’t worked out. Then I tried for online outreach, initially through emails. Finally I got connected with Parabhakar who is a professor at NIT in Silchar, Assam. Together we try to do online outreach first through a google group (it didn’t worked out), then through facebook. A facebook page is created for Assamese wikipedia projects aimed at bringing together all Assamese people who are in Facebook and who are interested in Assamese wiki projects. It has more than 460 members now. Prabhakar used that group and his personal contacts effectively to build a community for Assamese wikipedia. That worked. Assamese wikipedia started becoming slowly active. Later Prabhakar started another Facebook group dedicated to NIT Silchar for promoting Indic language wikipedias among students (and aluminis) of NIT Silchar. Due to all these in the next few months we are going to see more wiki activity from the Assam state of India and in the Assamese wikipedia. Recently Narayam (the typing solution extension) is integrated to Assamese wikipedia. Thanks to the Assamese wikipedians Chaipu, Prabahakar and other volunteers who actively worked to make it a reality. A major roadblock for bringing Assamese people to Assamese wikipedia is removed now.

Assamese wiki community is currrently concentrated on online outreach, but soon they are planning to start offline outreach activties also.

It is intersting to note that the community size of smaller languages is either equal to or even larger than that of much bigger languages. I don’t fully understand this and like to hear your opinion on this. One hypothesis could be that, larger ratio of people in smaller languages are more passionate about their language and there fore are willing to put additional effort to showcase their mother language. Each Indic language wiki project is waiting for the few users who has vision and passion about the future of the respective wiki project.

The technical issues and the other road blocks for smaller languages are more.

Number of highly active wikipedians (more than 100 edits per month)

Highly active wikipedians are the editors who do at least 100 edits per month. In fact we must say that they are people who are running the respective language wiki.

Here also Malayalam and Tamil tops the list. In fact if we have more high active editors you will be able to see more activities (not just article creation) coming out of that wiki community. Due to this you can see that offline project, photo events, article writing contest, community quiz, collaborating with respective state government, photo contest, wiki workshops, and many other innovative wiki projects are coming out from these two wiki communities. So ideally we should be able to convert more active editors to highly-active editors to make the wiki activism in each language wikipedia more vibrant.

Registered users who edited at least 10 times since they arrived

This parameter shows how many of the registered users did actually turned into actual wiki editors and done at least few edits in wiki.

Even though many big languages has more number of registered users, still Malayalam continues to be on the top. Hindi and Tamil comes second and third. I wish all wiki communities be able to convert more registered users into active wiki editors.

Newly registered users who edited atleast 10 times

This parameter is a subset of the preceding table. It shows how many of the newly registered users turned into wiki editors. Tamil wiki community is leading here. Among smaller communities, Assamese is also doing well (due to the reasons I told else where).

Page Views – Non Mobile (In Lakhs)

This parameter shows how many readers are waiting for us. Are we caring for them? The following table give the data for Non-mobile (mainly PC).
Even though Hindi lags behind in some of the wikipedia editing/editor matrices, the speakers of Hindi are not lagging behind in using Hindi wikipedia. Hindi with 77 lakh page views tops the list. No other Indic langage is near Hindi. And this is expected considering the huge speaker base of Hindi.

Even for the inactive wikipedias like Sindhi, Kashmiri, Pali, and so on, we have thousands of people accessing it every month. But do we have enough content to offer for these readers? We need to build community for all these languages to serve our readers. In fact we should be converting some these readers into wikipedians of the respective language wikipedias.

Page Views – Mobile

This parameter shows how many are accessing each language wikipedia using mobile. Unlike the non-mobile data, this data is showing an upward trend for all the Indic languages. Eventhough rendering of indic scripts is not good in most of the mobile devices, many users are accessing it. This also shows from where our future readers are going to come.

Here again Hindi comes first. Most of the other Indic languages are increasing its mobile reader base. For some lamguages the growth is more than 100% than the previous month. I assume this is going to increase in future and it is our duty to welcome all these new readers and convert some of them into editors.

Conclusion

In short, in terms of readers most of the Indian languages are doing good. But when it comes to editors that is not the case. One hypothesis could be that we are more knowledge consumers than knowledge creators. Another – and a probably more valid one – is that there are large gaps in basic awareness of the existence of Indic language wikipedias, relatively lower use of Indic language on the Internet, (expected) lack of familiarity with wiki editing, technical issues with regards to Indic languages, tiny community sizes, and many other things.

As wikipedians can we change this scenario?

For wikimedia India we have lot of things to do. In terms of building the community, overcoming the technical challeges, creating awareness about wikipedia (more inportant is creating awareness about Indic language wikipedia), and so on. The challenges are many – but the opportunities are massive. I look forward to working closely with the various language communities on realizing the enormous potential of their respective languages.

Once again, I welcome your views and comments and opinions on the above. Please express your views as comment here. You can also reach me at shiju@wikimedia.org in case you want to send a personal mail. Thanks for reading.


by Shiju Alex at November 10, 2011 09:05 AM

November 03, 2011

Software architecture

aashiks'in

“Software Architecture: The art of decomposing solutions into components so that they communicate efficiently.”

From a conversation with Praseed Pai

by aashiks at November 03, 2011 10:45 AM

November 02, 2011

Removing an element in xml using sed

jainbasil's blog

I wanted to remove an element named 'textForm' from all xmls in a directory. There were around 3000 xml files. I was planning to do it using Groovy, but later, I decided to tryout unix shell scripts to perform this operation.

Here's the script I used :

#!/bin/bash FILES=$HOME/xmls/* for f in $FILES do     echo "Processing $f"     DATA=$(cat $f | sed '/textForm/d')     rm -f $f     echo $DATA > $f done

 

This is a very simple tip on how to make your life easier using unix. But one issue I encountered was that whenever I gave same file as input and output to sed, data loss occurred. That's the main reason for me to split the process into three steps: Give the input to sed &store its output into a variable, delete the original file, and use echo the contents of output variable into file with same name.

If you know anyother methods to perform this easily, please share with me.

Permalink | Leave a comment  »

November 02, 2011 08:21 AM

October 31, 2011

Mini Debian Conference at Nitte, near Mangalore – Overview

Praveen Arimbrathodiyil blogs here

NMAMIT, Nitte

NMAMIT, Nitte

Just back in Pune after 4 days in Nitte in between Mangalore and Udupi in Karnataka state. The best part was the awesome food we had every single day! I never liked Sambar in my 3+ years in Bangalore, but it was so awesome here! (I don’t know how many times I can use the word ‘awesome’ in a blog!) I still think the “Mangalorean Pomfret Masala” was bliss!

Jonas Smedegaard

Of course meeting awesome people is given, for any Free Software conference, so I don’t have to highlight that :) Chandan had interviewed Jonas Smedegaard and it was excellent – both questions and answers! The best question was “what is your message to Canonical/Ubuntu?” We had to cut the interview and let him think about an answer. He said “When a kid leaves their home, we just say best of luck with whatever you do. Ubuntu is like a kid leaving home to debian – so best of luck!” It was so thoughtful and graceful, at debian ubuntu has always been a strain – how do we deal with it? It looks like most people have swallowed the bitter pill and adjusted to Ubuntu being more popular. Jonas kept telling Ubuntu is also a debian user and we have made an oath “Our priorities are our users and free software“.

There is much more to write, hopefully I will find some time to write more later.

by Praveen A at October 31, 2011 04:49 AM

October 30, 2011

My new Buffalo NAS

JEFFREY's Log

Below shown is my new LS-CH1.0TL LinkStation Live 1TB Buffalo-NAS purchased from MediaMarkt (Germany).

My Buffalo-NAS with DLINK ethernet switch and Lenovo Laptop

It supports one of my favourite feature – Its a hackable device! Flashing a new GNU/Linux firmware. Buffalo-NAS is based on GNU/Linux and also they provide its sourcecode in the downloads section webpage.

Also there is an dedicated hack portal for the Buffalo-NAS. Below is the link
Buffalo NAS-Central – http://buffalo.nas-central.org/wiki/Main_Page

I will post some hacks in my web log as I proceed.

by Jeffrey at October 30, 2011 08:45 AM

October 25, 2011

വിപ്ലത്തിന്റെ മുഹൂര്‍ത്തം ആര്‍ക്കും പ്രവചിയ്ക്കാനാവില്ല

Praveen Arimbrathodiyil Blogs here

വീഡിയോ




ഞാന്‍ കാണുന്നതു് കോര്‍പ്പറേറ്റിസവും ഫാസിസവും ശിങ്കിടി മുതലാളിത്തവുമാണു്
 
ഒരു സ്വതന്ത്ര കമ്പോളം എനിയ്ക്കു് കാണുന്നില്ല
 
ഞാന്‍ കാണുന്നതു് ഒരു പോലീസ് ഭരണവും അമേരിക്കന്‍ സാമ്രാജ്യവുമാണു്
 
ഞാന്‍ കാണുന്നതു് 135 രാജ്യങ്ങളിലായി 700 പട്ടാള താവളങ്ങളാണു്
 
ഞാന്‍ കാണുന്നതു് ഇറാഖിലെ 5000 ശവശരീരങ്ങളാണു്
 
ഏകാധിപതികള്‍ക്കു് വലിയ സൈന്യങ്ങള്‍ ഉണ്ടാക്കാന്‍
 
ലക്ഷം കോടിക്കണക്കിനു് വിദേശ സഹായം നല്‍കുന്ന
 
ഒരു വെല്‍ഫെയര്‍ വാര്‍ഫെയര്‍ (യുദ്ധക്കൊതിയുള്ള) രാജ്യം
 
വഴി നഷ്ടപ്പെട്ട ഒരു അമേരിക്കയാണു് ഞാന്‍ കാണുന്നതു്
 
റിപ്പബ്ലിക്രാറ്റുകള്‍ - റിപ്പബ്ലിക്കന്‍സും ഡെമോക്രാറ്റ്സും
 
രണ്ടു് കൂട്ടരും ഒരേ കാര്യത്തിനു് തന്നെയാണു് നിലകൊള്ളുന്നതു്
 
ഒരു യഥാര്‍ത്ഥ ജനാധിപത്യം എനിയ്ക്കു് കാണാനില്ല
 
ജനങ്ങളുടെ ശബ്ദം എനിയ്ക്കു് കേള്‍ക്കാനില്ല
 
അവസാനം ഞങ്ങള്‍ ഉണര്‍ത്തെഴുന്നേറ്റിരിയ്ക്കുന്നു
 
മൈക്ക് ചെക്ക് മൈക്ക് ചെക്ക്
 
സ്പെയിന്‍, ഈജിപ്ത്, പോലെ, ഇതിന്റെ ഡൈനാമിക്സും സമയവും ശരിയാണോ?
 
ഇതു് ശരിയായ മുഹൂര്‍ത്തമാണോ?
 
ആ മാനസികാവസ്ഥ ഉണ്ടോ?
 
ഇതൊന്നും നമുക്കു് പ്രവചിയ്ക്കാനാവില്ല
 
ജനങ്ങള്‍ പ്രതിഷേധിയ്ക്കുമ്പോള്‍, ഒരു ദിവസം പുറത്തിറങ്ങി മാര്‍ച്ച് ചെയ്യുമ്പോള്‍
 
എന്തു് സംഭവിയ്ക്കുമെന്നു് നമ്മള്‍ കണ്ടിട്ടുണ്ടു്
 
അധികാരമാറ്റത്തിനും ജനങ്ങള്‍ തമ്മില്‍ തമ്മില്‍
 
എങ്ങനെ കാണുന്നു എന്നതിനും
 
പുതിയൊരു രീതിയ്ക്കുള്ള ഒരുവസരമായിരിയ്ക്കാം ഒരു പക്ഷേ ഇതു്.
 
ഞാന്‍ പറയാറുള്ളതു് പോലെ
 
രണ്ടായാലും നമുക്കു് തന്നെ നഷ്ടം
 
എന്നാല്‍ ഇതു് നോക്കാവുന്നതാണു്
 
ഇതു് സംഭവിയ്ക്കാന്‍ ഞാന്‍ കാത്തിരിയ്ക്കുകയായിരുന്നു
 
ഇതു് സംഭവിയ്ക്കുമെന്നു് എനിയ്ക്കറിയാമായിരുന്നു
 
കാരണം യൂറോപ്പില്‍ ഇതു് സംഭവിച്ചു
 
ഇതു് പടരും എന്നു് എനിയ്ക്കറിയാമായിരുന്നു
 
ഇതു് എന്റെ ജീവിതത്തിന്റെ
 
വലിയ പങ്കും ഞാന്‍
 
അനുഭവിച്ചു കൊണ്ടിരുന്നതാണു്
 
ഇതു് ബാഹ്യലോകത്തു് പ്രതിഫലിച്ചു് കാണുന്നതു്
 
ഒരു അനുഗ്രഹമാണു്, ഇതിന്റെ ഭാഗമാകുന്നതു്
 
ഞാന്‍ ശരിയ്ക്കും ആസ്വദിയ്ക്കുന്നു
 
ഞാന്‍ പണ്ടു് മുതലേ ഇതിലൊക്കെ ഉള്ളൊരാളാണു്
 
ഞാന്‍ കഴിഞ്ഞ നാലു് പതിറ്റാണ്ടുകളായി പല തരം ആക്റ്റിവിസത്തിലുണ്ടു്
 
നിങ്ങള്‍ക്കറിയുമോ ഇതു് എല്ലായ്പോഴും എന്റെ സ്വപ്നമായിരുന്നു
 
വാള്‍സ്ട്രീറ്റിനു് പിന്നാലെ പോകാനും ജയിലില്‍ കയറാതെയോ
 
അടി വാങ്ങാതെയോ ഇതിനെ ആക്രമിയ്ക്കാനോ
 
നമ്മള്‍ എങ്ങനെ ജയിയ്ക്കും?
 
നമ്മള്‍ എവിടെയും പോകുന്നില്ല
 
ഇതു് ആളുകളെ പഠിപ്പിയ്ക്കാനുള്ള പ്രവര്‍ത്തനമാണു്
 
ശരിയ്ക്കും പറഞ്ഞാല്‍ ലോകത്തെ തന്നെ
 
അതാതയതു് നമ്മള്‍ ആദ്യമായും പ്രധാനമായും കരുണയുള്ളവരും
 
നമ്മളെ നോക്കുന്നതിനു് മുമ്പു് കൂട്ടായ്മയെ നോക്കുന്നവരായിരിയ്ക്കണം
 
ഇതിനുള്ള മാതൃക വട്ടമേശ സമ്മേളനങ്ങളുടെ വളരുന്ന
 
ഒരു പ്രസ്ഥാനമായിരിയ്ക്കണം
 
രണ്ടു് ദിവസം മുമ്പു് ഞാന്‍ അറസ്റ്റ് ചെയ്യപ്പെട്ടു
 
പോലീസ് ഉദ്യോഗസ്ഥരും ഇന്റലിജന്‍സും
 
എന്നെ ചോദ്യം ചെയ്തു. അറസ്റ്റ് ചെയ്യപ്പെടുന്നവര്‍
 
ഇവരോടു് സംസാരിയ്ക്കരുതെന്നു് ഞാന്‍ ആഹ്വാനം ചെയ്യുന്നു.
 
സംസാരിച്ചില്ലെങ്കില്‍ എന്നെ ചുമരില്‍ ചേര്‍ത്തു് ചങ്ങലയ്ക്കിടുമെന്നു് അവര്‍ എന്നെ ഭീഷണിപ്പെടുത്തി
 
ഞാന്‍ സംസാരിച്ചില്ല, നിങ്ങള്‍ക്കിതിഷ്ടപ്പെട്ടോ?
 
ന്യൂ യോര്‍ക്കിലെ മേയര്‍ക്കിവിടെ വിചിത്രമായൊരു സ്ഥാനമാണുള്ളതു്
 
അദ്ദേഹത്തിനു് ഒരു് മുബാറക്കിനെ പോലെയോ
 
അല്ലെങ്കില്‍ മിഡില്‍ ഈസ്റ്റിലെ മറ്റൊരു ഏകാധിപതിയെപ്പോലെയോ
 
പ്രക്ഷോഭകാരികളെ നേരിടാനാവില്ല
 
കൂടാതെ അദ്ദേഹം തന്നെ നേരത്തെ പറഞ്ഞതു്
 
ഈ കുട്ടികള്‍ക്കു് ജോലിയൊന്നും നല്‍കാന്‍ അവര്‍ക്ക്  സാധിച്ചില്ലെങ്കില്‍
 
ടുണീഷ്യയിലും ഈജിപ്തിലും മറ്റ് മിഡില്‍ ഈസ്റ്റേണ്‍ രാജ്യങ്ങളിലും കണ്ടതു് പോലുള്ള പ്രശ്നങ്ങള്‍ നേരിടേണ്ടി വരുമെന്നു്
 
അധികാരവും പണവുമില്ലാത്ത ഞങ്ങളെ പോലുള്ള ആളുകള്‍ക്കു് ചില മാറ്റങ്ങളെല്ലാം
 
കൊണ്ടു് വരാനുള്ള ശ്രമമെങ്കിലും നടത്തണമെങ്കില്‍ സാമൂഹിക സമ്മര്‍ദ്ദത്തിലൂടെ മാത്രമേ കഴിയൂ
 
എല്ലാ ദിവസവും എല്ലാ ആഴ്ചയും
 
വാള്‍സ്ട്രീറ്റ് കീഴടക്കുക
 
ഒന്നിച്ചു് സ്വാതന്ത്ര്യം നേടുകയെങ്ങനെയെന്നെനിയ്ക്കറിയില്ല
 
അതാണു് നമ്മളെല്ലാവരും നേടാന്‍ ശ്രമിയ്ക്കുന്നതെങ്കിലും. ഇതെല്ലാം ഒരുമിച്ചു് നടക്കണമെന്നു് എനിയ്ക്കു് തോന്നുന്നു.
 
ഞങ്ങളിവിടെ ഒരു പ്രസ്ഥാവനയ്ക്കായാണു് ഇവിടെയുള്ളതു്, ഞങ്ങളിവിടെ സ്ഥലം പിടിയ്ക്കുന്നതു്
 
ജനങ്ങളെ ബോധവാന്മാരാക്കാനാണു്, കാരണം ജനങ്ങള്‍ ഭക്ഷണവും വീടും മാത്രം ഉള്ളെങ്കിലും
 
സുഖമായി അവരുടെ വീട്ടില്‍ തന്നെയിരുപ്പാണു്
 
സ്വന്തം അവകാശങ്ങള്‍ ചോദിച്ചു് വാങ്ങാന്‍ അവര്‍ ശ്രമിയ്ക്കുന്നില്ല
 
ജനങ്ങള്‍ യഥാര്‍ത്ഥ ജനാധിപത്യത്തിനായി എണീറ്റു് നില്‍ക്കാനുള്ള സമയമാണിതു്
 
എന്നാല്‍ നമുക്കു് കോര്‍പ്പറേറ്റ് അത്യാഗ്രഹം ഒഴിവാക്കാം
 
ആവശ്യങ്ങള്‍ പ്രശ്നമുണ്ടാക്കുന്നതും അധികാരം കളയുന്നതുമാണു്
 
കാരണം ഇതു് ജനങ്ങള്‍ മറ്റാരെയും കാക്കാതെ
 
സ്വയം കാര്യങ്ങള്‍ ചെയ്യുന്നതായതിനാലാണു്
 
കൂടാതെ നിങ്ങള്‍ക്കിതിനെ ഒരു കുഞ്ഞു് സമൂഹമായി കാണാം
 
ഇതു് പുതിയൊരു സമൂഹത്തിനുള്ള മാതൃകയാണു് എന്തിനെങ്കിലും എതിരാണെന്നുള്ള അര്‍ത്ഥത്തിലുള്ളൊരു
 
പ്രതിഷേധമല്ല, പുതിയൊരെണ്ണം ഉണ്ടാക്കാനുള്ളൊരു വഴിയാണു്
 
നമ്മുടെ ജീവിതത്തിന്റെ ഭാഗമായ നീതിയുടെ തിരസ്കരണത്തിന്റെ
 
ജനങ്ങളുടെ മനസ്സിലാക്കലും ജനങ്ങളുടെ തിരിച്ചറിവും
 
ജനങ്ങളുടെ ഉയിര്‍ത്തെഴുന്നേല്‍പ്പുമാണിതു്
 
ഞങ്ങളിവിടെ വളരെ അടുത്താണെങ്കിലും, പ്രത്യേകിച്ചും ഇതു് പോലുള്ളൊരു നഗരത്തില്‍
 
നിങ്ങള്‍ക്കറിയുമോ, ആദ്യ പടി വയ്ക്കാന്‍ എല്ലാവര്‍ക്കും പേടിയാണു്
 
ജനങ്ങള്‍ കെട്ടിപ്പടുത്ത മതിലുകള്‍ തകര്‍ക്കാന്‍
 
പ്രശ്നങ്ങളെക്കുറിച്ചു് സംസാരിയ്ക്കുന്ന, ഇതു് പോലെയൊ അല്ലെങ്കില്‍
 
മറ്റൊരു തരത്തിലുള്ളതൊ ആയ കൂട്ടായ്മ കെട്ടിപ്പെടുക്കാന്‍
 
നമ്മള്‍ക്കെല്ലാവര്‍ക്കും പൊതുവായ പ്രശ്നങ്ങളുണ്ടു് നമ്മുടെയെല്ലാവരുടേയും
 
ജീവിതങ്ങള്‍ നന്നാക്കാന്‍ മാറ്റാവുന്ന പൊതുവായ കാര്യങ്ങള്‍
 
ഞാന്‍ വിയറ്റ്നാം കാലത്തെ 60 വയസ്സായ ഒരു വിമുക്ത ഭടനാണു്
 
ഞാന്‍ ഒരു വക്കീലിന്റെ കൂടെ മുഴുവന്‍ സമയമല്ലാതെ ജോലിയെടുത്തിരുന്നു
 
ഇപ്പോള്‍ ആ വക്കീലിനു് തന്നെ സാമ്പത്തിക പ്രശ്നങ്ങളായതു് കാരണം എന്നെ എടുക്കാന്‍ തയ്യാറല്ല
 
ഞാന്‍ കുടുങ്ങിയിരിയ്ക്കുകയാണു്
 
എന്താണു് ചെയ്യുകയെന്നെനിയ്ക്കൊരു പിടിയും ഇല്ല
 
നിങ്ങള്‍ എന്നെ പോലെ അസ്വസ്ഥനും
 
ടീ പാര്‍ട്ടിക്കാരെ വാര്‍ത്തയിലും ടിവിയിലും എല്ലാ സമയത്തും കാണുമ്പോള്‍
 
എന്താണിവിടെ ടീ പാര്‍ട്ടിയ്ക്കു് ബദലായി ഒരു തീവ്ര ഇടതുപക്ഷമില്ലാത്തതെന്നു്
 
ആലോചിച്ചിട്ടുണ്ടെങ്കില്‍ നിങ്ങളിവിടെ വരണം
 
നിങ്ങള്‍ക്കും എന്നെ പോലെ കൊട്ടക്കണക്കിനു് വിദ്യാര്‍ത്ഥി കടമുണ്ടെങ്കില്‍
 
നിങ്ങളിവിടെ വരണം
 
നിങ്ങള്‍ എന്തെങ്കലും കരമടച്ചിട്ടുണ്ടെങ്കില്‍ ജനറല്‍ ഇലക്ട്രിക് കോര്‍പ്പറേഷനേക്കാളും കൂടുതല്‍ കരമടച്ചിട്ടുണ്ടെന്നതിന്റെ
 
കലിയടങ്ങുന്നില്ലെങ്കില്‍
 
നിങ്ങളിവിടെ വരണം
 
അത്ഭുതകരമായതെന്തെങ്കിലും കാണണമെങ്കില്‍ നിങ്ങളിവിടെ വരണം
 
[നിങ്ങള്‍ക്കായി അവതരിപ്പിച്ചതു് മാര്‍ട്ടിന സ്റ്ററോസ്റ്റയും ഇവ റാഡിവോജേവിക് - ക്രിയേറ്റീവ് കോമണ്‍സ് മുദ്ര]
 
എല്ലാ ദിവസവും എല്ലാ ആഴ്ചയും

ഈ പരിഭാഷ മെച്ചപ്പെടുത്താന്‍ ഇവിടെയും വാള്‍സ്ട്രീറ്റ് പിടിച്ചടക്കലിന്റെ മറ്റു് വീഡിയോകളുടെ പരിഭാഷയില്‍ പങ്ങാളികളാവാന്‍ ഇവിടെയും വരിക.

October 25, 2011 05:46 PM

October 23, 2011

Tathva memories @ NITC

Syntax

“.. I’m leaving this campus today. I will miss the late-night hangouts with Kartik and Pankaj.. I will miss the stay in Kartik’s room with Arjun and Rohit (If you are reading this, All the best for your IAS, brother). I will miss Ramnath, Arnab and all my  friends here and this great institution.. I’m sure I will be back here for the next event.. With a million beautiful memories in 4 days.. Adieu NITC..”

by ershad at October 23, 2011 09:24 AM

October 20, 2011

Seven years of 'humanity to others' through a Free Operating System

Jaggu's world

 On  20th Oct. 2004 Canonical Ltd announced the first release of worlds most popular and sexy operating system Ubuntu. The first release was code named as "Warty Warthog".  From their onwards Ubuntu was a grant success with more than 20 million users across the glob. A totally free and open source operating system attains much popularity than any other similar proprietary operating systems with in seven years. This is a remarkable achievement by the humanity behind Ubuntu operating system. People who dedicated their free times to write code, test and use the operating system and Cannonical Ltd. made it possible. And they continues the journey to serve the humanity with better Operating System that satisfies the computing needs of "Common Man".  Kudos to the entire team behind Ubuntu !!!

by jaganadhg at October 20, 2011 03:34 PM

Groovying Around: Access private fields in Java classes

jainbasil's blog

Folks! I am Groovying around these days, working on some interesting things in my professional life. One among them was to parse a very large PST File (Developed by M$ for their Outlook), extract all emails & attachments and convert them to xml files with all relevant information.

While googling, I found java-libpst which can parse PST files. But, when I tried to parse a file with size 7.9 GB, it gave me OutOfMemory exception. This happens when I try to retrieve all attachments of an email. Without attachments, it was working fine, but  was not useful for my task. I decided to add some methods to the java-libpst library so that I can generate the filestructure of PST file in the filesystem. Advantage of this is that it is accessing the internal tables of java-libpst library and writing contents and attachments of each email into a files. I needn't call an expensive method getSubFolders() recursively to retrieve all the subfolders and then retrieve messages in it.

But, maintaining my own fork of java-libpst is a big task. I may not be able to provide updates for it whenever original library is updated. So, I was forced to move all methods out from the source code of java-libpst, at the same time I wanted to access private fields like emailsTable, subFoldersTable etc. Here Groovy entered into scene for helping me!.

Consider the following Java code:

package net.jainbasil.blog; public class A {     private String propertyOne;         public void printProperty() {         System.out.println("Property One: " + propertyOne);     } }

We can easily access the private field propertyOne and method printProperty() by using the following groovy script:

package net.jainbasil.blog def myObject = new A() myObject.propertyOne = "Hello, Groovy" myObject.printProperty()

This is not a new fact, but I wanted to share my experience. I read from Groovy forums that by Groovy 2.0 release, they will fix this issue of access modifiers. But we can also access the private fields using Java Reflections also.

 

Permalink | Leave a comment  »

October 20, 2011 02:42 AM

October 18, 2011

നമുക്ക് സ്റ്റീവ് ജോബ്‌സില്‍ നിന്ന് പഠിക്കാവുന്നത്

ബ്ലോഗ് ഭൂമി - e lekhanangal

ആപ്പിള്‍ മേധാവിയായിരുന്ന സ്റ്റീവ് ജോബ്സിന്റെ (1955-2011) മരണം പോയ വാരം വാര്‍ത്തകളില്‍ നിറഞ്ഞു നിന്ന് സംഭവം ആയിരുന്നല്ലോ. അനാഥബാല്യത്തില്‍ നിന്ന് തുടങ്ങി പഠനം പാതിവഴിയില്‍ ഉപേക്ഷിച്ച ശേഷം, സ്വയം പോറ്റിവളര്‍ത്തിയ കമ്പനിയില്‍ നിന്നും ഇടക്കാലത്ത് പുറത്താക്കപ്പെടുകയും പിന്നീട് വര്‍ധിത വീര്യത്തോടെ തിരിച്ചെത്തി സ്ഥാപനത്തിന്റെ അനുപമമായ വളര്‍ച്ചയ്‌ക്ക് തന്നെ കാരണമായ വ്യക്തിത്വം, അവസാനം അര്‍ബുദ രോഗം കീഴ്പ്പെടുത്തിയപ്പോഴേക്കും ജീവിതത്തിന്റെ നി‌മ്നോന്നതങ്ങള്‍ വളരെപ്പെട്ടന്ന് തന്നെ ഈ മനുഷ്യനിലൂടെ കടന്നു പോയിരുന്നു. എത് വീക്ഷണ കോണില്‍ നിന്ന് നോക്കിയാലും സ്റ്റീവ് ജോബ്സില്‍ നിന്ന് പഠിക്കാന്‍ എറെയുണ്ട്. പരമ്പരാഗതമായ പലധാരണകളെയും തച്ചുടയ്‌ക്കുന്നതായിരുന്നു ഇദ്ദേഹം നടന്നു വന്ന വഴികള്‍ . ചെറിയ തിരിച്ചടിയില്‍ പോലും ജീവിതം അസ്തമിച്ചെന്ന് കരുതുന്ന സാധാരണക്കാര്‍ക്കിടയില്‍ ഇദ്ദേഹം ഒരു പ്രകാശ ഗോപുരമായി എക്കാലവും നില നില്‍ക്കും.

ദത്തുപുത്രനായാണ് സ്റ്റീവ് ജോബ്സ് വളര്‍ന്നത്. 2005 ല്‍ അമേരിക്കയിലെ സ്റ്റന്‍ഫഡ് സര്‍വകലാശാലയില്‍ ബിരുദപൂര്‍വ സമ്മേളനത്തെ അഭിസംബോധന ചെയ്ത് നടത്തിയ പ്രസംഗം പലതു കൊണ്ടും ശ്രദ്ധേയമായിരുന്നു. ജീവിതത്തില്‍ നേരിട്ട തിരിച്ചടികള്‍ അക്കമിട്ട് നിരത്തി പ്രസംഗിച്ചത് ശ്രദ്ധേയമായിരുന്നു. മരണാനാന്തരം മിക്ക ദിനപത്രങ്ങളും വെബ് പോര്‍ട്ടലുകളും ഈ പ്രസംഗം വീണ്ടും വായനക്കാരിലേക്ക് എത്തിച്ചിരുന്നു. യൂ ട്യൂബ് പോലെയുള്ള വീഡിയോ പങ്കിടല്‍ സൈറ്റുകളില്‍ പ്രസംഗം ശ്രവിക്കാനാത്തൈയവരുടെ എണ്ണ കുത്തനെ കൂടി. തിരിച്ചടികളില്‍ നിന്ന് ഫീനീക്‍സ് പക്ഷിയെ പോലെ ഉയര്‍ത്തെഴുന്നേല്‍ക്കുന്ന സവിശേഷമായ സഹജസ്വഭാവം ഇദ്ദേഹത്തില്‍ ജന്മനാ തന്നെ ഉണ്ടായിര്‍ുന്നു എന്ന് പറയുന്നതാണ് ശരി.

കോളെജ് വിദ്യാര്‍ത്ഥിനി ആയിരിക്കെ ഗര്‍ഭിണിയായ അവിവാഹിത കൂടിയായ അമ്മ കുഞ്ഞിനെ ദത്തു നല്‍കി. ഗര്‍ഭിണി ആയിരിക്കെ തന്നെ കുഞ്ഞിനെ ദത്തെടുക്കാന്‍ ഒരു വക്കീലും ഭാര്യയും തയ്യാറായി എന്നാല്‍ ജനിച്ചപ്പോള്‍ തങ്ങള്‍ക്ക് പെണ്‍‌കുട്ടിയെ മതി എന്ന കാരണം പറഞ്ഞ് അവര്‍ ഒഴിവായി. ജനിച്ചും വീണ സമയത്ത് തന്നെ തുടങ്ങുന്നു തിരിച്ചടി എന്ന് പറഞ്ഞാല്‍ പോലും അതിശയോക്‍തിയില്ല. അവസാനം മറ്റൊരു കൂട്ടര്‍ കുഞ്ഞിനെ ദത്തെടുക്കാന്‍ വന്നു. പക്ഷെ ബിരുദധാരിക്കെ കുഞ്ഞിനെ വളര്‍ത്താന്‍ നല്‍കൂ എന്ന് പെറ്റമ്മ വാശിപിടിച്ചും പിന്നെ കുഞ്ഞു സ്റ്റീവ് വളര്‍ന്ന് വരുമ്പോള്‍ കോളെജിലയച്ച് ബിരുദധാരിയാക്കാം എന്ന വ്യവസ്ഥയില്‍ കുട്ടിയെ ദത്ത് നല്‍കി. കൌമാരകാലത്തിന്റെ തുടക്കത്തില്‍ എല്ലാരെയും പോലെ കോളെജില്‍ എത്തിയങ്കിലും പഠനം ആദ്യവര്‍ഷം തന്നെ ഉപേക്ഷിച്ചു. അവിടെ നിന്നും മുങ്ങിയ സ്റ്റീവ് പൊങ്ങുന്നത് അക്ഷരരൂപത്തെ പറ്റി (കാലിഗ്രാഫി) പഠിക്കുന്ന ക്ലാസിലാണ്. അതാകട്ടെ സ്റ്റീവ് ജോബ്സ് എന്ന സംരംഭകന് പില്‍ക്കാലത്ത് വളര്‍ച്ചയുടെ പടവുകള്‍ ഓടിക്കയറാന്‍ കാരണമാവുകയും ചെയ്തു. യുവായ സ്റ്റീവ് ജോബ്സ് പലപ്പോഴും കൂട്ടുകാരുടെ താമസസ്ഥലത്ത് അധികപറ്റായി അന്തിയുറങ്ങുകയും ഉപയോഗശൂന്യമായ കോളാക്കുപ്പികള്‍ പെറുക്കി വിറ്റ് കിട്ടുന്ന കാശിന് ഉപജീവനം നടത്തിയ കാലവും ഉണ്ടായിരുന്നു. ആഴ്ചക്കവസാനം കിലോമീറ്ററുകള്‍ക്കപ്പുറമുള്ള ഇസ്‌കോണ്‍ കൃഷ്‌ണ ക്ഷേത്രത്തിലെ അന്നദാനമായിരുന്നു വിഭവ സ‌മൃദ്ധമായ ശാപ്പാട്

പിന്നീട് ഭാരതീയ തത്വചിന്തയിലും നാട് കാണാനുള്ള മോഹത്തിലും ഒരു ചങ്ങാതിയുമായി ഇന്ത്യയിലെത്തുകയും ചെയ്തു. തിരികെ നാട്ടിലെത്തിയ ശേഷമാണ് ഇന്ന് നാമറിയുന്ന സ്റ്റീവ് ജോബ്സിന്റെ ജൈത്രയാത്ര തുടങ്ങുന്നത്. 1975 ചങ്ങാതിയായ വോസ്‌നിയാക്കുമായി ചേര്‍ന്ന് അക്കാലത്ത് കേട്ട് കേള്‍വിമാത്രമുണ്ടായിരുന്ന കമ്പ്യൂട്ടര്‍ നിര്‍മ്മാണത്തിലേക്ക് കടക്കുന്നത്. കോളെജ് പഠനം ഇഷ്ടമായില്ലെങ്കിലും സ്റ്റീവിന് സാങ്കേതികവിദ്യയോട് അടങ്ങാത്ത കമ്പമായിരുന്നു. ഇതാണ് ഇന്ത്യയിലേക്ക് വരുന്നതിന് മുന്നെ അറ്റാറി എന്ന ടെക് കമ്പനിയില്‍ ചേരാന്‍ പ്രേരിപ്പിച്ചത്. ഈ സ്ഥാപനത്തില്‍ വച്ചാണ് ആപ്പിളിന്റെ സഹസ്ഥാപകനായ വോസ്‌നിയാക്കിനെ പരിചയപ്പെട്ടതും. ആപ്പിള്‍ 1 എന്ന ആദ്യ കമ്പ്യൂട്ടറിന്റെ പണിശാല സ്റ്റീവ് ജോബ്സിന്റെ കിടപ്പുമുറി തന്നെയായിരുന്നു. പതുക്കെ വളരാന്‍ തുടങ്ങി, ചില നിക്ഷേപകര്‍ പണം മുടക്കാനും തയാറായി. ഇതിനിടെ പെപ്‌സി യില്‍ നിന്നും ഒരാളെ ജോലിക്കെടുത്തു. ഇവിടെ തുടങ്ങുന്നു രണ്ടാം തിരിച്ചടിയുടെ ആദ്യ സ്ഫുരണങ്ങള്‍ .1984 ല്‍ മാക്കിന്റോഷ് കമ്പ്യൂട്ടര്‍ വില്‍‌പനയ്‌ക്ക് തയാറാക്കി നല്‍കി. കമ്പനിക്ക് പത്ത് വയസ് തികയുമ്പോഴേക്ക് കഠിനപരിശ്രമം കൊണ്ടും ചിന്തയുടെ പ്രയോഗം കൈമുതലാക്കിയും 20 ലക്ഷം അമേരിക്കന്‍ ഡോളര്‍ എന്ന കടമ്പ കടന്നു ഒപ്പം മൂവായിരത്തിയഞ്ഞൂറിലധികം ജീവനക്കാരും. ഇതിനിടെ തന്നെ സ്ഥാപനം ഓഹരിക്കമ്പോളത്തിലുമെത്തി. അപ്പോഴേക്കും ആഭ്യന്തര പ്രശ്‌നങ്ങള്‍ മൂര്‍ശ്ചിച്ച് സ്റ്റീവ് ജോബ്സിന്റെ സ്വന്തം കമ്പനി പുറത്താക്കി. ഇദ്ദേഹത്തിന്റെ തന്നെ വാക്കുകളില്‍ പറഞ്ഞാല്‍ - ഒപ്പമുള്ള വ്യവസായ സംരംഭകര്‍ക്കാകെ ഞാന്‍ തെറ്റായ മാതൃകയാണന്ന് തോന്നി പോയ നിമിഷം. പതിയെ ആ പുറത്താകല്‍ ഒരു അവസരമായി മനസിലായി. ഒരു വിജയവരിച്ചവന്റെ അഹങ്കാരത്തില്‍ നിന്നും തുടക്കക്കാരന്റെ വിനയത്തിലേക്ക് ഞാന്‍ എത്തപ്പെട്ടു.

1984 ല്‍ അതായത് ആപ്പിളില്‍ നിന്ന് പുറത്താകുന്നതിന് തൊട്ട് മുന്നെ പുറത്തിറക്കിയ ആപ്പിള്‍ മാക്കിന്റോഷ് കമ്പ്യൂട്ടറിന് ചിത്രരൂപേണ സംവദിക്കാവുന്ന (ഗ്രാഫിക്കല്‍ യൂസര്‍ ഇന്റര്‍ഫേസ്) സംവിധാനം ഉണ്ടായിരുന്നു, അക്കാലത്ത് അത് പുതുമയോ അല്ലെങ്കില്‍ അത്ഭുതമോ ആയിരുന്നു. ആപ്പിളില്‍ നിന്ന് പടിയിറങ്ങിയ ശേഷം നെക്‍സ്റ്റ് എന്ന കമ്പനിയും പിക്സാര്‍ എന്ന ആനിമേഷം സംരംഭവുമായി സ്റ്റീവ് തന്റെ സ്വപ്‌നങ്ങള്‍ സാക്ഷാത്കരിക്കാനുള്ള അവിരാമമായ യാത്രയിലായിരുന്നു. 1996 ല്‍ തന്നെ പുറത്താക്കിയ അല്ലെങ്കില്‍ സ്വന്തം സ്ഥാപനമായ ആപ്പിളിന് സ്റ്റീവ് ജോബ്സ് എന്ന മാന്ത്രികനെ തിരിച്ച് വിളിക്കേണ്ടി വന്നു. ഒന്ന് നോക്കണേ ! ലോകത്തില്‍ ഒരു വ്യവസായി സ്റ്റീവ് നടന്ന സംരംഭവഴികളിലൂടെ നടന്നുകാണില്ല. തിരികെ എത്തിയത് പ്രതാപകാലം മങ്ങിത്തുടങ്ങുകയായിരുന്ന ആപ്പിളിലേക്കായിരുന്നു, പുറത്ത് നിന്ന 11 വര്‍ഷം ആപ്പിള്‍ നിര്‍ണായകമായ ഒരു ചലനവും സാങ്കേതികലോകത്ത് സൃഷ്ടിച്ചതുമില്ല എന്നത് സത്യം.

തിരിച്ചെത്തിയപ്പോള്‍ ആപ്പിളും സ്റ്റീവ് ജോബ്സും മുന്‍‌പെങ്ങുമില്ലാത്ത കരുത്താര്‍ജിക്കുകയായിരുന്നു അതു വരെ കണ്‍‌സ്യൂമര്‍ ഇലക്‍ട്രോണിക്‍സ് വിപണിയില്‍ കമ്പനി ഒന്നുമല്ലായിരുന്നു. 2001 ല്‍ സംഗീതാസ്വാദന ലോകത്ത് ഐ പോഡ് എന്ന തീരെ ചെറിയ ഒരു ഉപകരണം പുറത്തിറക്കുമ്പോള്‍ എതിരാളികള്‍ അക്ഷരാര്‍ത്ഥത്തില്‍ ഞെട്ടി. വിപണി വാണിരുന്നവര്‍ക്ക് അവഗണിക്കാവുന്നതായിരുന്നില്ല ഈ കൊണ്ടുനടക്കാവുന്ന ഒരു ബിസ്‌കറ്റിന്റെയത്ര മാത്രം വലിപ്പമുള്ള പാ‍ട്ട് പെട്ടി. ഉപയോക്താക്കള്‍ ഇരു കൈയ്യും നീട്ടി ഉത്പന്നത്തെ സ്വീകരിച്ചു. അവര്‍ സ്വപ്‌നം പോലും കാണാത്ത സാങ്കേതികത്തികവായിയിരുന്ന ഐ പോഡ് എന്ന ചെപ്പില്‍ ഒളിപ്പിച്ച് വച്ച് നല്‍‌കിയത്. ഐ പോഡിന്റെ വിപണിത്തിളക്കം ആപ്പിളിനെ ഉപഭോക്‍തൃ ഉത്പന്നങ്ങളുടെ ലോകത്ത് ഇരുപ്പുറപ്പിച്ചു. തുടര്‍ന്ന് ഐ ട്യൂണ്‍സ് എന്ന മ്യൂസിക് സ്റ്റോര്‍ , ഐ ഫോണ്‍ എന്ന മൊബൈല്‍ ഫോണ്‍ എന്നിവയും 2010 ജനുവരിയില്‍ ഐ പാഡ് എന്ന ടാബ്‌ലറ്റ് കമ്പ്യൂട്ടറും അവതരിപ്പിച്ചു. തൊട്ടതെല്ലാം പൊന്നാക്കി എന്ന പ്രയോഗം ആപ്പിളിന്റെയും സ്റ്റീവ് ജോബ്സിന്റെയും കാര്യത്തില്‍ നൂറു ശതമാനം ശരിയായി. എല്ലാ ഉപകരണങ്ങളും വിപണി റെക്കോഡുകള്‍ തകര്‍ത്തെറിഞ്ഞു. ഇന്ന് 40,000 കോടി അമേരിക്കന്‍ ഡോളര്‍ മൂല്യമുള്ള സ്ഥാപനമായി ആപ്പിള്‍ മാറി.

ഒരു വ്യവസായ സംരംഭകന്റെ നിറം പിടിപ്പിച്ച പതിവ് കഥ എന്ന് പറഞ്ഞ് അലക്ഷ്യമായി വായിച്ചുപേക്ഷിക്കാവുന്നതാണോ സ്റ്റീവ് ജോബ്സിന്റെ ജീവിതവും ആപ്പിളിന്റെ കഥയും. അല്ല എന്ന് ഉത്തരം. മേന്മയേറിയ സ്ഥാപനങ്ങളില്‍ പഠിച്ചവര്‍ക്ക് മാത്രം പ്രാപ്യമാകുന്ന സാങ്കേതികവിദ്യാ ലോകത്താണ് ഇദ്ദേഹം വിജയപതാക പാറിച്ചത്. അക്കാ‍ദമിക് യോഗ്യത ഒന്നും ഇല്ല. അതെ സ്റ്റീവ് ജോബ്സില്‍ നിന്നും പഠിക്കാവുന്ന പാഠം ഇതാണ്: സ്വപ്‌നം കാണാനുള്ള കഴിവും ആ സ്വപ്‌നത്തെ ആര്‍ക്കും അസൂയ ജനിപ്പിക്കാവുന്ന തരത്തിലെ ഉത്പന്നമാക്കാനുള്ള കഴിവും ഉണ്ടെങ്കില്‍ പിന്നെ ഒരു യോഗ്യതയും ആവശ്യമില്ല. സംരംഭകത്വ ബോധം തീരെ കുറഞ്ഞ ഇന്ത്യയില്‍ (പ്രത്യേകിച്ച് കേരളത്തില്‍ ) ആപ്പിളിന്റെ ജൈത്രയാത്ര ആവര്‍ത്തിച്ച് പഠന വിധേയമാക്കേണ്ടതുണ്ട്. നമ്മുടെ നാട്ടിലെ ഡി ടി പി സെന്റര്‍ നടത്തിപ്പുകാരന് പോലും സാങ്കേതികയോഗ്യത വേണം എന്ന് ശഠിക്കുന്ന കാലത്ത് സ്റ്റീവ് ജോബ്സിനെ പോലെ ഒരു സംരംഭകനെ ഉള്‍ക്കൊള്ളാന്‍ ഇക്കാലത്ത് പോലും ആകുമോ? അതേ സമയം തന്നെ കോളെജില്‍ നിന്നും ആദ്യവര്‍ഷം തന്നെ പുറത്താകേണ്ടി വരുന്ന ഒരാള്‍ക്ക് മാനസികമായും മറ്റും നേരിടേണ്ടി വരുന്ന പീഡനപര്‍വം തുടരുന്ന നാട്ടില്‍ സ്റ്റീവ് ജോബ്സിന്റെ ലോകം അവര്‍ക്ക് മുന്നോട്ട് പോകാന്‍ ഒരു പിടിവള്ളിയാകണം.

ഇന്നാട്ടില്‍ ഏതാനും കോടി വാര്‍ഷിക വിറ്റുവരവുള്ള സ്ഥാപനങ്ങളും അതിന്റെ മേധാവികളും ത്രീ പീസ് സ്യൂട്ടില്‍ ധനാഡ്യനായി വന്നിറങ്ങുമ്പോള്‍ പലതരം പത്മാ അവാര്‍ഡുകള്‍ക്കുമായി ചരടുവലിക്കുമ്പോഴാണ്. എണ്‍പതുകള്‍ മുതല്‍ക്ക് തന്നെ ഫോര്‍ച്യൂണ്‍ 500 പട്ടികയില്‍ ഇടം പിടിച്ച ആപ്പിളിന്റെ സ്ഥാപകന്‍ ഒരു വട്ടക്കഴുത്ത് ടീ ടര്‍ട്ടും ജീന്‍സുമിട്ട് എല്ലായ്പ്പോഴും നടക്കുന്നത്. ലോകം സാകൂതം കാത്തിരിക്കുന്ന പത്രസമ്മേളനങ്ങളില്‍ പോലും കമ്പനിയുടമയുടെ നാട്യങ്ങളില്ലാതെ ഇതേ വസ്ത്രധാരണവുമായാണ് എത്തുന്നത്. ഭാരതീയ തത്വചിന്തയില്‍ ആകൃഷ്ടനായി പില്‍ക്കാലത്ത് ഇദ്ദേഹം ബുദ്ധമതം സ്വീകരിക്കുകയും ചെയ്തു എന്നത് ചരിത്രം.

സ്വന്തം കമ്പനിയില്‍ നിന്നും താന്‍ കൊണ്ട് വന്ന സഹപ്രവര്‍ത്തകനാല്‍ തന്നെ പടിയിറക്കപ്പെട്ടപ്പോഴും ശുഭചിന്ത കൈവിടാതെ അവിരാമം പ്രവര്‍ത്തിച്ചിരുന്ന സ്റ്റീവ് ജോബ്സിനെ താരതമ്യപ്പെടുത്താന്‍ മറ്റ് വ്യക്തികള്‍ ഇല്ല എന്ന് പറയുമ്പോള്‍ തന്നെ ചിന്തയുടെ നൂതനത്വം കൊണ്ട് വിജയം കൊയ്യാന്‍ ഒരു സ്ഥാപന പിന്തുണയും ആവശ്യമില്ല എന്ന് ബോധ്യമാകും. ചെറിയ പ്രതിസന്ധികളില്‍ പോലും ആടിയുലയുന്നവര്‍ക്ക് പ്രതീക്ഷയുടെ തിരിനാളമായി സ്റ്റീവ് ജോബ്സിന്റെ ജീവിതം മാറുന്നത് ഇവിടെയാണ്. മറ്റുള്ളവര്‍ ഉണ്ടാക്കിയ (കമ്പ്യൂട്ടര്‍ , മ്യൂസിക് പ്ലയര്‍ , മൊബീല്‍ ഫോണ്‍ , ടാബ്‌ലറ്റ് കമ്പ്യൂട്ടര്‍ ) ഉപകരണങ്ങളാണ് ആപ്പിള്‍ പരിഷ്‌കരിച്ച് അവതരിപ്പിച്ചത്. അതായത് തികച്ചും പുത്തന്‍ പുതിയ ഉപകരണം അല്ല വിജയത്തിനായി ഇദ്ദേഹം തിരഞ്ഞെടുത്തത്, മറിച്ച് നിലവിലുള്ളവയെ തന്നെ സ്വപ്‌നം ചാലിച്ച് തികച്ചും നൂതനമായ ഒന്നാക്കി മാറ്റി. ഒരോ ഉപകരണം അവതരിപ്പിക്കുന്ന ആദ്യദിനം തന്നെ അത് വിപണിയെ പിടിച്ചു കുലുക്കി . നിലവിലുള്ള പ്രബലരായ ഉത്പാദകരുടെ ഉറക്കം കെടുത്താന്‍ തക്ക എന്ത് സാധനം ആണ് സ്റ്റീവ് ജോബ്സിന്റെ പക്കല്‍ ഉണ്ടായിരുന്നത്? ഉത്തരം ഒന്ന് മാത്രം സ്വപ്‌നം ..സ്വപ്‌നം മാത്രം. ഇതിനെ ഉപകരണമാക്കിമാറ്റാനുള്ള കര്‍മ്മകുശലത എതെങ്കിലും ഇന്‍സ്റ്റിട്യൂട്ടില്‍ നിന്നല്ല സ്വയാര്‍ജിതമായാണ് സ്റ്റീവ് ഉണ്ടാക്കിയെടുത്തത്. ഇതാകണം ഇന്ത്യന്‍ സംരംഭകര്‍ക്ക് പകര്‍ത്താനാകുന്നത്. അല്ലെങ്കില്‍ കേവലം ഒരു ബിസിനസ് കാരന്റെ വിജയചരിത്രം മാത്രമായി ഒരു ജീവിതം മാറും.

സ്റ്റീവ് ജോബ്സിന്റെ അവസാന തിരിച്ചടി എന്ന് അദ്ദേഹം തന്നെ വിശേഷിപ്പിക്കുന്നത് തന്നില്‍ പിടിപെട്ട അപൂര്‍വമായ പാന്‍‌ക്രിയാസ് അര്‍ബുദമാണ്. ആറുവര്‍ഷത്തിന് മുന്നെ തന്നെ അര്‍ബുദരോഗം സ്ഥിരീകരിക്കപ്പെട്ടു. ചികില്‍‌സയില്ല എന്നറിയമായിരുന്നിട്ടും കര്‍മമേഖലയില്‍ നിന്ന് ഒരടി പോലും ഇദ്ദേഹം പിന്‍‌മാറിയില്ല എന്ന് മാത്രമല്ല കൂടുതല്‍ തീവ്രമായി തന്റെ സ്വപ്‌നങ്ങളെ താലോലിക്കാനും അത് പ്രാവര്‍ത്തികമാക്കാനും ആണ് സമയം കണ്ടെത്തിയത്. കരിയറിന്റെ അവസാന കാലത്ത് നടത്തിയ പ്രസംഗങ്ങളിലും യുവാക്കളോട് നടത്തിയ ഉപദേശം വിശപ്പുള്ളവനായിരിക്കൂ വിഡ്ഡിയായിരിക്കൂ എന്നതാണ്.

ജനനസമയത്ത്, പഠനകാലത്ത്, സംരംഭകനായിരിക്കെ എറ്റവും ഒടുവില്‍ രോഗാതുരനായി സ്റ്റീവ് ജോബ്സ് പ്രതിസന്ധികളോട് തന്നെയാണ് പടവെട്ടിയത്. ഇതില്‍ നിന്ന് നമുക്ക് പഠിക്കാവുന്നത് വിജയത്തിന് എളുപ്പവഴിയോ കുറുക്കുവഴിയോ ഇല്ല എന്നതാണ്. ചിലര്‍ പറയാറുള്ളത് പോലെ കഠിനാധ്വാനം എന്നും ഇദ്ദേഹത്തിന്റെ ജീവിതവഴിയെ വിശേഷിപ്പിക്കാനാകുമോ? ഇല്ല. മറിച്ച് innovate and improve (നൂതനത്വത്തിലൂടെ പുരോഗതിയുടെ പടവുകളിലേക്ക്) തന്നെയായാണ് നമുക്ക് ഈ ജീവിതത്തില്‍ നിന്ന് പഠിക്കാനാവുന്നത്


by വി. കെ ആദര്‍ശ് (noreply@blogger.com) at October 18, 2011 09:32 PM

October 14, 2011

Ubuntu 11.10 released - Looking for more Windows users to Switch to Ubuntu

Anoop John

Ubuntu 11.10 has been released and the usual buildup of excitement in the Ubuntu community is evident in terms of articles and reviews around the same popping up all over the place. Ubuntu Manual team has taken this opportunity to release an installation guide for Ubuntu 11.10. As Ubuntu installations are becoming more and more easier (as with any other GNU/Linux installations) I hope more people are going to try out and switch to Ubuntu (or one of the many GNU/Linux distros).

read more

by anoopjohn at October 14, 2011 12:32 PM

October 13, 2011

Dennis Ritchie has passed on

aashiks'in

A great man has passed on, leaving behind a brilliant legacy.

Mourn Dennis Ritchie.

People who use computers, turn on your Macs, GNU/Linux machines, *nix based operating systems, iPhone, Androids, and remember him., for what lies beneath it all, came from his mind.

Programmers, remember the first time you met C. Remember the first time you met Unix. Write a C program. Make it print Bye bye Dennis.

Mourn the man who gave you the “Unix way”, about how simple things that do one thing and one thing only, hook up to make great software.

Think about the joys of being a Unix user.

Lift your hands off the keyboard, and think about how awesome it is to be a programmer.

And then remember that you are standing on giants’ shoulders – one of them has fallen.

RIP Dennis.

http://en.wikipedia.org/wiki/Dennis_Ritchie

by aashiks at October 13, 2011 03:57 AM

October 11, 2011

Mark Pilgrim’s philosophy …Preserved

aashiks'in

  1. Stop buying stuff you don’t need
  2. Pay off all your credit cards
  3. Get rid of all the stuff that doesn’t fit in your house/apartment (storage lockers, etc.)
  4. Get rid of all the stuff that doesn’t fit on the first floor of your house (attic, garage, etc.)
  5. Get rid of all the stuff that doesn’t fit in one room of your house
  6. Get rid of all the stuff that doesn’t fit in a suitcase
  7. Get rid of all the stuff that doesn’t fit in a backpack
  8. Get rid of the backpack

Mark was working on 4th. I am on 1.

by aashiks at October 11, 2011 04:32 AM

October 03, 2011

Python workshop at KSR College of Arts & Science

Baiju Muthukadan's Blog


Few weeks back (on 3rd September) I conducted one Python workshop at KSR College of Arts & Science.  I couldn't write about it till now. The college is located in Tiruchengode, a town in Namakkal district of Tamil Nadu.  The workshop was on a Saturday, but I reached the college in the previous night.     There was around 80 students from MCA and MSc courses. One student took some photos using his mobile camera, you can see some of those pictures below.

I started my journey from Bangalore on Friday afternoon in one KPN bus.  It was a Multi-axle bus and the road was also very good, so the journey was very comfortable. I reached Erode around 9.30 pm and one college staff was waiting for me. We had our dinner from Erode and went to college by one taxi car.  They had arranged my stay in the college guest house. It is a very good campus, and there are many colleges in that campus by the same management.  Next day during lunch time, the founding chairman also came for lunch in the guest house, some staff introduced me to him.  When I mentioned that I am from Kerala and working in Bangalore, he asserted that Kerala people are everywhere.  When I heard some history of that campus from one staff, it sounded astonishing.  The hospitality of the staff was gracious.  This is the second college I am visiting Tamil Nadu for a Python workshop, the other one was in Chennai.

The workshop started at 9.30 am with a small inauguration function.  Later I started with an introduction to Python and moved on to basic syntax.  Since they told they are using Windows, I showed Python from my Windows using VirtualBox.  I don't like to use it, but there was no other choice. It was just 1 or 2 students who had heard about Python before.  At the end of the lab session, I could see their happiness when they found a language which is very easy to learn.  I stressed the point that Python is a powerful general purpose programming language. I hope the session was well received.



In the lecture hall (morning)

This student was trying classes in Python

There was some joke, forgot...

 
     
IndentationError: expected an indented block      
Python is cool!

In the lab

by Baiju Muthukadan (noreply@blogger.com) at October 03, 2011 11:23 AM

September 30, 2011

Web browser automation testing using Selenium and Python

Baiju Muthukadan's Blog

Recently Selenium 2 has released with it's new WebDriver technology. Selenium WebDriver supports multiple web browsers like Firefox, Chrome and IE. Selenium WebDriver communicate with browser through its native API. Selenium Python bindings provide a convenient API to access functionalities of Selenium.

Recently I started writing some documentation for Selenium Python bindings. It still need lots of work, but now it would be good enough to start with Selenium. I am looking forward to your feedback!

EDIT (September 30 2011): The documentation has been moved to readthedocs site. And the source is hosted in Github.

by Baiju Muthukadan (noreply@blogger.com) at September 30, 2011 05:08 PM

September 23, 2011

Python workshop at ASIET

Pramode C.E - The GnuVision Blog

Python workshop at ASIET, Kaladi

Sep 23, 2011

Conducted a Python workshop yesterday for the IEEE student branch of ASIET (Adishankara Institute of Engineering and Technology, Kaladi). I had a chance to demonstrate a simple LED "magic trick" using the EzChronos and MSP Launchpad!

September 23, 2011 12:00 AM

September 18, 2011

Anagram Solver in C

Syntax

Hi, Here’s a small anagram solver written in C. It works based on generating permutations of given string and comparing them using a dictionary. For fast search in dictionary, the program first creates an index of the starting location of each alphabet. It takes a few minutes to process long words.

Here’s the source code. Suggestions are always welcome, Greetings :)

Update: There’s a little problem in using the term ‘anagram solver’ here. An anagram solver finds words from another valid word – But this program finds words from the characters of given valid/invalid word.  Thanks to technikhil for the info :)

Note: Realized that this implementation of anagram solver is inefficient. Will post a better one soon.

by ershad at September 18, 2011 05:58 AM

Getting started with MSP430 Launchpad on Debian

Pramode C.E - The GnuVision Blog

Getting started with MSP430 Launchpad on Debian

Sep 18, 2011

I am trying to get some demos running with an EzChronos and a couple of MSP430 Launchpad's. Here is a brief outline of the steps required to get your first "hello,world" running.

I had installed the MSP430 toolchain on a few machines sometimes back. The procedure was simple - pull out a set of scripts/patches from here and run one of the supplied scripts - this takes care of getting the core components - binutils, libc and gcc, applying the patches and building them. The procedure was painless. But it seems that the developers have abandoned this approach - the procedure to build the latest version (msp430-gcc version 4.5.3) is to download all the core components, apply the patches and do the build manually. This takes a bit more effort. Here is a document describing the process.

I was doing the build on Debian Squeeze - everything worked fine except when it came to building gcc. The version of GCC that was being compiled required newer versions of three libraries - gmp, mpfr, and mpc. The sources for these three libraries had to be downloaded and built following the instructions given here. Also, gdb ver 7.2 was not avaible - but ver 7.2a worked fine.

There is an excellent tool called mspdebug which can be used for flashing the MSP430G2231 on the launchpad and also for debugging.

Once the toolchain and "mspdebug" are built properly, we can write our "hello,world" program - lighting up an LED connected to P1.0 of the processor:

#include 
main() 
{
   WDTCTL = WDTPW + WDTHOLD;
   P1DIR = 1; P1OUT = 1;
}

The first line is for disabling the watchdog - a compile time option, "-mdisable-watchdog" can be used to do this in the C library startup code itself.

Compile the code with:

msp430-gcc -mmcu=msp430g2231 led.c

Flashing is done by invoking "mspdebug rf2500" and executing the commands:

erase
prog a.out

September 18, 2011 12:00 AM

September 15, 2011

TeXmaker: A LaTeX Editor for GNOME based Desktops

a world of my own » Linux

TeXmaker is a free software IDE for LaTeX typesetting in Gnome desktops. Its interface is simple yet powerful, more or less similar to Kile, making it easier for you to develop documents and presentations in vogue.

What is TeXmaker?

TeXmaker is an IDE for LaTeX made in Qt, is a free software (which means it is licensed with GPL) available in GNU/Linux as well as Windows. The interface of TeXmaker is almost similar to Kile – a KDE based LaTeX editor, which is considered to be the best one of its kind in GNU/Linux platform – the only drawback being it is meant only for KDE system. Even though you can install Kile in Ubuntu or any Gnome desktop, together with it will come all the dependency files. The advantage of TeXmaker over Kile is that it is just an application written in Qt, and it is also a cross-platform software.

Read the complete article at Ubuntu Manual.

Possibly Related Posts:


by ഞാന്‍||njaan at September 15, 2011 01:03 PM

ട്വിറ്റര്‍ മാധ്യമങ്ങള്‍ക്ക് ഒരു വിവര സ്രോതസ്

ബ്ലോഗ് ഭൂമി - e lekhanangal

സെപ്തംബര്‍ 8 ന് രാത്രി 11 മണി കഴിഞ്ഞതോടെ ഡല്‍ഹിയില്‍ വന്‍‌ശബ്ദത്തോടെ ഭൂചലനം ഉണ്ടായി. ഉടന്‍ തന്നെ ജനങ്ങളുടെ ഭയം അതേ ദിനം രാവിലെ സംഭവിച്ച ഹൈക്കോടതി- ബോംബ് സ്ഫോടനവുമായി ബന്ധപ്പെട്ടു എന്നത് സ്വാഭാവികം എന്നാല്‍ ഈ അവസരത്തില്‍ ചില മാധ്യമങ്ങള്‍ അവസരത്തിനൊത്ത് ഉയര്‍ന്നു. തല്‍‌ക്ഷണം തന്നെ ട്വിറ്ററില്‍ അടക്കം അവര്‍ ശബ്‌ദം ഭൂചലനത്തിന്റേതാണന്ന് എഴുതുക മാത്രമല്ല. Earthquake in Delhi. Send us your pictures/videos to email or tweet us #delhiearthquake ഇങ്ങനെ കൂടി ട്വിറ്ററില്‍ കുറിച്ചിട്ടു. ഒരേ സമയം തന്നെ എത്ര സമര്‍ത്ഥമായാണ് വാര്‍ത്താ ശേഖരണത്തിനും ഒപ്പം വാര്‍ത്ത ജനങ്ങളിലെത്തിക്കാനും അവര്‍ സോഷ്യല്‍ മീഡിയ ഉപയോഗിക്കുന്നത്.

കേരളത്തില്‍ പോയ ഒരു വര്‍ഷത്തിനിടെ എത്രയോ പ്രാവശ്യം അടിയന്തിരമായി ഇടപെടേണ്ട വാര്‍ത്താസംഭവങ്ങള്‍ ഉണ്ടായി, എന്നിട്ടും നമ്മള്‍ ട്വിറ്ററിനെയും ഫേസ്‌ബുക്കിനെയും കാര്യമായി വാര്‍ത്ത ശേഖരിക്കാനുള്ള ഒരു ഇടമായി കാണുന്നില്ല. ഉദാ: ഒരു വിമാനം തെന്നിമാറല്‍ അല്ലെങ്കില്‍ ആളില്ലാത്ത തിവണ്ടിമുറിച്ചുകടക്കല്‍ ഇടത്തെ അപകടങ്ങള്‍ . ഇവിടെ ഒക്കെ ജനങ്ങള്‍ അവരുടെ ക്യാമറ ഉപയോഗിച്ച് ദൃശ്യങ്ങള്‍ എടുക്കുന്നുണ്ട് അല്ലെങ്കില്‍ ട്വിറ്റില്‍ കുറിക്കുന്നുണ്ട്. മിക്കപ്പോഴും ഇത് റിപ്പോര്‍ട്ടര്‍മാര്‍ സ്ഥലത്തെത്തിയ ശേഷം ആകും ശേഖരിക്കപ്പെടുന്നത്. എന്നാല്‍ നിമിഷനേരം കൊണ്ട് തന്നെ ഇവയെല്ലാം യൂടൂബ് ലിങ്ക് വഴി ചാനലില്‍ കാണിച്ചുകൂടാ. കുറഞ്ഞ പക്ഷം ചിത്രങ്ങള്‍ എങ്കിലും ! ഇതിന് മാത്രമല്ല. നമ്മുടെ നാട്ടില്‍ നടക്കുന്ന ഇത്തരം പ്രധാന വിവരങ്ങള്‍ അവര്‍ മാധ്യമങ്ങളിലേക്ക് വിളിച്ച് പറയും മുന്നെ തന്നെ സോഷ്യല്‍ മീഡിയയില്‍ നിന്ന് സോഴ്സ് ചെയ്ത് എടുക്കാവുന്നതേയുള്ളൂ. വേണമെങ്കില്‍ ആ സംഭവ സ്ഥലത്തുള്ള വിശ്വസിനീയമായ ഒരാളെ ഫോണ്‍ ഇന്‍ ല്‍ കിട്ടുകയും ചെയ്യും, അല്ലെങ്കില്‍ ഉടനെ അവിടെ ചെല്ലാനിടയുള്ള റിപ്പോര്‍ട്ടര്‍ക്ക് ശരിയായ ഒരു സഹായിയായി ആദ്യവിവരം നല്‍കാന്‍ ഇങ്ങനെയുള്ളവര്‍ക്ക് ആകും.
ഡല്‍ഹി ഭൂചലന സമയത്ത് ഉപയോഗിച്ച #delhiearthquake എന്ന ടാഗില്‍ ഒരു സെക്കന്റില്‍ പത്തോളം സന്ദേശങ്ങള്‍ ആദ്യമിനുട്ടില്‍ തന്നെ വന്നുകൊണ്ടിരുന്നു. ഇത് ഒരു പക്ഷെ ആ ചാനലിലും മറ്റുള്ളവര്‍ക്കും കാര്യമായി തന്നെ പ്രയോജനപ്പെടും. സ്ഥലത്തെത്തുന്ന റിപ്പോര്‍ട്ടറുടെ ജോലി കൂടുതല്‍ എളുപ്പമാവുകയും ചെയ്യും. മേയ് മാസം ആദ്യം ഒസാമ ബിന്‍ ലാദന്റെ മരണം സ്ഥിരീകരിക്കപ്പെടുന്ന സമയത്ത് ഒരു സെക്കന്റില്‍ 5000 ട്വിറ്റ്കളാണ് പ്രവഹിച്ചത്. പിന്നീട് സംഭവിച്ച മുംബൈ ബോബ് സ്ഫോടന സമയത്തും സന്നദ്ധപ്രവര്‍ത്തകരെ എകോപിപ്പിക്കുന്നതിനും വാര്‍ത്ത ശേഖരിക്കാനും മികച്ച പിന്തുണയാണ് ട്വിറ്റര്‍ നല്‍കിയത്.

ഗൌരവമായ ജേണലിസത്തിന് ട്വിറ്റര്‍ എങ്ങനെ പ്രയോജനപ്പെടുത്താം.

  1. ബ്രേക്കിംഗ് ന്യൂസിന്റെ കണ്ടെത്തലിന് : സാമാന്യം നല്ല രീതിയില്‍ ട്വിറ്റ് ചെയ്യുന്ന മാധ്യമപ്രവര്‍ത്തകര്‍ക്ക് അപ്പപ്പോള്‍ തന്നെ വിവരം ‌@username ആയി കിട്ടും. ട്വിറ്ററില്‍ ഒരാള്‍ വായിക്കണം എന്ന് സന്ദേശം നല്‍കുന്നയാള്‍ ഉദ്ദേശിച്ചാല്‍ പ്രസ്തുതയാളുടെ ട്വിറ്റ് വിലാസത്തിന് മുന്നില്‍ @ ചേര്‍ക്കും. ഇത് വഴി ഒരു എസ് എം എസ് വായിക്കുന്ന ലാഘവത്തില്‍ അപ്പപ്പോഴുള്ള ബ്രേക്കിംഗ് ന്യൂസ് മാധ്യമപ്രവര്‍ത്തകര്‍ക്ക് അറിഞ്ഞു കൊണ്ടിരിക്കാം. ഇല്ലെങ്കില്‍ #ടാഗില്‍ ഒരു പ്രത്യേക വിവരം സാമാന്യത്തിലധികം വരുന്നുണ്ടന്ന് മനസിലായാല്‍ ഉടനെ തന്നെ വാര്‍ത്തയുടെ പ്രഭവകേന്ദ്രം കണ്ടെത്തി റിപ്പോര്‍ട്ടര്‍മാരെ വിന്യസിക്കാം. ഇനി ഒരു വാര്‍ത്ത അറിഞ്ഞു എന്ന് വയ്ക്കുക, കൂടുതല്‍ വിവരങ്ങള്‍ തേടണം എന്നാല്‍ റിപ്പോര്‍ട്ടര്‍മാര്‍ സംഭവസ്ഥലത്ത് എത്താന്‍ സമയവും എടുക്കും എങ്കില്‍ പുതിയ #ടാഗ് ഉചിതമായി നല്‍കിയാല്‍ മതി. ഡല്‍ഹി ഭൂചലന സമയത്ത് #delhiearthquake ആയിരുന്നു വിവരങ്ങളെ കോര്‍ത്തിണക്കാന്‍ ഉപയോഗിക്കപ്പെട്ടത്. സിറ്റിസണ്‍ ജേണലിസ്റ്റുകള്‍ എന്ന് വിളിക്കാവുന്ന സംഭവങ്ങള്‍ക്ക് സാക്ഷിയാകുന്ന ടെക് സാക്ഷരരായ പൊതുജനം വിവരം ബ്ലോഗിലിടാന്‍ മടിക്കും എന്നാല്‍ ഒരു എസ് എം എസ് പോലെ ലളിതമായ ഘടന ട്വിറ്റിനെ ഇവര്‍ക്കിടയില്‍ പ്രീയങ്കരമാക്കുന്നു. മൊബൈലില്‍ എടുത്ത പടം അല്ലെങ്കില്‍ ആദ്യമാത്ര പ്രതീകരണം ഒരു വരിയായി ട്വിറ്ററില്‍ ഇടുന്നു. അതുകൊണ്ടാണ് ഒരു വാര്‍ത്താമൂല്യം ഉള്ള സംഭവം നടക്കുന്ന അതേ സമയത്ത് തന്നെ നൂറുകണക്കിന് ട്വിറ്റുകള്‍ എത്തുന്നത്. സാങ്കേതികഭാഷയില്‍ TPSഎന്നാണ് പറയുന്നത് ട്വിറ്റ് പ്രതി സെക്കന്റ് ! . ഇത് നോക്കി സംഭവത്തിന്റെ വാര്‍ത്തയാഴം എളുപ്പത്തില്‍ മനസിലാക്കാം .

  2. അഭിമുഖം മികവുറ്റതാക്കാന്‍ : വാര്‍ത്താ മാധ്യമങ്ങളില്‍ അഭിമുഖം ഒഴിച്ചുകൂടാനാവാത്ത ഘടകമാണ്. രസമുള്ള അഭിമുഖത്തിന്റെ രസത്രന്ത്രം അപൂര്‍വമായതും കൃത്യമായ വിവരം ഊറ്റിയെടുക്കാനാവുന്ന ചോദ്യങ്ങള്‍ തന്നെ. ആദ്യന്തമായി ഇത് പത്രപ്രവര്‍ത്തകന്റെ ആഴത്തിലും പരപ്പിലും ഉള്ള വായനയെ ആശ്രയിച്ചിരിക്കും എന്നിരിക്കിലും സമര്‍ത്ഥമായി ട്വിറ്റര്‍ ഉപയോഗിച്ച് ഇന്ന് ചോദ്യങ്ങള്‍ പിറവി കൊള്ളുന്നുണ്ട്. ഉദാ: ഒരു കമ്പനി ഉടമയെ അല്ലെങ്കില്‍ രാഷ്ട്രീയ താരത്തെ ആണ് അഭിമുഖം ചെയ്യുന്നതെന്നിരിക്കട്ടെ , ആ സ്ഥാപനത്തിലെ സര്‍വവിവരവ്യാപിയായ ഒരാള്‍ / രാഷ്ട്രീയക്കാരന്റെ അടുത്ത അനുയായി അല്ലെങ്കില്‍ എതിരാളി നല്‍കുന്ന ഒരു ചോദ്യമുനക്ക് മൂര്‍ച്ചയേറും എന്ന് പറയേണ്ടതില്ലല്ലോ. ടിവി പരിപാടികളില്‍ ഇന്ന് ഒരോ പ്രത്യേക പരിപാടിയും നേരിട്ട് സം‌പ്രേഷണം ചെയ്യുന്ന സമയത്ത് തന്നെ അവര്‍ സ്‌ക്രീനില്‍ സ്ഥാപനത്തിന്റെ/പരിപാടിയുടെ ട്വിറ്റ് ഐഡി പ്രദര്‍ശിപ്പിക്കാറുണ്ട്. ഉടന്‍ തന്നെ കാഴ്ചക്കാരുടെ വക ചോദ്യങ്ങളെത്തി തുടങ്ങും. ഇതില്‍ നിന്നും കാമ്പുള്ളവ വാര്‍ത്തവതാരകന്റെ ശബ്ദത്തില്‍ എതിരെയിരിക്കുന്ന പാനലംഗങ്ങള്‍ക്ക് മുന്നില്‍ എത്തും. ചാനലില്‍ വിളിക്കുന്നതും ചോദ്യമെറിയാന്‍ ടെലഫോണ്‍ ക്യൂവില്‍ നില്‍ക്കുന്നതും ഒക്കെ പഴങ്കഥ എന്ന് പറയാം

  3. വിവരാധികാരികതയ്‌ക്ക് : ഒരു ബ്രേക്കിംഗ് ന്യൂസ് പരമ്പരാഗത രീതിയില്‍ എത്തിയാല്‍ ഉടനെ തന്നെ ആധികാരികത ഉറപ്പാക്കാനായും അതിന്റെ മറ്റ് അനുബന്ധവിവര ശേഖരണത്തിനും ട്വിറ്റ് ടാഗുകള്‍ നിരീക്ഷിക്കുന്നത് ഇന്ന് പതിവാണ്. മറ്റ് ചിലപ്പോള്‍ സം‌പ്രേഷണം ചെയ്ത് കൊണ്ടിരിക്കുന്ന /അച്ചടിച്ച് വന്ന റിപ്പോര്‍ട്ടുകളിലെ തെറ്റുകളോ അക്ഷരപിശാചോ വരെ കണ്ടുപിടിക്കാന്‍ സ്ഥാപനത്തിന്റെ ട്വിറ്റ് ഐഡിയിലേക്ക് വരുന്ന സന്ദേശങ്ങള്‍ നോക്കിയാല്‍ മതി. ഒരു മൊബീല്‍ നമ്പര്‍ കൊടുത്താല്‍ പോരെ എന്ന് കരുതാം എന്നാല്‍ എസ് എം എസ് അയക്കുന്നതില്‍ പ്രേക്ഷകര്‍ താത്പര്യം ഇല്ല എന്ന് ചില പഠനങ്ങള്‍ സൂചിപ്പിക്കുന്നു, കാരണം എസ് എം എസ് ഒരു നമ്പരിലേക്ക് മാത്രം പോകുന്ന വിവരമാണ് , പബ്ലിക് ഡൊമൈനില്‍ വിവരം എത്തുന്നുമില്ല ! എഴുതുന്നയാള്‍ക്ക് മാധ്യമത്തെ മാത്രമല്ല മറ്റുള്ളവരെ കൂടിയാണ് അറിയിക്കേണ്ടത്.

  4. കൂടുതല്‍ പ്രേക്ഷകര്‍ /വായനക്കാര്‍ : ഇപ്പോള്‍ നടക്കുന്ന പരിപാടി കാണാനായി/ ഇന്ന് പ്രസിദ്ധീകരിച്ച വാര്‍ത്ത വായിക്കാനായി ഉള്ള സന്ദേശങ്ങള്‍ ട്വിറ്റ് പേജില്‍ ഇടുന്നത് മാധ്യമത്തിന്റെ കാഴ്ചക്കാരുടെ എണ്ണം കുത്തനെ കൂട്ടും. പ്രത്യേകിച്ചും എന്തെങ്കിലും മൌലികത/പ്രത്യേകത ഉള്ള വിവരം ആണെങ്കില്‍ . ട്വിറ്റര്‍ ഒരു ഉച്ചഭാഷിണി (Twitter amplifying news to traditional media) എന്നാണ് വെബ് ലോകത്തെ വര്‍ത്തമാനം അത് ഒരു പരിധി വരെ ശരിയുമാണ്. ഒരു ട്വിറ്റ് മറ്റൊരാള്‍ എടുത്ത് വീണ്ടും ട്വിറ്റ് ചെയ്യുന്നതിനെ റീട്വീറ്റ് അല്ലെങ്കില്‍ RT എന്നാണ് പറയുന്നത്. ചില സന്ദേശങ്ങള്‍ മിനിട്ടുകള്‍ക്കുള്ളില്‍ തന്നെ ആ‍യിരക്കണക്കിന് പുനപ്രക്ഷേപണം നടക്കും. ഇത് മാധ്യമത്തിനോ അല്ലെങ്കില്‍ അതിന്റെ ഔദ്യോഗിക വെബ്സൈറ്റിലോ ഉള്ള സന്ദര്‍ശകരുടെ എണ്ണം പല മടങ്ങ് വര്‍ധിപ്പിക്കും

  5. പണച്ചിലവ് കുറവ് : ട്വിറ്ററില്‍ എത്താനും സജീവമായി ഉപയോഗിക്കാനും പ്രത്യേകിച്ച് പണച്ചിലവ് അധികമായി ഉണ്ടാകുന്നില്ല, നിലവിലുള്ള ഇന്റര്‍നെറ്റ് അടിസ്ഥാന സൌകര്യങ്ങള്‍ തന്നെ ധാരാളം. റിപ്പോര്‍ട്ടര്‍ മാര്‍ക്കെല്ലാം ട്വിറ്റ് ഐഡി ഉണ്ടെങ്കില്‍ സംഗതി കൂടുതല്‍ എളുപ്പമായി എന്ന് പറയാം. വാര്‍ത്ത തേടുന്ന സ്ഥലത്തുള്ളവര്‍ റിപ്പോര്‍ട്ടര്‍മാര്‍ , ന്യൂസ് റൂം , കാഴ്ചക്കാര്‍ , സംഭവത്തിന്റെ ആദ്യ ദൃക്‌സാക്ഷികള്‍ , മറ്റ് വാര്‍ത്താ ഉറവിടങ്ങള്‍ എന്നിവയെ മികച്ച രീതിയില്‍ എകോപിപ്പിച്ച് വാര്‍ത്തയ്‌ക്ക് ആധികാരികതയും മൂല്യവും പുതിയ ഡയമന്‍ഷനുകളും ഉണ്ടാക്കാന്‍ എളുപ്പമാണ്.

  6. ഹാഷ് ടാഗ് (#incident) , @username അടയാളം , ടീ ട്വീറ്റ് (RT) , ലിസ്റ്റുകള്‍ , ഡയറക്‍ട് മെസേജ് (DM) ,സേവ്ഡ് സര്‍ച്ചുകള്‍ , വെബ് വിലസത്തെ ചെറുതാക്കല്‍ (URL Shortners) എന്നീ അനുബന്ധ ഘടകങ്ങള്‍ വേണ്ട വിധം പ്രയോജനപ്പെടുത്തിയാല്‍ ട്വിറ്റര്‍ ഒന്നാം തരം വാര്‍ത്താ സഹായി ആണ്

  7. ഒപ്പം സ്ഥാപനത്തിന്റെ ലോഗോ / റിപ്പോര്‍ട്ടര്‍മാരുടെ ഫോട്ടോ എന്നിവയും അകമ്പടിയായി ചെറുതും കുറിക്ക് കൊള്ളുന്നതുമായ ഒരു ഒറ്റവരി വ്യക്തി/സ്ഥാപന വിവരണക്കുറിപ്പ് കൂടി എഴുതിയാല്‍ ലക്ഷണമൊത്ത ഒരു ട്വിറ്റ് ഹാന്‍ഡില്‍ ആയി .

    എല്ലാത്തിലും ഉപരിയായി വിവരങ്ങള്‍ ട്വിറ്റ് ചെയ്യുന്നതും ട്വിറ്ററില്‍ നിന്ന് വിവരം ശേഖരിക്കുന്നതും ഒരു നിത്യാഭ്യാസമാക്കിയാല്‍ (Habit) വാര്‍ത്താമൂല്യം കൂട്ടാം വിവരങ്ങള്‍ തല്‍‌ക്ഷണം അറിയുകയും ചെയ്യാം. കമ്പ്യൂട്ടറിനെക്കാളും കൂടുതല്‍ ഉപയോക്താക്കള്‍ മൊബൈല്‍ ഫോണ്‍ വഴിയാണ് ട്വിറ്റര്‍ ഉപയോഗിക്കുന്നത് എന്നതിനാല്‍ സമീപകാലത്ത് തന്നെ കൂടുതല്‍ ജനകീയമാകാന്‍ സാധ്യതയുള്ളതിനാല്‍ വാര്‍ത്താമാധ്യമങ്ങള്‍ക്ക് ഒഴിവാക്കാനാകാത്ത അക്ഷയഖനിയാണ് ഇത് എന്നതില്‍ സംശയമില്ല



by വി. കെ ആദര്‍ശ് (noreply@blogger.com) at September 15, 2011 11:33 AM

September 13, 2011

Accessing The EZ430 Chronos Accelerator data with Python

Pramode C.E - The GnuVision Blog

Accessing EZ430-Chronos Accelerator data with Python

Sep 13, 2011

I am trying to use the amazing EZ430-Chronos to set up some interesting demos. Gaining access to the RF access point in Python through the serial interface is very simple. The protocol used by the Chronos firmware for accelerator data transfer is documented here.

Here is a Python function which reads accelerator data:

def get_acc_data(fd):
	cmd = '\xff\x08\x07\x00\x00\x00\x00'
	r = fd.write(cmd)
	r = fd.read(7)
	if(ord(r[3]) == 1): return [ord(x) for x in r[4:7]]
	return []

Here is the Github link for the code. I have a simple "zero-crossing" detector in the repo.

September 13, 2011 12:00 AM

September 05, 2011

സിജിയാര്‍ -അധ്യാപകദിനക്കുറിപ്പ്

ബ്ലോഗ് ഭൂമി - e lekhanangal

ഒരു അധ്യാപകദിനത്തിലാണ് ഈ കുറിപ്പെഴുതുന്നത്. പല തരത്തിലും സ്വാധീനിച്ച ഗുരുക്കന്മാര്‍ എല്ലാവര്‍ക്കും ഉണ്ടാകും. അറിവിന്റെ അഗാധത, വാഗ്ദോരണിയുടെ സൌന്ദര്യം ഒപ്പം സ്നേഹം ചാലിച്ച പെരുമാറ്റം എന്നിവ കൊണ്ട് ഞങ്ങളെ സ്വാധീനിച്ച ഒരു അധ്യാപകനെ കുറിച്ചുള്ള ഓര്‍മയാണ് ഇവിടെ പങ്കു വയ്‌ക്കുന്നത്.

കേരള സര്‍വകലാശാലയിലെ ഭാവിപഠന വകുപ്പില്‍ എം.ടെക് വിദ്യാര്‍ത്ഥികളായിരുന്ന ഞങ്ങള്‍ ഒന്‍പത് പേരുടെയും പ്രീയപ്പെട്ട അധ്യാപകനായ ഡോ.സി.ജി രാമചന്ദ്രന്‍ നായര്‍ സാറിന്റെ ലളിതമായ പെരുമാറ്റം സമയനിഷ്ഠ , ചിട്ടയായ വസ്ത്രധാരണം എന്നിവ ഇപ്പോഴും പാഠം ആണ്. ഒപ്പം എഴുപത്തിയഞ്ചാം വയസിലും ചെറുപ്പത്തിന്റെ പ്രസരിപ്പോടെ കഥകളില്‍ നിന്ന് കഥകളിലേക്ക് ഊളിയിട്ട് എത്ര സരസമായാണ് സിജിയാര്‍ ക്ലാസ് എടുത്തിരുന്നത്, മണിക്കൂറുകള്‍ കടന്നു പോകുന്നത് അറിയുകയേ ഇല്ല. സെമസ്റ്റര്‍ അന്ത്യ പരീക്ഷയില്ലാത്ത സയന്‍സ് ഫിക്ഷന്‍ എന്ന പേപ്പര്‍ ആണ് സര്‍ പഠിപ്പിച്ചിരുന്നത്. ആഴ്ചയിലൊരിക്കലുള്ള ക്ലാസിനായി തന്റെ സ്വന്തം മാരുതി 800 ഡ്രൈവ് ചെയ്ത് വരുന്നത് കാണുന്നത് തന്നെ രസകരമായിരുന്നു. പഠിപ്പിക്കാന്‍ പുസ്തകം ഒന്നും സാറിന് ആവശ്യമില്ലായിരുന്നു. പരീക്ഷയില്ല എന്ന ആശ്വാസത്തില്‍ ഞങ്ങള്‍ക്കും നോട്ട് പേപ്പര്‍ പോലും ഇല്ലായിരുന്നു എന്നത് മറ്റൊരു വസ്തുത, എന്നിരിക്കിലും സര്‍ പഠിപ്പിച്ച ഒരോ കൃതിയും ഇന്നും ഓര്‍മയില്‍ തെളിമയോടെ നില്‍ക്കുന്നു. ഒരോ ശാസ്ത്രജ്ഞരെക്കുറിച്ച് അല്ലെങ്കില്‍ ശാസ്ത്രസാങ്കേതിക നേട്ട-കോട്ടങ്ങളെ പറ്റി പറയുമ്പോഴും ഒരുപിടി അകമ്പടി വസ്തുതകളാല്‍ വിവരസമ്പന്നമാക്കി, ഞങ്ങളുടെ ക്ലാസുകളെ പ്രൊഫസര്‍ ഹരം പിടിപ്പിച്ചിരുന്നു.

സിജിയാറിനെ പറ്റി ഒരു വരിയില്‍ ഇങ്ങനെ ഒതുക്കുന്നത് സാഹസമാണ് എങ്കിലും: അന്താരാഷ്‌ട്ര പ്രശസ്തരായ ശിഷ്യസമ്പത്തും സഹപ്രവര്‍ത്തക ബന്ധവും ഉള്ള ശാസ്ത്രജ്ഞന്‍ ,കേരള സര്‍വകലാശാല രസതന്ത്രവകുപ്പിന്റെ അധ്യക്ഷനും സയന്‍സ് ഡീനും, സര്‍വവിജ്ഞാനകോശം ഇന്‍സ്റ്റിട്യൂട്ടിന്റെ ഡയറക്‍ടറും ചീഫ് എഡിറ്ററും, കേരള സര്‍ക്കാരില്‍ ശാസ്ത്ര സാങ്കേതിക വകുപ്പ് സെക്രട്ടറി, അമേരിക്ക-ഇംഗ്ലണ്ട് അടക്കമുള്ള വിദേശരാജ്യങ്ങളില്‍ വിസിറ്റിംഗ് പ്രഫസര്‍ ,ഇരുപത്തിയഞ്ചിലധികം മലയാളം ശാസ്ത്രപുസ്തകങ്ങളുടെ രചയിതാവ്, പ്രഭാഷകന്‍ , ഫ്രഞ്ച്, ജര്‍മന്‍ ഭാഷകളില്‍ പാണ്ഡിത്യമുള്ള ഇദ്ദേഹം മാതൃഭാഷ ഫ്രഞ്ച് ആയ ഒരു ഗവേഷണ ബിരുദവിദ്യാര്‍ത്ഥിയെ ആ ഭാഷയില്‍ തന്നെ ഗൈഡ് ചെയ്തിട്ടുമുണ്ട്.

സാധാരണ വിശ്രുതരായ അധ്യാപകര്‍ക്ക് രാഷ്ട്രീയക്കാരോട് അത്ര ബഹുമാനം ഉണ്ടാകാന്‍ വഴിയില്ല. എന്നാല്‍ നെഹ്രുവിനെ പറ്റിയായാലും ഇയെമ്മെസിനെ പറ്റിയായാലും ഇനി കരുണാകരനായാലും സാറിന് നൂറ് നാവാണ്. എത്രയോ വ്യക്തികളുടെ ജീവിതരേഖയും നേട്ടങ്ങളും വിശദമായി ക്ലാസില്‍ പറഞ്ഞിരിക്കുന്നു ഒരു തവണ പോലും ആരെയെങ്കിലും പറ്റി തെറ്റായ ധ്വനി പോലും വരുന്ന വാക്കുകള്‍ കേട്ടിട്ടേയില്ല, ഒരു പക്ഷെ അങ്ങനെ പറയേണ്ട അവസരത്തില്‍ പോലും സംസാരത്തിലോ പെരുമാറ്റത്തിലോ അങ്ങനെ വരാതിരിക്കാന്‍ സര്‍ സൂക്ഷിച്ചിരുന്നു. സാഹിത്യത്തില്‍ ഇത്രയേറെ കമ്പമുള്ള ഒരു ശാസ്ത്രാധ്യാപകനെ പഠനക്കാലയളിവില്‍ ഞങ്ങള്‍ക്കാര്‍ക്കും കണ്ടെത്താനായിട്ടില്ല. ശാസ്ത്രത്തിന്റെ രീതിയെ പറ്റി സര്‍ പറയുന്ന ഒരു കഥ ഇങ്ങനെയാണ്. “അല്പം അകലെ മേഞ്ഞിരുന്ന ഒരു കുതിരയ്‌ക്ക് എത്ര പല്ലുകള്‍ ഉണ്ടെന്നതിനെ പറ്റി രണ്ടു ശാസ്ത്രജ്ഞര്‍ തമ്മില്‍ മൂത്ത തര്‍ക്കം നടക്കുകയായിരുന്നു. ഒരാള്‍ പറഞ്ഞു 'X' പല്ലെന്ന് രണ്ടാമന്‍ 'Y' എന്നും. അവരവരുടെ സീറ്റിലിരുന്ന് മുയലിന് മൂന്ന് കൊമ്പ് എന്ന കണക്കേ സൈദ്ധാന്തിക വാദങ്ങള്‍ സമര്‍ത്ഥിച്ചിരുന്നത് കേട്ടിരുന്ന ഒരു നാട്ടിന്‍‌പുറത്തുകാരന്‍ കുതിരയുടെ വായ നയത്തില്‍ തുറന്ന് നോക്കി 'Z' പല്ലുകള്‍ ഉണ്ടെന്ന് ഇവരിരുവരോടും വിനയപൂര്‍വം പറഞ്ഞു, ഒപ്പം നിങ്ങള്‍ വൃഥാ സമയം പാഴാക്കുകയാണന്നും” ഇതിന്റെ സാരാംശമായി സര്‍ ഊന്നിപ്പറയുന്നത് ഒരു ശാസ്ത്രവിദ്യാര്‍ത്ഥിക്ക് നാട്ടിന്‍പുറത്തുകാരന്റെ നിരീക്ഷണമാണ് വേണ്ടതെന്നാണ്. ദന്തഗോപുരങ്ങളിലിരുന്ന് വാദിക്കാതെ പരീക്ഷണശാലയിലും പ്രശ്‌ന മേഖലയിലും ചെന്ന് ശാസ്ത്രീയമാര്‍ഗത്തിലൂടെ സത്യം കണ്ടുപിടിക്കുക തന്നെ വേണമെന്ന് ആവര്‍ത്തിച്ച് പറയും. നേരത്തെ ക്ലാസിലും പുറത്തും പറഞ്ഞ പല കഥകളും ആവര്‍ത്തിക്കുമ്പോള്‍ പെട്ടെന്ന് 'A gentleman is one who can patiently hear an anecdote for the second time and still pretend that he is hearing it for the first time!' എന്ന ഉദ്ധരണി തൊടുത്തുവിടുന്നത് ഒരു പക്ഷെ ഞങ്ങള്‍ക്ക് ബോറടിക്കും എന്ന് തോന്നിയിട്ടാകാം. പക്ഷെ സര്‍ അറിയുന്നില്ലായിരുന്നിരിക്കാം ഒരോ പ്രാവശ്യവും ആവര്‍ത്തിക്കുന്ന കഥകള്‍ക്കൊപ്പമുള്ള വിവരങ്ങള്‍ , അതിന്റെ ഭാഷ സൌന്ദര്യം എന്നിവ ആവര്‍ത്തിക്കുന്നില്ലന്ന്. എന്‍ വി കൃഷ്‌ണവാരിയരെ പറ്റിപറയുമ്പോള്‍ എത്ര വാചാലനാകാറുണ്ടെന്ന് ഞങ്ങള്‍ക്കറിയാം, അതില്‍ പിന്നെയാണ് എന്‍ വി സാഹിത്യം പരിചയപ്പെട്ടതും. ശാസ്ത്രജ്ഞാനം സൌന്ദര്യാസ്വാദനത്തിന് തടസമല്ല എന്ന എന്‍ വി സിദ്ധാന്തം സിജിയാറിന്റെ കാര്യത്തിലും നൂറു ശതമാനം ശരിയായിരുന്നു.

സര്‍ ഞങ്ങളെ പഠിപ്പിച്ചിരുന്ന വിഷയത്തിലേക്ക് വരാം ശാസ്ത്രകല്പിത കഥാലോകത്തെ അതികായരായ ഐസക് അസിമോവ്,ആര്‍തര്‍ സി ക്ലര്‍ക്ക് എന്നിവരെയും കൃതികളേയും ആവേശത്തോടെ പഠിപ്പിക്കുമ്പോള്‍ ഭാരതീയ ഭാഷകളിലെ സയന്‍സ് ഫിക്ഷന്‍ ശാഖ പൊതുവില്‍ ദരിദ്രമാണന്നും പ്രത്യേകിച്ചും കേരളത്തില്‍ , ആകെ ഒരു നേട്ടം എന്ന് പറയാനാകുന്നത് ജയന്ത് നാര്‍ലിക്കറുടെ മറാത്ത,ഹിന്ദി എഴുത്തുകള്‍ മാത്രമാണന്ന് ഓര്‍മ്മിപ്പിക്കും. ആ മാസമാണ് ജി ആര്‍ ഇന്ദുഗോപന്റെ ‘ഐസ് -196 ഡിഗ്രി സെല്‍‌ഷ്യസ് ‘ എന്ന കൃതി പുസ്തകരൂപത്തില്‍ വന്നത്. സര്‍ ഇപ്പോള്‍ മലയാളത്തില്‍ കൃതികള്‍ ഉണ്ടെന്നും ഐസ് അതില്‍ ഒന്നാണന്നും പറഞ്ഞ് ഒരു കോപ്പി നല്‍കി. അടുത്ത ആഴ്ച എന്തോ അസൌകര്യമായതിനാല്‍ വരാന്‍ ആയില്ല ആ ഒഴിവില്‍ ജി.ആര്‍ ഇന്ദുഗോപനെ തന്നെ ഞങ്ങള്‍ ക്ലാസെടുക്കാന്‍ വിളിച്ചു. ശാസ്ത്രകഥ മാത്രമല്ല ആ എഴുത്തിന്റെ രസതന്ത്രം കൂടി അറിയണമല്ലോ. അടുത്ത ക്ലാസ് ഊഴത്തില്‍ പതിവിലും ഊര്‍ജസ്വലനായാണ് അതും ഇന്ദുഗോപന്റെ പുസ്തകവും പിടിച്ച് ക്ലാസില്‍ എത്തിയത്, ഈ കൃതി ഇംഗ്ലീഷില്‍ ആയിരുന്നെങ്കില്‍ ഇതിലും നന്നായി വിറ്റുപോകും എന്ന് സര്‍ പറഞ്ഞു, പോയ ആഴ്ച ഇന്ദുഗോപനെ വിളിച്ചു കൊണ്ടുവന്ന വിവരം ഞങ്ങള്‍ പറഞ്ഞപ്പോള്‍ സര്‍ ഉത്സാഹത്തോടെ എഴുത്തുകാരനോട് ബന്ധപ്പെടാനും ഒപ്പം അങ്ങോട്ടേക്ക് വിളിക്കാന്‍ മൊബൈല്‍ നമ്പറും വാങ്ങി. തൊട്ടടുത്ത ഓണപ്പതിപ്പുകളില്‍ ഒന്നില്‍ ഒരോ മേഖലയിലേയും പ്രശസ്തരോട് അവരുടെ തട്ടകത്തിലെ യുവനാമ്പുകളെ പരിചയപ്പെടുത്താന്‍ ആവശ്യപ്പെട്ടു. സ്വഭാവികമായും ഡോ.സിജിയാറിന് ഒരു യുവശാസ്ത്രജ്ഞനെ പരിചയപ്പെടുത്തേണ്ട ചുമതലയായി, അതനുസരിച്ച് ഒരാളെ കൃത്യമായി അവതരിപ്പിച്ചു, ഒപ്പം അവസാന ഭാഗത്തായി ശാസ്ത്രത്തിന്റെ വേലി കടന്ന് സാഹിത്യത്തെ കൂടെക്കൂട്ടി, ഇതാ ശാസ്ത്രകല്പിതകഥാ ലോകത്ത് പ്രതീക്ഷയര്‍പ്പിക്കാവുന്ന ഒരു യുവാവിനെ കൂടി പരിചയപ്പെടുത്തുന്നു എന്ന മുഖവുരയോടെ ഇന്ദുഗോപനെയും പരാമര്‍ശിച്ചു.

നെഹ്രുവിനെ പറ്റി സിജിയാര്‍ പറയാറുള്ളത് ഇങ്ങനെയാണ് “നമ്മള്‍ ഭാഗ്യവാന്മാരാണ് . നെഹ്രു നമ്മുടെ നാടിന് കൈവന്ന ഭാഗ്യം തന്നെയായിരുന്നു, പണ്ഡിറ്റ് നെഹ്രുവിനെ പോലെ ശാസ്ത്രാവബോധവും ശാസ്ത്രാഭിമുഖ്യവും അതോടോപ്പം തന്നെ സൌന്ദര്യാസ്വാദന ത്വരയും പ്രകൃതി സ്നേഹവും ഒത്തിണങ്ങിയ ബഹുമുഖ പ്രതിഭയായ ഒരു മഹാപുരുഷനെ രാഷ്ട്രത്തിന്റെ പ്രഥമ പ്രധാന മന്ത്രിയായി ലഭിച്ച ഭാഗ്യവാന്മാര്‍ “ ഡോ. സി.ജി രാമചന്ദ്രന്‍ നായരുടെ കാര്യത്തിലും ഇത് നൂറു ശതമാനം ശരിയാണന്ന് ഒരു പ്രാവശ്യമെങ്കിലും ക്ലാസില്‍ ഇരുന്ന ഭാഗ്യവാന്മാരായ വിദ്യാര്‍ത്ഥികള്‍ അല്ലെങ്കില്‍ പ്രഭാഷണം കേട്ടവരോ ശരിവയ്‌ക്കും.


(കഴിഞ്ഞ അധ്യാപകദിനത്തില്‍ എഴുതിയ കുറിപ്പ്, പിന്നീട് മാതൃഭൂമി ആഴ്ചപതിപ്പിലെ മധുരച്ചൂരല്‍ പേജില്‍ വന്നിരുന്നു)

by വി. കെ ആദര്‍ശ് (noreply@blogger.com) at September 05, 2011 06:46 AM

September 04, 2011

The Play framework makes developing web apps with Java fun!

Pramode C.E - The GnuVision Blog

The Play framework makes developing web apps with Java fun!

Sep 4, 2011

My students know me to be a "certified Java hater", so it may surprise them to know that these days, I am busy coding not in C/asm/Python, but in JAVA!!

How did this happen?

I was looking for a web framework to support the development of a site (for a new venture I am going to launch shortly). I had checked out almost all the Python frameworks, and had a brief fling with Rails. I heard rave reviews of a new kid on the block, called Play on Hacker News and thought I should try it out ...

A few weeks later, I have a small "e-learning" app ready in just about 1300 lines of code; and I enjoyed every moment of writing it! Let me put down some of my observations about Play.

First, the documentation is superb. If you are an experienced developer, you can learn a lot just by reading good code. The Play developers walk you through the code of a sample application in which they use almost all the stuff which is routinely needed in a typical web app. Midway through this code walk-through, you will be ready to start with your app. The walk-through is complemented by a more elaborate set of documents explaining each feature in detail. There were only very few instances during the development of my app when I had to look outside the official docs.

Play combines the benefits of static typing with the dynamism of a language like Python. You start the Play server, edit your code, save it and it is automagically compiled and loaded - the development cycle is as fast as that of Python! Plus, you get the benefit of static typing. There are endless debates regarding static vs dynamic typing - my personal experience is that as your codebase grows in size, you definitely need all the help you can get from the compiler and an intelligent IDE like Eclipse (with my old-school Unix background, I was never really a fan of IDE's - but I now realize that I was prejudiced - the support Eclipse offers for stuff like refactoring is very useful).

Play is full-stack. Everything you need to get most of your routine work done is integrated into the core; there is also a growing list of contributed modules. Play uses the production-quality web server "Netty" by default - so deployment is very easy (I use Nginx as a front-end because I have a couple of other stuff running on my server).

Play feels light-weight and very "Unixy" (ok .. this is subjective .. you will really have to use the framework to get the "feel")!

Error message appear neatly formatted in the browser window.

Play comes with integrated Unit/Selenium tests (which you can run in the browser itself).

There is a "CRUD" module which uses introspection (of the model classes) to automatically generate forms. This is very useful for building an "admin" interface.

Play uses JPA stuff for persistence ... I have no experience with these things, but I hear that they are very tricky (which I don't think is a problem with JPA/Hibernate ... I had trouble understanding SQLAlchemy ... maybe, objects and relational algebra don't really mix well).

The only real disadvantage with Play (especially for people coming from Python/Ruby) may be the fact that it uses Java - but don't worry, there is a Scala version of Play under development!

The important thing for me was that the framework appeared intuitive and very "logical". I was having fun using it, and I was being very productive! Maybe, you will feel the same when you give it a spin!

September 04, 2011 12:00 AM

August 31, 2011

Recording screencasts on Debian with ffmpeg and the Blue Yeti USB Microphone

Pramode C.E - The GnuVision Blog

Recording screencasts on Debian with ffmpeg and the Blue Yeti USB Microphone

Aug 31, 2011

I needed a good setup for recording screencasts on GNU/Linux. I had earlier tried using an ordinary headset and tools like "recordmydesktop". The audio/video quality I got was poor (maybe it was because of my lack of experience dealing with media stuff in general). I decided to try something different.

First, I did some research on audio recording equipment. The general opinion seems to be that the built-in sound card introduces lots of noise into the recording - so for better quality, you had to use some kind of hardware which performed the analog-to-digital conversion stuff on its own, without depending on the PC soundcard. These devices are in general expensive (and there was little mention of compatibility with GNU/Linux). It was then that I stumbled upon a USB Mic called the "Blue Yeti" available for $99 on Amazon:

Blue Yeti on Amazon

One or two reviewers had mentioned that the mic works flawlessly on GNU/Linux! Based on these reviews, I purchased a "Yeti" a few days back:

The mic can do some interesting things, as demonstrated by this detailed review!

Getting the mic working with Debian was easy. There was some confusion with gnome-sound-recorder choosing the built-in soundcard as the default device; this was changed by creating a .asoundrc (under the login directory) which looks like this:

pcm.!default {
    type hw
    card 1
}
ctl.!default {
    type hw           
    card 1
}

The "card" number of the Yeti was identified by running "arecord -l"; the builtin soundcard was "card 0" and the Yeti was "card 1". With this change, gnome-sound-recorder had no trouble recording and playing back sound through the Yeti (the Yeti can be used as a sound output device also)!

For recording screencasts, I tried out "ffmpeg" as described in this excellent article. The basic idea is to use ffmpeg to capture the video/audio in raw format and perform compression later. As compression is the compute intensive part, not doing it in real-time makes it easy to capture at a good frame rate even on a low-end system (my PC has an AMD Sempron processor). The article explains how to use ffmpeg for screencasts on Ubuntu - I had to do one or two small tweaks to make it work on Debian.

To install the packages listed here, I had to add debian-multimedia.org to my /etc/apt/sources.list; I didn't have to compile x264 because libx264 also was available as a Debian package. Ffmpeg had to be compiled from source (I used version 0.6.3 as the latest version needed more recent versions of some of the installed libraries).

Here is the script I use for recording:

ffmpeg -f alsa -ac 2 -i hw:1,0 -f x11grab -r 30 -s $1x$2 -i :0.0+$3,$4 -acodec pcm_s16le 
-vcodec libx264 -vpre lossless_ultrafast -threads 0 $5.mkv

Note the use of "-i hw:1,0" - this is needed because I am not using pulseaudio as the input source. The numbers (1,0) were obtained by running "arecord -l" (card 0 device 1).

That's all you need to create quality screencasts on GNU/Linux!

August 31, 2011 12:00 AM

August 24, 2011

വലിയ മാങ്ങയും കണ്ണിമാങ്ങയും പിന്നെ അയിഷയും!

കിഴക്കുനോക്കിയന്ത്രം

അയിഷ സ്കൂള്‍ വിട്ടു വന്നതാണ്. അച്ഛനും അനിയനും മുറ്റത്തു നിന്നും മാവിന്റെ മുകളിലേക്കുനോക്കി നില്‍ക്കുന്നുണ്ട്. നോക്കിയപ്പോള്‍ മാങ്ങ പറിക്കാനായി മുണ്ടും മടക്കിക്കുത്തി അമ്മ മാവിന്റെ മുകളില്‍. അച്ഛന്‍ താഴെ നിന്നും ആ മാങ്ങ, ഈ മാങ്ങ എന്നൊക്കെ നിര്‍ദ്ദേശങ്ങള്‍ കൊടുക്കുന്നു. അമ്മയതൊക്കെ പറിച്ചു താഴേക്കിടുന്നുമുണ്ട്. അതു കണ്ടതോടെ അയിഷയും നിര്‍ദ്ദേശങ്ങള്‍ കൊടുക്കാന്‍ തുടങ്ങി. നിര്‍ദ്ദേശങ്ങള്‍ക്കിടയില്‍ അവളുടെ കണ്ണുചെന്നു നിന്നത് അമ്മയുടെ ഇടതുവശത്തുള്ള കൊമ്പിലെ വലിയ മാങ്ങയിലാണ്. "അമ്മേ അതൊന്നു പറിച്ചു തരുമോ?" അവള്‍ ചോദിച്ചു. 
"നിനക്കെന്തിനാ ഇത്രയും വലിയ മാങ്ങ? വേണമെങ്കില്‍ ഒരു കണ്ണിമാങ്ങ പറിച്ചു തരാം". അമ്മയവളെ കളിയാക്കി. "ങ്ഹും..." അവള്‍ ഒന്നു ചിണുങ്ങിക്കാണിച്ചു. പക്ഷേ പെട്ടെന്നാണ് അവളുടെ മുഖം വിടര്‍ന്നത്, ഉടന്‍ ഒരാവശ്യവും. "എനിക്കു രണ്ടു മാങ്ങയും വേണം. പറിച്ചിട്ടു താഴെക്കിടണ്ട. അമ്മയുടെ കയ്യില്‍ വച്ചാല്‍ മതി".  "എന്റെ കയ്യില്‍ വച്ചാല്‍ എങ്ങിനെയാ നിനക്കു മാങ്ങ കിട്ടുക?" അമ്മയുടെ മറുചോദ്യം. "അമ്മ മാങ്ങ പറിക്കൂ എന്നിട്ടു പറയാം." അവള്‍ ഇത്തിരി ശുണ്ഠിയോടെ ചിണുങ്ങിപ്പറഞ്ഞു. 
എന്തായാലും അവളുടെ ശുണ്ഠി തീര്‍ക്കാനായി ഒരു കണ്ണിമാങ്ങയും ഒരു വലിയ മാങ്ങയും പറിച്ചെടുത്ത് അമ്മ കയ്യില്‍ വച്ചു. "ഇനി അതു രണ്ടും ഒരുമിച്ചു പിടിച്ചു നിലത്തേക്കിട്ടേ.." അയിഷയുടെ അടുത്ത ആവശ്യം! "ന്തെല്ലാം ആവശ്യങ്ങളാ കുട്ട്യേ നിനക്ക്." അമ്മ ചോദിച്ചു. "അതു രണ്ടും ഒരുമിച്ചു താഴേക്കിടൂ..." അമ്മ പറഞ്ഞതു കേട്ടില്ലെന്ന മട്ടില്‍ അവള്‍ വീണ്ടും പറഞ്ഞു. "അവളു പറഞ്ഞതല്ലേ , ചെയ്തുകൊടുത്തേരെ" അതു പറയുമ്പോള്‍ അച്ഛന്റെ ചുണ്ടില്‍ ഒരു പുഞ്ചിരി വിരിയുന്നുണ്ടായിരുന്നു. അമ്മ രണ്ടുമാങ്ങയും ഒരുമിച്ചു താഴേക്കിട്ടു. അയിഷയുടെ മുന്നിലായി രണ്ടു മാങ്ങയും ഒരുമിച്ചു നിലത്തുവീണു. "അമ്മ ഗലീലിയോയായേ.....രണ്ടു മാങ്ങയും ഒരുമിച്ചു താഴെ വീണേ.." അയിഷയുടെ ആഹ്ലാദം വളരെ ഉച്ചത്തില്‍ തന്നെയായിരുന്നു.  മരത്തിനു മുകളില്‍ നിന്നും താഴെ നിന്നും ഒരേ സമയം പൊട്ടിച്ചിരികളുയര്‍ന്നു. കാര്യമൊന്നും മനസ്സിലായില്ലെങ്കിലും അനിയനും കൈകൊട്ടിച്ചിരിച്ചു. "ഗലീലി അങ്ങിനെ ചെയ്തോ എന്നൊന്നും അറിയില്ല, പക്ഷെ വലിയ മാങ്ങ, ചെറിയ മാങ്ങ എന്നൊന്നുമില്ല, ഒരുമിച്ചു നിലത്തേക്കിട്ടാല്‍ അവ ഒരുമിച്ചേ നിലത്തുവീഴൂ.." ചിരിയടക്കാന്‍ പാടുപെട്ടിട്ടാണെങ്കിലും അച്ഛന്‍ അവളെ അടുത്തു വിളിച്ചിട്ടു പറഞ്ഞു. "മാങ്ങ വേണോന്നു പറഞ്ഞിട്ട് അതെടുക്കുന്നില്ലേ?" മുകളില്‍ നിന്നും അമ്മയുടെ ശബ്ദം. പരീക്ഷണം കഴിഞ്ഞ മാങ്ങയെടുക്കാന്‍ തിരിഞ്ഞു നോക്കിയ അയിഷ കണ്ടത് മാങ്ങ വായ്ക്കുള്ളിലാക്കി പുതിയ പരീക്ഷണത്തിനൊരുമ്പെടുന്ന കുഞ്ഞനിയനെയാണ്.



 അയിഷയുടെ പഴയ കുസൃതികള്‍ താഴെയുള്ള ലിങ്കുകളില്‍ 
http://kizhakkunokkiyandram.blogspot.com/2010/05/blog-post_29.html

http://kizhakkunokkiyandram.blogspot.com/2011/04/blog-post.html

http://kizhakkunokkiyandram.blogspot.com/2007/11/blog-post_12.html

http://kizhakkunokkiyandram.blogspot.com/2008/10/blog-post_23.html


by ടോട്ടോചാന്‍ (noreply@blogger.com) at August 24, 2011 12:04 PM

August 21, 2011

ragsagar

r4g54g4r's h4ckl0g

A script written by Adhil Azeez to generate Indian flag in php. Actually he wanted to share the code here on Independence day. But i was not able to post it that day. After that a series of things happened that prevented me from getting online and updating my blog. So here is the code..

<?php
/*
 * Filename: tricolor.php
 * Dependencies: GD Library mostly precombile with php 4.0+
 * Author: Adhil Azeez NV
 * Description: Generates Indian National Flag Image
 */

//Create a resource identifier for the image res in ration 3:2
$flag = imagecreate(1350, 900); 
if (!$flag) {
    die("Some error occured");
}
//Color identifiers definitions
$white = imagecolorallocate($flag, 255, 255, 255);
$saffron = imagecolorallocate($flag, 255, 153, 51);
$green = imagecolorallocate($flag, 18, 136, 7);
$blue = imagecolorallocate($flag, 00, 0, 137);

//Draw the tricolor sections.The white portion is no need to be specified since
//the background color is white.
imagefilledrectangle($flag, 0, 0, 1350, 300, $saffron);
imagefilledrectangle($flag, 0, 600, 1350, 900, $green);

//Draw the Ashoka Chakra
//The Circle can be created with imageellipse itself after setting the thickness.
//But unfortunetly due to a bug in GD library(reported more than 5 years ago :()
//the thickness is being ignored.
imagefilledellipse($flag, 675, 450, 240, 240, $blue);
imagefilledellipse($flag, 675, 450, 210, 210, $white);

//Draw the center small circle
imagefilledellipse($flag, 675, 450, 42, 42, $blue);

for ($angle = 0; $angle <= 360; $angle = $angle + 15) {

//Draw 24 small circles in the Ashoka Chakra at the border of the circle adjacent
// to 24-spoke
    $x = 675 + 105 * cos(deg2rad($angle+7.5));
    $y = 450 + 105 * sin(deg2rad($angle+7.5));
    imagefilledellipse($flag, $x, $y, 10.5, 10.5, $blue);

//Draw the 24 spooks
    $x1 = 675 + 8 * cos(deg2rad($angle));
    $y1 = 450 + 8 * sin(deg2rad($angle));
    $x2 = $x1 + 40 * cos(deg2rad($angle - 5));
    $y2 = $y1 + 40 * sin(deg2rad($angle - 5));
    $x3 = 675 + 105 * cos(deg2rad($angle));
    $y3 = 450 + 105 * sin(deg2rad($angle));
    $x4 = $x1 + 40 * cos(deg2rad($angle + 5));
    $y4 = $y1 + 40 * sin(deg2rad($angle + 5));
    imagefilledpolygon($flag, array($x1, $y1, $x2, $y2, $x3, $y3,$x4,$y4), 4, $blue);
}
//if the script being invocked from CLI and has a filename arguments then write
//the out put to the file else print to the outputstream.
if (isset($_SERVER['argv'][1])) {
    if(imagejpeg($flag, $_SERVER['argv'][1] . '.jpg', 100))
    	echo "National Flag saved to ".$_SERVER['argv'][1] . '.jpg';
    else
    	echo "Some error occured";
} else {
    header("Content-type: image/jpeg");
    imagejpeg($flag, null, 100);
}
imagedestroy($flag);
?>

Design

The script makes use of php GD library. It outputs the image to current
output stream or save to a file.

If php GD library have anti aliasing support then we can enable that for much
better render.Currently anti aliasing is not enabled in the script.

The output is in JPEG format but it can be changed to other format if necessary
with a few modification in the script.

Dependencies

PHP needs GD Library support. Most of the php distribution compiled with it.

Usage
php flag.php filename

Filename argument is optional. If not present the script will output to the
current output stream

for example:
php flag.php | display
will open the image in ImageMagick picture viewer


by Rag Sagar.V രാഗ് സാഗര്‍.വി at August 21, 2011 04:13 PM

August 20, 2011

SVG Fonts

Santhosh Thottingal

This post is some notes on the current state of SVG Fonts.

SVG is not a webfont format. The purpose of SVG fonts is to be embedded inside of SVG documents  (or linked to them), similar to the way you would embed standard  TrueType or OpenType fonts in a PDF.  SVG fonts are text files that contain the glyph outlines represented  as standard SVG elements and attributes, as if they were single vector  objects in the SVG image. Unlike EOT, WOFF, TTF formats , SVG is plain text uncompressed file.

Even though it is not webfont format, some browsers will accept svg in the @fontface css3 declaration.

Firefox and IE does not support SVG Fonts. Here is the bug on Mozilla bugzilla about this with a lengthy discussion -https://bugzilla.mozilla.org/show_bug.cgi?id=119490  This is one of the reason why Firefox does not score ACID3 test – http://www.itcode.org/why-firefox-is-not-scoring-100-in-the-acid3-test . Developers argue that WOFF is sufficient and SVG Fonts does not give any advantage.  Support for SVG Fonts in the web development and font communities has been declining for some time. There’s already been discussion without objection of dropping SVG fonts from the Acid3 test. The community has put forth a proposal in the SVG Working Group to give SVG Fonts optional status.

Browser Support Matrix for SVG Fonts http://caniuse.com/#feat=svg-fonts  IE and FF do not support it. Webkit based browsers support it – Chrome, Epiphany. For browsers not supporting svg features natively there is a flash based javascript library named svgweb http://code.google.com/p/svgweb/

Limitations of svg fonts:

  • Not all of the opentype features are available in SVG specification
  • For example Indic fonts require many opentype features for correct rendering – see opentype spec of Malayalam http://www.microsoft.com/typography/otfntdev/malayot/shaping.aspx
  • Even though SVG Fonts are support is available in some browsers, practically they cannot render SVG fonts for complex scripts such as Indic – Here is a sample svg file with Meera font defined in it – http://thottingal.in/tests/svg/Meera-fontembedding.svg. As you can see, rendering is wrong.
  • The main drawback to SVG fonts is there is no provision for font-hinting. The SVG standard states: “SVG  fonts contain unhinted font outlines. Because of this, on many  implementations there will be limitations regarding the quality and  legibility of text in small font sizes. For increased quality and  legibility in small font sizes, content creators may want to use an  alternate font technology, such as fonts that ship with operating  systems or an alternate WebFont format. – http://www.w3.org/TR/SVG/fonts.html”

There is an alternate proposal to use opentype features of the font and use svg just for the glyphs https://wiki.mozilla.org/SVGOpenTypeFonts

Fontforge can be used for creating SVG Fonts. But the created SVG font works only for simple scripts like Latin. Fails to export GPOS/GSUB tables to the SVG- bug report – http://sourceforge.net/mailarchive/message.php?msg_id=27964229 GSUB issue can be solved either by handcoding the unicode sequences for glyphs or by writing an external script. But , more important opentype features- Vowel sign(matra) reordering issues persists.

Eventhough svg fonts by defining font data inside svg itself does not seem to have much interest from developers, using webfonts inside for svg has some importance. Just like web pages, webfonts can be used to render the text inside the svg. The webfont format depends on the browser. Example: http://thottingal.in/tests/svg/Dyuthi-Webfont.svg (Have a look at the source code of the file)

by Santhosh at August 20, 2011 03:56 PM

August 19, 2011

New location for Python Testing Tools Taxonomy

Baiju Muthukadan's Blog

Python Testing Tools Taxonomy page hosted at http://pycheesecake.org was a great collection of links to Python testing tools, libraries and frameworks. It is maintained by Testing in Python (TIP) community members. The page has been moved to Python wiki for convenience of maintaining it. The new wiki page is here: http://wiki.python.org/moin/PythonTestingToolsTaxonomy Feel free to add/update your favorite testing tools there!

by Baiju Muthukadan (noreply@blogger.com) at August 19, 2011 06:11 PM

August 15, 2011

Setting alarm at a particular time

r4g54g4r's h4ckl0g

My ISP provides unlimited download from 2am to 8am. So i was not able to sleep after 2 from the time i switched to the new broadband plan. Keeping the system on and setting a cronjob to start downloading after 2 was an option. But i was more concerned about the increasing electricity charge, than my sleep. Besides it is my social responsibility to save energy as a gonna-be software engineer :p. After a bit of googling and hacking i was able to wake up my system at a particular time. Here i am going to explain how i made my arch linux system to boot automatically at 2 am.

The configuration is done in Arch Linux. For automatic wakeup it needs a BIOS which supports RTC alarm. Most of them manufactured after 2000 supports this feature.

1) Check if your BIOS supports automatic wakeup

Execute the command below as root.

# grep rtc /var/log/messages.log
rtc_cmos 00:03: RTC can wake from S4
rtc0: alarms up to one month

If you can find something like this in the output.It says that the system can wakeup and a wakeup time can be setup.

2) Enable automatic wakeup in BIOS

Go to your BIOS setup, Under Power Management search for something like “Wake by RTC Alarm” or “Resume by RTC alarm” or “RTC resume”.Then enable it.

3) Set the hardware clock time standard as UTC

Edit the /etc/rc.conf file as root and set the HARDWARECLOCK variable to UTC

[ragsagar@h4ckb0x ~]$ grep ^HARDWARECLOCK /etc/rc.conf
HARDWARECLOCK="UTC"

Make sure that your timezone is set correctly in /etc/rc.conf
More help : https://wiki.archlinux.org/index.php/Time

4) Set the alarm time

Execute the following commands as root

# echo 0 > /sys/class/rtc/rtc0/wakealarm
# echo `date '+%s' -d '+ 5 minutes'` > /sys/class/rtc/rtc0/wakealarm

This will set the the alarm time as 5 minutes into the future.

Now run

$ cat /sys/class/rtc/rtc0/wakealarm

If the output of above command is something like “1313383930″, the alarm is set. It is epoch time. If it doesn’t yield any result make sure that the HARDWARECLOCK variable is set to UTC and reboot and try again to set the alarm time.

Now run

$ cat /proc/driver/rtc

Go through rtc_time, alrm_time and alrm_date and check if they are correct(will be in UTC).Turn off the system and leave the power on. Check if the system is booting automatically after five mintues.

5) Setting the alarm to a particular time and date.

To set the alarm to woke up the system at 16th Aug 2:05am, Run the following as root

# echo 0 > /sys/class/rtc/rtc0/wakealarm
# date --date "Aug 16 , 2011 02:05:00" +%s > /sys/class/rtc/rtc0/wakealarm

You can convert the epoch time to readable format and check the alarm time is correct.

[root@h4ckb0x ragsagar]# cat /sys/class/rtc/rtc0/wakealarm
1313440500
[root@h4ckb0x ragsagar]# date -d @1313440500 +%F" "%T
2011-08-16 02:05:00

Note : The mythtv wiki about acpi wakeup says that setting the hardware clock after setting alarm will disable the alarm while most of the linux distribution sets hardware clock during shutdown. They suggest to disable hardware clock adjusting during shutdown. To do that in Archlinux set the HARDWARECLOCK=”" in /etc/rc.conf . But in my arch system the alarm was not working when i set HARDWARECLOCK=”" whereas it worked when i gave HARDWARECLOCK=”UTC”. So if the wake up alarm is not working do try after changing the value of this variable.

To start downloading when the system boots up, i added a cronjob to restart the router at 2:15 and 7:45 (to account the download in happy hours). Also added “transmission-gtk” to the gnome-session-properties. So that transmission will be launched on startup and downloading will be started.

Reference :

http://www.mythtv.org/wiki/ACPI_Wakeup

https://wiki.archlinux.org/index.php/Time


by Rag Sagar.V രാഗ് സാഗര്‍.വി at August 15, 2011 08:34 AM

August 13, 2011

ragsagar

r4g54g4r's h4ckl0g

A slightly edited version of the script to restart router written by Madhusudan.C.S to make it work with teracom router given by bsnl.

#!/usr/bin/env expect

set username admin
set pass admin
set host 192.168.1.1

spawn telnet ${host}

expect -re "Login:"
send "${username}\r"

expect "Password:"
send "${pass}\r"

expect -re "successful"
send "console enable\r"
send "restart\r"
expect eof 


by Rag Sagar.V രാഗ് സാഗര്‍.വി at August 13, 2011 12:23 AM

August 12, 2011

Why I started loving Archlinux

Syntax

We like simplicity. We like everything new.

It’s been some years since I switched completely to GNU/Linux. I always wondered at its stability, security, features, community and at the people who use it. GNU/Linux helped me to have exciting computing experience all the time filled with wonders and fun. I forgot about the existence of Antivirus software. Forgot the time I feared autorun.inf and weird executable files. Forgot BSOD and EULA. Now, everything is open. Met many new people, similar interests bonded us. People who use GNU/Linux have always been very helpful. They share knowledge instead of pirated software. They teach us to fish. A kind of special relationship rooted between us, in a world connected by computer networks and its underlying complex abstractions. At this moment, I would like to thank everyone who made lives of people like me colourful.

I had been using Debian Squeeze for a while and was happy with that. Had its complete repo offline which helped me to install any package in spite of the very slow internet connection I had then. Though the things went smooth, I faced some issues during that time with the compilation of new software from source. Fixing dependency issues were pain. The new source of package requires new version of dependencies which were not available in repo. Compiling them from source always created new pains. Updating software/repo was not possible because of the slow speed of internet. Taking laptop to college and updating from there also didn’t work due to various technical and non-technical reasons. I felt like I was completely forbidden from trying new versions of software. I was in a kind of lock then. Suddenly, one fine day, I got a broadband internet connection!

I don’t have words to express how much happiness I felt. Now the scenario has completely changed. I can now change the Debian repo to testing or sid, try new packages, configure backports or update what ever I want. But, I thought it was time for a change. Changes are the spices of life, indeed.

I wanted to install another distro from the mainstream. First, I thought of Fedora 15 which is a very good OS and hacks by Rajeeshettan in it always inspired me. Also I had used Fedora 14 for several months. But in Fedora too, I missed an element of simplicity and playfulness. The point with these type of operating system is that it comes with all basic packages preconfigured and giving us less opportunities to play with those.

Next choice was obviously Archlinux. I have been hearing about it since I met my another GNU/Linux guru – Ashikettan. He blogs about Arch much and talks about it often. Also, I had tried it once months before when I had speedy internet connection. The best thing about Archlinx is that it is a rolling distro, and new packages are always readily available!

To install, I got the 64bit iso image from Arch website and made thumb bootable with abock. The installation went smooth and had a nice time configuring various things along with my favourite desktop environment – KDE. I was not really able to use KDE since the version in Debian Squeeze was a bit buggy and it crashed often. I was using Gnome 2.x then. Now, I’m really happy with KDE 4.7.0 with a distro which can be updated easily using its sweet package manager – pacman. Arch also has a wonderful knowledge base – The ArchWiki. ArchWiki has many tutorials to play with for beginners and for expert users.

To talk about packages in Archlinux, I don’t have words! I remember trying to install new version of Ipython in debian which comes with a new tool called qtconsole. Qtconsole can show the outputs of matplotlib embedded inside the window instead of showing as a pop-up. It was a bit pain fixing various python modules that depended upon on other packages in debian. But in Archlinux, a simple ‘pacman -S ipython’ after a system upgrade with ‘pacman -Syu’ solved the issue. (Please note that though ‘pacman -Sy ipython’ alone installs new version of Ipython, it may lead to dependency issues sometimes. Always install with ‘-S’ and have an system upgrade with ‘-Syu’ often). Upgrading the system obviously updates kernel, now Arch has kernel 3.0 in repo!

Please do not have a feeling that I’m saying other distro/package managers are bad or less useful than Arch/pacman, I was simply having a comparison under special conditions – Indeed, every GNU/Linux thing is great and well developed!

Another great feature I found in Archlinux is the rc.conf file. We can easily configure various system wide things in /etc/rc.conf file, like which all kernel modules to load, which all daemons to run at start, hostname, timezone, network interfaces, gateways and so on. There’s also an application called ‘rc.d’ which is similar to ‘service’ in debian/ubuntu using which we can start various services like sshd, etc. Also, the support in IRC channel (#archlinux @ irc.freenode.net) and in Arch forums are very helpful.

Finally, as a student, I find Archlinux very useful and informative, Also it’s so much of fun using it. I humbly recommend this sweet GNU/Linux distro to everyone who likes to add more spice to their GNU/Linux computing. I just started with Archlinux and hope I could post more about it in future. Thank you so much for reading. Greetings!

by ershad at August 12, 2011 05:29 AM

August 10, 2011

August 06, 2011

Good bye LiveJournal, Hello Blogger

Baiju Muthukadan's Blog

I started using LiveJournal in 2004. It was a great blogging platform back in 2004. But now a days I am finding it very difficult to use. So I am changing my main blog from LiveJournal to Blogger. My new blog URL is http://baijum.blogspot.com/ I have migrated all my old posts to the new blog. I have send mail to Planet-Python & Planet-India editors to update my blog feed URL. If anybody else subscribed to my feed, please use my new feed URL: http://baijum.blogspot.com/feeds/posts/default/-/python (This will bring any Python related blog posts to your reader)

by Baiju Muthukadan (noreply@blogger.com) at August 06, 2011 04:53 PM

Congrats Noufal for PSF award!

Baiju Muthukadan's Blog

Noufal Ibrahim, the main organizer or PyCON India 2009 received Python Software Foundation's Community Service award along with Barry Warsaw (Creator of Mailman). My hearty congratulation to Noufal Ibrahim and Barry Warsaw.

by Baiju Muthukadan (noreply@blogger.com) at August 06, 2011 04:10 PM


അവസാനം പുതുക്കിയതു്: January 29, 2012 02:30 PM
എല്ലാ സമയവും യു.ടി.സിയില്‍

സ്വതന്ത്ര മലയാളം കമ്പ്യൂട്ടിങ്ങ് പ്ലാനറ്റ് അവതരിപ്പിക്കുന്നതു്: Planet

സ്വതന്ത്ര മലയാളം കമ്പ്യൂട്ടിങ്ങ് പ്ലാനറ്റ് പരിപാലിക്കുന്നതു്: അനിവര്‍ അരവിന്ദ്, സ്വതന്ത്ര മലയാളം കമ്പ്യൂട്ടിങ്ങ്. നിങ്ങളുടെ ബ്ലോഗുകള്‍ ഇതിലേയ്ക്കു ചേര്‍ക്കണമെങ്കില്‍ അനിവര്‍ അരവിന്ദുമായി ബന്ധപ്പെടുക. ഇവിടെ പ്രസിദ്ധീകരിക്കുന്ന ബ്ലോഗുകളുടെ ഉള്ളടക്കത്തിന്റെ പകര്‍പ്പവകാശം അതാതു് രചയിതാക്കള്‍ക്കു സ്വന്തം.