No Warranty if you move to Linux!

March 31, 2007

I happened to read an article about the experience with HP where the customer got rejected for the warranty because she changed the OS in her laptop to Linux from the pre-installed Windows. This surprised the customer as her issue was with the key-board keys sticking out and not working properly, which doesn’t have any relation with whatever OS is on the laptop.

Read the story at the source Linux.com


PHP Code Builder - A Fair Evaluation

March 30, 2007

If you have been to #linux-india over the past one week or so, you could have spotted an enthusiastic new comer trying his best to publicize his creation called as PHP Code Builder.

This is a web based software which will generate PHP code for the corresponding design you do by selecting a few options shown. To be a bit more precise, say you want the PHP code for a login page, you can specify the database name, table name (which stores the login information) and click the “generate code” button, it generates the code for a login form. So, they actual intention is to make the development of PHP code easier for standard modules like login and database interaction.

Now, I know people will ask the question “why make a code builder to create PHP codes when writing one is not a much tougher job?”. Indeed, I do not think writing a PHP code for a login page is not as much hard as making a dosa by ourselves, from my 4 month real time experience of writing PHP web app. It is a new idea, a cool one, I agree. But, how it is going to help people ? May be if it can mature into a product that can handle a bit complex issues like session management, cookies and complex database operations. But, it is premature to say its not a useful product as its just a new born baby and I can not expect to ride a bicycle.

I got a mail whereby the creator of the software under consideration asking for some publicity. So I decided to lend my blog space for a post on their software, just my 2 cents to the cause. I visited their product page which looks very clean and simple. It looks like a web site of a product in full demand, kudos to that. Surprisingly there was a demo to test what the product can do. I jumped into getting some experience, so I can write something about it.

Clicking on the ‘Demo’ tab takes you to a page, where an almost empty screen with “Have fun using PHP code builder DEMO.. If you like it don’t wait to download it. :)” welcomes you. With opening my eyes little bit wider :-o, I discovered there is a side menu of available demos.

The first demo is of queries to the MySQL DB, where you have 4 buttons for generating insertion, deletion, selection and updation query strings. I click on the generate button and viola, I am given the query “insert into details set id=’$id’, detail=’$detail’”. what I actually expected was a PHP code to do execute the same query to a DB.

I decided to check other demos to find some real PHP. “Code for Sessions”, ahem, the topic which took a week or so for me to code a pretty basic session management in PHP in my beginning days as PHP dev. I just wanted to see the code again as I have forgotten it with 8 months of Python coding. It asks me to select the DB, the table, number of session variables and depending upon this number select the variables from a drop down list. I select things and click the generate code button with all enthusiasm to see a PHP code and I g0t this at the end,

//log in table code in html
<!–Login table for session –>
<table align=”center” width=”375″>
<tr>
<th colspan=”2″ align=”center”>Log-In</th>
</tr>
<tr>
<th align=”center”> </th>
<th align=”center”> </th>
</tr>
<tr>
<th align=”center”>Username:</th>
<th align=”center”><input type=”text” name=”id”></th>
</tr>
<tr>
<th align=”center”>Password</th>
<th align=”center”><input type=”text” name=”detail”></th>
</tr>
<tr>
<th align=”center”> </th>
<th align=”center”> </th>
</tr>
<tr><th width=”182″ align=”center”><input type=”submit” name=”Submit” value=”Log In”></th>
<th width=”183″ align=”center”><input type=”reset” name=”reset” value=”Reset”></th>
</tr>
<tr><th colspan=”2″></th></tr></table>
<!–session table ends here–>

I started to ponder whether am I seriously looking at a PHP code builder or HTML generator ? Where is the damn “<?php” and “?>” at least :(

I checked other stuffs to find some PHP code somewhere and returned with to /dev/null. As a few things weren’t in demo, I had to check the source code after downloading it. Also, I do not want to make a prejudice and jump into flaming people for the absence of PHP code getting generated.

After the downloaded I jumped in, at last to see some PHP code :) The source directory contains a dozen and half PHP files, most with the name db_<something> in it. I checked a few files to understand what they were, with my slowly succumbing knowledge of PHP. I decided I have to give a go and moved the app to my webhome so I can run it.

The first page asks for my MySQL username, password and hostname. I entered it, wishing the tables to get created. Rather, I got an error saying it did not have enough write permissions to write into a file. It made me curious to look into the file actually intended to create the db stuffs. What it did was, create a file or rather write the data into a file. Am not sure how secure is it to write MySQL username, password into a plain text file and have it in a web server. I couldn’t proceed because it couldn’t write into the file.

But, I am left with a few questions and concerns. First, where is any PHP code getting generated ? If the answer is “You did not check the downloaded code fully”, then why it is not there in the demo. What it gets generated in the demo is HTML and not PHP. If there is some PHP generated around, please let me know where it is.

Not moving into an offensive mode, I feel its still in a pre-mature state to go public, especially without any real PHP code. For example, the form demo generates the tables for two fields and not even a button for the form, where hell is the <form> tag to give some meaning to the form ? If a form is all about HTML for two labels and input text boxes, please name the app as HTML builder. No, am not meaning to hurt you or criticize you.

I will just put the my feeling about it as “a kid’s weekend project”. If am really serious I can write the same app in Python in a day or maximum a couple because what I need to do is just print the HTML, or even the PHP code for that matter.

Ok, if you ask me what it should be, it should be something like you have a canvas, you have objects for HTML elements like what you have in a GUI designer tool like Qt designer. You can drag and drop elements into the canvas and finally it can generate the code. Now, you can either have it as HTML generator or PHP generator. The latter will generate the appropriate PHP code for the form logic to work, like validation a text field and POST/GET methods for the form. The form validation can be guided by asking to select from a list of validation options like “only characters, only numbers, email address…” and validation the element for the same.

This is what I will accept as a decent PHP code generator or builder, even for a first release. For this, you can make use of Ajax to make the drag and drop features. Please, do not show just HTML generation while calling it as PHP Code Builder, because it will turn off people who will never mind to check your app during further releases and improvements. And I hope this is not your Final year project :(

If you have anything to add on or justify, then add it to the comment section for this post. :)


Bye Bye Beryl!

March 29, 2007

Beryl came into my laptop around 6 months ago, when I moved to Edgy Beta from Dapper. It was a matter of pride for our Edgy users then, though now-a-days it has become common within the desktop circle. Wherever I went, to whomever I showed my laptop, I showed them 3D desktop with Beryl and many of them wanted to try it on their machines too. I showed them whenever we visited some college, with the students still thinking Linux is all about command line. We used to show this up and ask them, “is this possible in your (pirated) OS at home?”. Though Vista has similar capabilities, the requirements of the Vista can not be met by the current hardware these people have at home.

To see the other side of the coin, its all about eye candy. Though I had beryl installed I did not use it. I just used it to attract people and to break the thought that Linux is still all about command lines. The main reason is, though 3D desktop can change using desktop to fun, still it made things too much an eye candy for a nerdy human like me. I accept there were some wonderful features like window-snapshots, but still it was a distraction for me.

When I moved from GNOME to KDE, on the sidelines of foss.in 2006, I discovered beryl worked a bit smoother in KDE. But, there were a few problems. The main bug was that whenever I turned off beryl back to the normal KDE, the multiple workspaces crashed as in it showed me only the first workspace while others were black screens. I had to restart X to bring things to normality. But, still I continued with it.

Off late I started facing one more problem, when I started beryl in KDE what happened was the KDE desktop background got replaced with the desktop background I have in GNOME while the panels and menus were still of KDE’s. This was weird and a few suggested me of installing aquamarine. Even then the problem doesn’t seem to solve and it became worse. I tried removing Emerald theme manager and reinstall Beryl and Aquamarine. Then, I got the background was not changing but I couldn’t get window borders, both in KDE as well as GNOME.

I tried various things for around 2 hours and  decided it was enough. I deleted Beryl and Aquamarine, deciding to live without 3D. Am sorry that my future listeners and viewers of my Linux desktop will miss the 3D shows :(


Come Back India!

March 26, 2007

As India has failed to get into Super 8 and thereby been thrown out of the World Cup 2007. Indian fans have a better job opportunities for them when they come back.
Shewag Sachin Ganguly

Dravid Dhoni Zaheer

They will really like their new jobs, at least hope they do well in them ;)


FOSS, Food and Fun

March 26, 2007

I was eagerly looking forward for 24th of March to arrive and this time, it wasn’t me who was going somewhere and meeting people, but people were coming and I had a chance to meet people at my own place. We had a FOSS Meet hosted by NRCFOSS for which around 30 people from Indian FOSS arena were invited. The invitees list included many people whom I know through #linux-india and hence I was very eager to meet the known faces once again.

Unfortunately I got some loads of work to do the same time, so I couldn’t spend much time with my friends other than a 4 hours on 24th night. We had Gora, Gopal (t3rmin4t0r), Anurag (devmodem), Friji Karthikeyan (cray3), Kiran jace, jtd, Indranil (IDG), Sunil Abraham, Tarique Sani, Atul Chitnis, Mohan, Raman, Barathi, SRS, Raja Subramaniam and Abhas with us, along with Kenneth, Prof Srinivasan and Prof CN Krishnan.

Although I wasn’t there during the day long meeting and therefore have nothing to add on what happened at the meeting, I joined them for the night. When we all join where do we end with ? Food and chat ;) Adding to that a lot of our cameras flicked. I have uploaded my pics in my flickr album and waiting for jace and t3 to upload theirs :)


The Zen of Python

March 21, 2007

Just finished reading an article on What is Pythonic ? by Martijn Faassen. At the end of the article there was a try this; I tried..

>>> import this

The Zen of Python, by Tim Peters

Beautiful is better than ugly.

Explicit is better than implicit.

Simple is better than complex.

Complex is better than complicated.

Flat is better than nested.

Sparse is better than dense.

Readability counts.

Special cases aren't special enough to break the rules.

Although practicality beats purity.

Errors should never pass silently.

Unless explicitly silenced.

In the face of ambiguity, refuse the temptation to guess.

There should be one-- and preferably only one --obvious way to do it.

Although that way may not be obvious at first unless you're Dutch.

Now is better than never.

Although never is often better than *right* now.

If the implementation is hard to explain, it's a bad idea.

If the implementation is easy to explain, it may be a good idea.

Namespaces are one honking great idea -- let's do more of those!

Words of the Day - 12

March 20, 2007

Trying to clear of all the words under pending for months.

intimidate : verb : to fill with fear; to force something by inducing fear.

xenophobic : noun : a fear of strangers without any reason.

coercion : noun : use of force to comply or deny.

idiosyncrasies : noun : a peculiar characteristic, habit or mentality to an individual.

reminiscences : noun : revival or recollection of memory; act of recalling past experiences.

Synonym : memoir, memory, recollection, anecdote, reminder.

naive : adjective : absence of artificiality; unaffected simplicity; unsophisticated; lack of experience or expertise.

perpetual : adjective : everlasting; never ending; continued without interruption.

cobbled : verb : to mend; to put it together roughly.

ebullience : noun : high spirits; exuberance; exhilaration; overflow.

frivolity : noun : lack of seriousness; carefree attitude; irresponsible.


Yay! I got a head!

March 16, 2007

Whenever I used to visit Planet FLOSS India, I always envied the heads guys had there. When we blog or read other’s blog we get to know their feelings, their opinion, their experience, but never find how they look until they have posted a picture of them or there is a link somewhere for their on line photo albums. But in Planet, they had their heads and hence you can get a glimpse of how they look. Its nice to know how the people, whose words you are reading and sometime like, really look.

I have been off late admitted into some planets but was hanging around with a head. Though many of them had seen me in one or the other FOSS events, I still wished to have my head. I have been receiving a lot of hits in my blog due to the Planet and I thought it would be nice to have my face shown to all those admirers :)

It was around a couple of weeks ago that Sayamindu was asking someone for their head and I was quick to ask him whether  I can have one too. Upon a positive reply, which surprised me a bit, I had sent him a picture of mine which he can use to make a head for me. And, besides his busy schedule, he has found time to make me a head and put it on the Planet. Now all my posts have a head of mine and I feel great about it. Thanks to Sayamindu for giving my words a face :)

(And hopefully, you are seeing a head of mine just below if you are looking this in the Planet ;) )


Oh no! Not another distro!

March 12, 2007

Whenever I hear some one telling that he is planning to create a Linux distro, I just laugh and walk off. Making a distro is the simplest thing you can do if you want to show something in GNU/Linux. And that is what people tend to do too. Whenever I hear about a FOSS event happening, not the big ones, they try to release their own distro. I wonder whether they themselves used these distros at first place.

Releasing or creating a Linux distribution and releasing them during local events have become a very common habbit. But, really this trend should die. Although I have been thinking to write about this for some time, an article in LFY this month really motivated me to drop my two cents in my blog about this.

The main reason for personally taking a stance against any idea to create another distro is that already we have more distros offering a wide range of options or alternatives and there are more things to be added to them, improved in them. The existing distros need continued support, contribution, feed back and consistent user base. There is a word that we already have almost 2000 official Linux distributions. And, already this is causing a lot of confusion, especially for those venturing into Linux for the first time. When some body asks me what distro to use, although I always answer Ubuntu, I somehow feel am not doing justice. Its because no distro is perfectly suitable for all people.

It depends upon what expectation and requirements you have, that you need to select a distro. So, the best bet is pick up top 3 distros which people prefer to be good, try them out and settle with one which works for you. This is what I did in my life, started with Knoppix, then madrake, then Red Hat 9, then Fedora core 3 and 4, finally landed with Ubuntu - Hoary, Breezy, Dapper and now Edgy. Until I found Ubuntu, there was a search for better distro. I do not argue Ubuntu to be the best distro, but its fact that its good; good for making things just work.

Whenever I see or hear an upgradation and newer release of one distro or another, I can find an effort made to make it better as per customer requirements and preferences. And, still there are 1000 things left to be done, 1000 things more to be improved and excelled.

So, people if you are thinking of creating and releasing a distribution of yours please try to answer the following question yourselves.

  • What is the real necessity to make a new distro ?
  • If contribution is the idea, then can’t you contribute to any existing distro which is your favorite ?
  • If you want to create something new, aren’t there any other idea of an application or plug-in that can really make a difference ?
  • If you want to release something for an event, then can you just create a custom app or customize an existing distro to fit the needs of a specific target user ?
  • Can’t you create something for the shop nearby or a NGO, so that they are really benefited ?
  • Ok, still you want to create a distro - who is the target ? what is your distro’s specialty that makes it useful for the intended target user ? What is the extra stuff you are providing for them to use it in the place of other more supported, more tested and proven, more famous distros ?
  • If you release a custom distro, how long will you able to support it?
  • Are there enough softwares available in the form of packages, if the user wants to install it later ? how easy it is for the user to install something either from the package or source ?
  • Will you able to offer personal support, either for free or for a charge ? Is it practically sustainable ?

Make a true introspection on all these questions and decide whether you still want to make a distro ? Really you can make it, but does your efforts and talents just good enough for making another foo-bar distribution. Make a proper use of your talents, put in your efforts for better things, more important things. Rather than trying to make something better the first time, try to make existing things still better.


Words of the Day - 11

March 10, 2007

After a long break, here I come with a small dose of new words :)

pragmatic : Adjective : pertaining to practical views and considerations.

sway :  Verb : to swing from one point to another, being fixed at one point; to incline or fluctuate in opinion; influence others to move in a specific way; to dominate or rule other’s opinion.

eccentric : Adjective / Noun : (A) to deviate from customary practices; (N) unusual, peculiar, odd personality.

pristine : Adjective : uncorrupted; preserving its originality; pertaining to earliest state or time.

renegade : Noun : someone who deserts a cause for another; betrayer; traitor.

cretinous : Noun : a mentally defective person; a stupid or idiot.

perspicacity : Noun : keen vision, shrewdness, insight.

misanthrope : Noun : one who hate/mistrust/dislike human kind.

misogynist : Noun : one who hate/mistrust/dislike women.


(Python) Decorators

March 8, 2007

Decorators in Python are bit confusing concept to understand. It is not a standard feature generally explained in many of the Beginners’ books on Python. But, understanding the basic idea of decorators will help us in making a very good use of it. As the rule always goes, there are certain situations where decorators are highly useful but not always.

Decorators in a way of transforming functions and methods at the point where the code is declared. The point of transformation is placed just before the method’s own declaration.

To give a more clear idea, we generally put some code within a function, make use of other functions by calling them, performing some calculations or processing within the function’s body, and finally return some result or print some output.

Think of a situation where the attributes of the function get modified when the function is actually executed. That is, we start the function feeding it with a specific argument/parameter over which the function code operates. But, instead of directly passing over the input arguments to the function code, we rather try to do something with these arguments, modify them, process them and then pass it to the function as though they are untouched. Thus we make the function feel as though it is receiving the input as it is, but we are actually modifying them. The important point to note is these things happen at function execution time, just before the original function code executes.

The original proposal of Decorators as an enhancement and the discussion thereby are documented in PEP (Python Enhancement Proposal) 318. There are also few examples given to show how decorators can be implemented in general. But, for a newbie these examples are not easy yo grasp.

I myself have to thank Siddhartha and Rajeev J Sebastian for helping me with additional examples and explanations respectively, for me to understand the concept and deliver my talk during FOSS.NITC 2007.

Let me start with Siddhartha’s simple example - Decorating a custom method with a decorator which prints text around the function call.

Example 1:

def decorate(fn):
    def _decorate():
        print "Before Calling"
        fn()
        print "After Calling"
    return _decorate

@decorate
    def mymethod():
        print "Inside Function"

mymethod()

Output:

Before Calling
Inside Function
After Calling

Explanation:

A decorator is another object which expects to be fed with a function object. What the decorator does ? When the function is called, instead of allowing it to execute normally, if fetches the function object. It can modify the attributes of the function object or add new attributes. Instead it can just print some thing else and call the original function and execute it, in the middle of its own code as shown above. Just it prints the first text, calls the function which prints its own text, then it prints the text following the function call.

All of these happens at run time, when the function is actually called. Otherwise, its just a definition of another method. Thus, decorators jumps into action only when the function is actually called somewhere.

Another example might help us in understanding decorators much better. This time we will try to do something with the arguments passed to the function itself using the decorator and enjoy the fun.

Example 2:

def params(fn):
    def _inner(x):
        print "You called me with %d, but I rather called with %d" %(x,x+1)
        fn(x+1)
    return _inner

@params
def myfunc(x):
    print "I got", x

myfunc(5)

Output:

You called me with 5, but I rather called with 6
I got 6

Explanation:

The decorator params() is used to dynamically add 1 to the input argument and call the function myfunc() with the changed argument. Thus when we call the function with a value 5 for x, the decorators calls the function with a value 6. What the function expects is a input argument x and it prints it. But what to be noted is, the decorator modified the parameter passed to the function and executed it with the modified parameter.

Ok, what else we can do ? We can pass a parameter to the decorator itself and use it to perform some operation on the function over which the decorator is applied. This example illustrates such an application of decorators.

Example 3:

def adapttoinput(str):
    def _multdecor(fn):
        def _inner(a,b):
            fn(a*b)
        return _inner
    def _adddecor(fn):
        def _inner(a,b):
            fn(a+b)
        return _inner
    if str == "*":
        return _multdecor
    else:
        return _adddecor

@adapttoinput("*")
def mymethod(a):
    print "The output is", a

mymethod(2,3)

Output:

The output is 6

Explanation:

Though the example looks ordinary, one interesting point needs to be noticed. The original function mymethod() accepts a single input argument a, but if you look at the function call it was mymethod(2,3). We passed 2 input arguments 2 and 3. But, it worked out! That is what the decorator magically did. It transformed the two input arguments into a single argument and passed it to the original function. Thus, even when the function was called with 2 arguments, when it was actually executed it was given only one argument as input. The decorator made use of the string passed to it to convert the 2 arguments in function call to one argument before giving it to the function. A “*” passed to the decorator results in addition of the input arguments and anything else results in addition of the input arguments.

These are very simple examples to demonstrate what a decorator can actually do. If you want to understand where decorator can be implemented in real time code, please check Siddhartha’s example on Guard Implementation using Python Decorators.


FOSS.NITC Field Report

March 5, 2007

I am back from a weekend at Kozhikkode. It was a nice trip, nice experience and nice learning too. Let me drop my quick field report about FOSS Meet @ NIT Calicut, which we call as foss.nitc.

  • The organizers, students belonging to various branches in NITC, did a very nice job. This is their 3rd year of conducting the FOSS meet and they did show signs of maturity.
  • Though there were initial hiccups in speaker registration and their web site, they managed to have a nice band of speakers.
  • We were accommodated in a nice guest house. Though I was lucky to get a room with A/C and TV, other rooms without those were no less than mine in comfort. But there were few not-so-lucky guys who stayed in the International hostel ;)
  • The food was good on all the 3 days, but eating North Indian food for 3 days made me run with problems.
  • The days were long, starting from 9 a.m. and ending at 10 p.m. Think they can make this something like 9 a.m. to 5 p.m. and having open sessions then.
  • We all felt and suggested the need to have some open sessions and more BoFs.
  • There were few troubles with the scheduling such that a few speakers were left with very meager listeners.
  • My talk on Decorators in Python went very well, with a dozen people to listen. We got chairs and sat around. The session went for 1.5 hours.
  • My second talk messed up as I did not really prepare and practice for it. Also, I was in a blank mood after listening to 3 hours of the previous talk ;) And, whenever I looked the audience, they showed sign of disinterest so I felt like will end with a few topics than what I had planned for.
  • Learnt more info on photography and after seeing Jace with his cam, am more serious about buying a pro cam :D
  • The past one year had been a great time for me, attending 3 conferences (foss.in, Linux Asia and FOSS.NITC). And, I became a speaker in the last one.
  • We have got an invitation from a college near Alleppy for a similar FOSS event sometime in mid August.
  • Wipro had a talk about ‘TV in Mobile’, and they used a Windows system. We took a few snaps of it. But at the end, we were surprisingly called to present the mementos for the Wipro Guys :0
  •  I have decided to really start preparing for talks in future, *I do not want to mess up again!*
  • It was nice meeting some of my #linux-india buddies, though not many could make it.
  • There were more talks and unconferences on Blogging. The first one by Kiruba was all fun, while Jace’s was more informative as well.
  • NIT Calicut has really good facilities, at least for our eyes, comparing to the numerous colleges dotting around Chennai. If am not wrong, it has better facilities than what I have seen in MIT. May be am wrong!?
  • Though I missed being at Carte Blanche this year, especially when we had Ubuntu-India stall there, but I feel content about being at FOSS.NITC and very much looking to be there next year too :)
  • My train journey was tiresome, against my hope that second class sleeper will be at least comfortable. I got a slight fever and spent the whole of today sleeping.

I have posted the photos from FOSS.NITC and will try to add more, as well as a lot of my buddies have. Please check flickr.com under the tag foss.nitc if you are interested. There are really cool pictures, believe me :)


First day of talks at FOSS.NITC

March 3, 2007

Here I blog from the Software Lab of NIT Calicut, at the day end of a day of talks. I had my first talk on a conference delivered. I landed at this place around 8.30 a.m. yesterday. My train came by time and I was picked up from the station and brought down here by a couple of students.

There was Kushal and Praveen when I landed in the guest house, soon joined by Vivek Khurana, who had come by 1 a.m. last night, and finally Pradeepto joined us at 2 p.m. We had a gala time in the room till 5.30 and then moved on to Aryabatta Hall where the conference started.

As usual there was a formal opening ceremony and people speaking. We had Atul Chitnis talking before we left for the dinner. Dinner was really nice, simple yet tasty with icecream+gulab jamun to top everything. We then came back for an Unconference by Kuruba on Blogging.

I was really tired and woke up a bit late around 8 a.m. I prepared a few slides for my talk and along with Pradeepto moved to the conference area. Shakthi was already delivering his talk while Aanjhan was waiting to follow. Then I went to hear Shakthi speaking about Careerhttp://wordpress.com/signup/?new=technofreakattchennais in Linux. We had lunch then, before Vivek started his talk on CMS.

An important thing at this time of the day was, most people went for the workshop on Wiki and the other speakers merely had a dozen or so guys attending their talks. This includes me, but I turned the thing around and had an informal demo of Python Decorators with a dozen guys around me. I felt better that way and the listeners as well, from the feedback I got from them.

Then we just were hanging over where Shreyas and Tejas were giving their ‘Hacking Evolution” talk which was really a nice one (and a lot of people attended it). I also got a chance to attend the last few mintues of the BoF that Aanjhan and Pramod were organizing. We left for dinner and here am sitting in the lab, checking my mails and writing this blog.

I have another talk on tomorrow. Amarjit is a smart guy, that he was quick to learn and react from today’s experience. He has asked the speakers to tell it to the audience, the first thing to do in the morning, what we are actually going to talk during the day and who is the target audience. I hope I will again have a dozen or two dozen of enthusiastic students hearing to me tomorrow. :)

I also got the news from Sudharshan that the Ubuntu-In stall at Carte Blanche 2007 was really a hit. Although there wasn’t an expected amount of turnout this year, what I heard was a good number of people who had come there tried their hands at the Ubuntu boxes in our stalls.

Ooops! I have something left to prepare and its already 11 p.m. I have to rush back to the room and start preparing it. And, no slides for tomorrow for sure. Rather I will use my KJots notes ;)