Humour, comics, tech, law, software, reviews, essays, articles and HOWTOs intermingled with random philosophy now and then
Software and Technology by
Posted on Sat, Jul 30, 2005 at 16:42 IST (last updated: Wed, Jul 16, 2008 @ 20:43 IST)
I've been learning Python and Java and while it might appear as though I'm comparing apples and oranges, it's really interesting to note how different these two programming languages are. Not just in syntax and language structure, but more importantly in principle and programming approach.
At first sight, both Java and Python appear to be similar because they're both object-oriented, high level programming languages with quite a rich set of features. Both Java and Python code compiles into byte-code which is machine independent. Both languages typically provide a higher level of abstraction than, say C or C++ where you often get down into the nitty-gritty of things. However, amidst all these similarities Python and Java represent two different cultures in Object Oriented programming.
What makes Python and Java so different? Quite apart from the basic language structure and syntax there are several differences that I noticed while coding in Java and coding in Python. The whole thinking process as a programmer is different when you develop applications in these two languages.
Let me first take the case of Java. Java is a high-level language but actually provides an entire sub-system for the programmer. This can be daunting for a beginner who won't find it easy to get a grip of Java. Typically you must first learn Java and then go on to learn how to accomplish your tasks in Java. And because the whole Java API is a universe by itself, it demands a programmer to adapt to the system before he can do something useful. When you program in Java, you will spend a lot
of time reading the documentation. In other words, you need to fit your programming task to the Java way, requiring more discipline and more planning to write programs that go beyond a few hundred lines. But this can be rewarding because Java forces this discipline on you and your program is naturally better organized in the long run. With Java, you actually get to think a lot more in terms of classes and objects.
In a nutshell, Java enforces a certain way of thinking and a certain structure in programming. This doesn't mean that you sacrifice freedom or power, just that you use that freedom and power the way Java lets you to.
Python? Well, Python's case is rather different. Essentially it is closer to being a super-powered scripting language than a programming language, but it combines so much power that it cannot rightly be called a mere scripting language by any means. However, one can notice the difference in principle and in actual practice. The philosophy behind Python is that it allows you to do more things with less code. Because of the enormous number of Python modules available providing such rich functionality off the shelf, this frees you to accomplish tasks using Python
rather than forcing you to do it the Python way
. Notice the difference in the emphasis. What does this mean? It means that as a programmer you can write powerful programs with more freedom and less code. Also Python, being an embeddable language can also be used as a scripting language within other applications. A language that is designed for easy accessibility and easy usage.
In short, Python allows you to think in terms of what you want to do without necessarily asking you to do it in any one way. Programmers would find Python closer in many ways to C/C++ than Java in its philosophy without the lower-level approach of either C or C++.
I'm deliberately refraining from saying which approach is better. Both these languages are great to learn and both are high-level OOP languages. But each requires a different mindset while learning. My take? Java is definitely suited for larger projects typically requiring more planning and a methodical approach. Python allows you to create powerful, non-trivial applications with less effort than either C or C++.
Which is better suited for any given task depends more on the mindset of the programmer.
People and society by
Posted on Sun, Jul 24, 2005 at 19:39 IST (last updated: Wed, Jul 16, 2008 @ 21:19 IST)
There are many places on the web where you can get your website reviewed. And every web designer, webmaster and programmer loves to hear opinions on how cool his site is and how well the site is integrated. Unfortunately soliciting reviews for a website can also be a two-edged sword. Having spent days and weeks painstakingly designing and tweaking what you think is a cool site design, how would you like your site to be described as "looking like an MS Word document"? Unfair one-line criticism? I think so. I had personal experience of this and I can tell you that you'll feel the same way if your hard work was similarly trashed. And although I talk about websites in particular here, I mean just about any creation. It doesn't matter what. People feel hurt when criticized unfairly. There can be no ambivalence here. Either criticism is unfair and negative or constructive and positive. I don't believe in middle-ground in this particular issue.
And that's why I am always upset when people rubbish other people's hard work. Therefore I make it a point not to offer one-line reviews for others' websites. Suggestions to improve? Yes. Constructive criticism? Yes. Dismissive statements? No. One line smart-alec remarks? No. Whenever possible, I always give suggestions softly and try and soften the criticism as much as possible. Believe me, nobody likes to hear bad things about themselves or their creations from total strangers.
But there are so many who are not sensitive to such issues, simply because they themselves have never been at the receiving end. And when accused of unfair criticism they will spring on you with the "right to free speech" argument. Although I do agree that people have a right to opinions (and a lot of people like to flaunt that right), I am a bit worried about the new trend of rubbishing the hard work of others. It seems it is fashionable these days to nitpick and find fault. People take pride in noticing the smallest errors that appear on the website, like to criticize your choice of colours and graphics and your website content. Everybody is an expert when it comes to judging other people but their own creations leave so much to be desired. Believe me, nobody likes "frankness" of that kind. Even when what you say might be substantially true a lot of unpleasantness can be avoided by being much more diplomatic and using constructive and positive feedback.
For example, if you find a website rather badly designed, rather than saying:
Don't take me wrong, but your site looks so amateurish. Boy you should really get a course in web design.
You can try saying:
Hey. I visited your site and I really think the idea is great. However, you could do with a little bit of refinement. Personally I think the shade of red you use for the menu bar is too bright and hurts the eyes. You could try toning it down a bit. And I suggest keeping the advertising banners on one side. They take too much space and are distracting from the focus of your site which is the content. Again, great idea! With a little bit of tweaking with the colours and graphics, you have a winner there.
In the first review, you ask a person not to take it wrong, but immediately make sweeping statements. Who wouldn't take that as unfair criticism? Who wouldn't take that statement as a personal insult, let alone an insult to their creation? But so many people find it much easier to criticize this way and take pleasure out of it too. They like to portray themselves as "tough nuts" and strong characters. And the worst aspect is that they do it in a couple of minutes. They wouldn't even have browsed your site for two minutes, but they find no problem in trashing two weeks of hard work outright not understanding how they would feel if placed on the other side. As I have illustrated being honest and being sensitive to others' feelings are not mutually exclusive.
In the second example review, you take the time to notice a few aspects of the site and give the impression that you care about the structure of the site. You notice a few points from a third-person's point of view and you give some hints on how the visitor's experience can be improved. You actually give the impression of having taken the time to go through the site and finally definitely come across as having some consideration for the site designer's sensitivities. And most importantly you offer a few encouraging words. Who doesn't find this much more pleasant and useful? Who wouldn't respond with a heartfelt "thanks"? Without sacrificing honesty, the point is made with a lot of tact and diplomacy that the website design needs work. And unless the designer is totally biased and unreasonable, he would certainly respond much more positively to such criticism. More pleasantness and the cost is nothing but a few thoughful words and phrases.
The bottom line is that I believe in respecting people and more importantly respecting their work. Because people take so much pride in their creations and identify themselves so much with them. Especially if their work is none of your business and you are merely called upon to review it from a different perspective. Offer your honest perspective but do so politely, constructively and usefully or just don't. It is much pleasanter for all concerned.
Internet and Blogging by
Posted on Wed, Jul 20, 2005 at 14:59 IST (last updated: Wed, Jul 16, 2008 @ 21:07 IST)
Ever wondered why Linux debates are so inflammatory and seemingly so personal every time there is one in progress? Most people attribute it to the fact that Linux users are so religious about their operating system. It is said that any criticism of Linux is intolerable and the blame usually lies on the more fanatical members of the Linux community for hating new ideas and new people who bring in ideas that are contradictory to the so-called "Linux spirit". Does this point of view give us the whole picture? Not quite, in my opinion. Linux flame wars are complex phenomena and not everything can be explained merely by the "Linux is religion" angle.
In fact, I attribute it to something totally different and something totally unrelated to Linux and in fact computers. It is simply explained in a couple of words reverse elitism
which is a purely psycho-social phenomenon. But instead of using big words, let me try and explain with some concrete examples.
What is this reverse elitism? Everybody has heard of elitism, which basically means assuming superiority over one's opponent in a debate and projecting oneself as an exclusive person or part of an exclusive group. Traditionally *nix users have been projected as an elitist group who are unfriendly to new members to the club and use the words "RTFM" ever so often. In fact, the whole concept of elitism in the *nix community can be easily explained in a single four letter acronym: RTFM. Times have long since changed and it's no longer fashionable to be an elitist. The community has changed a lot and elitism has generally been cast aside in favour of inclusivism and friendliness. You can easily notice elitism when you see it and generally people who show elitist attitudes are quite quickly put in their place these days.
So much for elitism. What is reverse elitism then? Reverse elitism is a new trend I see these days on bulletin boards in general and in Linux boards in particular. Simply put, reverse elitism is a strategy that is quite effective in attacking opponents in debates without seemingly using an offensive technique. Reverse elitism is a technique by which you paint yourself as a victim or paint your opponent as being part of an exclusive group and therefore implying that his opinions are not reflective of general opinion. Reverse elitism is when you paint yourself as being a representative of the so-called "masses", of the ubiquitous man-in-the-street. Reverse elitism is when you wear a mask of humility and take the moral high ground and metaphorically tear your opponent to shreds for appearing to be arrogant and elitist in attitude. All these are characteristics of what I like to call "reverse elitism". When seemingly the victim becomes the aggressor and the opponent is the bully who is put into his place.
There is a small but highly vocal group of new Linux users who don the reverse elitist role and attack the Linux community for being an exclusive group not open to new ideas or new people. They are either genuinely frustrated individuals who want to vent their anger on the rest of the community or are merely trolls who want to get a rise out of provoking you. Either way, the effect is the same. Unfortunately reverse elitism is especially successful in Linux debates because of the historical and traditional elitism attributed to the *nix community. It is no wonder then that Linux debates become so heated, because people hate being branded as elitist and hate being clubbed together as a single group with a single, uniform mindset. No wonder that people take such posts so personally and become so vehement in defending Linux when in fact, they are defending themselves unconsciously. In fact, they find themselves going increasingly on the defensive and find that they not only have to defend Linux, but preserve their own non-elitist status as well. Thus the reverse elitist quite often wins without any real arguments or logic. On a side note, in political debates, reverse elitism can be seen in the way people often don the role of the "messiah" or the "representative" of the downtrodden, the victimized and the weak. In fact, reverse elitism exists almost everywhere in the sphere of human debate and discussion.
I think that there is only one way to combat reverse elitism. After all, it is a form of anti-social behaviour just as elitism is. The problem though is that it's often much more subtle than plain arrogance and elitism. It is difficult to detect and once you fall a victim to a reverse elitist, it is much more difficult to extricate yourself. One thing to do is to detect reverse elitism where you see it and learn to ignore it. It is hard to do so, but when a debate is becoming personal in nature without having any genuine flaming, you can bet that reverse elitism is behind it. Another is to read a post very carefully and find out which points hurt you most. If you find a personal attack where there is seemingly none, ninety percent of the time it is a reverse elitist attack. The best option is not to respond to reverse elitism. This is commonly and rather loosely translated as "do not feed the trolls". Unfortunately the second phrase does not quite explain why people feed trolls all the time. It is a losing cause because the more frustrated one gets, the more one is likely to lose control and then say or write something that could easily be interpreted as arrogance and thus elitism, playing right into the hands of an opponent.
Nobody likes to face personal attacks even when clothed in philosophy and seemingly not targetted. It is a fact that indirect attacks tend to sting worse than an open insult. While you can combat an opponent who faces you with the sword, you find it infinitely more difficult to combat somebody who avoids your blows and plunges a dagger in your back when you're not looking.
Reverse elitism is a form of anti-social behaviour pure and simple. Linux flame wars are not always about Linux but about people, their motives and their behaviour under stressful circumstances. Reverse elitist strategies in debates are simply designed to provoke negative emotions in human beings and to lure unsuspecting opponents into a trap and leave them metaphorically beaten and bruised without letting them know what hit them.
There is only one answer to reverse elitism. Learn to ignore it.
Tutorials and HOWTOs by
Posted on Fri, Jul 15, 2005 at 17:04 IST (last updated: Thu, May 7, 2009 @ 21:00 IST)
Any member of any online technical community will tell you that the one question that gets asked on a fairly regular basis is the question: help me choose a web host
or where can I find cheap/free web hosting?
Both these questions come up fairly often and the answer often is a brusque "google it!" Well, out of personal experience I can assure you that finding a good, reliable shared web hosting service on the web can be a fairly nerve-wracking experience and finding one that suits your pocket as well as your requirements can take quite a while, especially when you see so many sites that offer "cheap" or "absolutely FREE" web hosting.
This is where it gets really challenging to sort out the chaff from the wheat. Inevitably most of these web hosting providers do not display a full listing of features available on their hosting package and they allow the customer to "assume" quite a bit which might turn out to be false in the end. Consider the fact that one web hosting service that I found on the web offered a whopping 1000 MB of space for as low as $10 per month, but the moment you click on their feature listing, it strikes you that all is not as sweet as it seems. In a quiet corner, you find the words:
MySQL databases: 1
MySQL database storage: 15 MB
In essence, what this means is that if your website is a dynamically driven database size (which typically require a lot more space than normal, static HTML driven sites) you get only 15 MB of space to work with. Too bad about the remaining space: you can upload all the pictures and photos you want, but none of that space is "smart" space: space that counts towards making your site what it is: a dynamic content-driven website.
Paradoxically, it is the content-driven, dynamic sites that require a hell of a lot more disk space than the static ones for fairly obvious reasons. Databases aren't static entities. You can work with them: add, remove, delete, update content and this is what this generation of websites are all about. Dynamic rather than static. The web hosting provider essentially says: "you can take all the disk space you want, provided they're not used as database storage space. Have fun!" But since you don't need all that space but you need the extra database space which comes with a more expensive package, you end up paying the full amount for a fraction of the usage. In short, "you're screwed."
And what's worse, many of these hosting providers don't provide an iota of information about their true connectivity speeds, their server capacity or their uptime to maintenance ratios. Most of the genuine information is usually buried beneath heaps of unimportant details or even simply absent. Of course you should use their "contact form" and clarify all this, but then how many of us do it? It's just too much hassle to send an e-mail and then wait for a response for a few hours or in some cases, days. Many people just go ahead.
While one might argue that new or basic customers would not require the dynamic database-driven features, it is a wrong assumption. While an inexperienced user would not know what a MySQL database is or what server-side scripting implies, he sure wants to start an online club or forum, a blog or a even large content-management system. All these applications require a combination of database/server side scripting. And all these users stand to lose more when they realize one day that their disk space has run out and what the hell! They've paid for 1000 MB! Of course, it's that 15 MB of database space that has run out but then they saw the space advertised on the front page and jumped on the deal.
That is why it pays to do research. Finding a good hosting service that provides you a honest deal takes a lot of time, research and questioning. If you cannot find these answers on the website at least take the time to ask some questions like:
- What is the total speed of your connectivity? How many servers do you provide and how do you share it?
- What kind of domain/subdomain limits do I have? What is the cost of registering a domain name through you? How many subdomains am I entitled to on my account?
- What is your server uptime normally? How frequently and how long can I expect downtimes?
- Do you provide database support? If so, how many databases and how much space of it can I use in my total hosting account space?
- What server side scripting languages support do you provide?
- What server do you have? Is it Apache/Linux/Unix or is it a Windows server? What kind of backups are taken (if any) and how frequently?
- What kind of front-end you provide for me to access my hosting account? (most professional hosting packages should come with cPanel at least and full FTP support).
- Please provide me with a full list of your terms and conditions of use.
It's not an exhaustive list, but I think these should do to begin with. Of course it's our duty to do our research before paying the money. Since there are a dazzling array of choices on the table it is wise to consider all the choices carefully before making a final decision.
Remember that it pays to take your time to find out. Otherwise you may find some nasty hidden thorns along the way! Happy hosting!
Software and Technology by
Posted on Wed, Jul 6, 2005 at 18:19 IST (last updated: Wed, Jul 16, 2008 @ 20:47 IST)
I must admit that I was nervously awaiting the result of the software patents voting in the EU parliament and I heave a huge sigh of relief and satisfaction at this result.
I just read the story here
It is with great relief that I note that for now this new law has been rejected. That vested interests have lost and common wisdom has prevailed. For software patents would have signalled the beginning of the end for FOSS and innovation in the software line. It was well known that the large corporations supported this bill because they had the most to gain from it while small companies, individuals and independent programmers would have suffered badly as a result of restrictions on software ideas. The very concept of patenting software is restrictive and such an implementation would have effectively put an end to the smaller players in the software industry. It is good to know that people at the EU had enough common sense to put an end to it.
But all is not over. I still believe that danger still hangs over our head and it requires constant vigilance on the part of every concerned citizen. Let us wait and watch developments in this issue in the coming months. But for now, all I can say is: Phew!!
Site management by
Posted on Sat, Jul 2, 2005 at 08:47 IST (last updated: Wed, Jul 16, 2008 @ 20:51 IST)
Another edition of the LiteraryForums.org
newsletter! And this comes at a very auspicious time indeed for we've seen some good activity in the month of June. It has been a good period for LiteraryForums and I'm glad to be back after a period of illness. We've had quite a few new members join up as well and this is quite an encouraging sign.
Changes? The most obvious change is the change in colours and design. To an extent, this was prompted by the unfortunate loss of data which ruined all my good work earlier. I was truly disappointed that a lot of painstaking work was lost because I hadn't taken any backups. Now I have decided to make some changes anyway although these new changes aren't as comprehensive as the changes I had made and planned to implement earlier. However, changes were long overdue and I'm glad to have made some of them at this point. On a minor note, there has been a forum security upgrade as well.
Another aspect is the forum look and feel. It has been my desire from the very beginning to try and change as much of it as possible to give LiteraryForums.org a unique touch and in this regard I have decided that the forum images need complete replacement. Needless to say, this will take some time, but the effort will be worth it. The advantage here is that the new images will match the new theme quite well.
On a general note, I hope that this is just the beginning of all the activity! There was a perceptible increase in forum activity last month and I hope this continues. With more users submitting original content, reviews and discussions, LiteraryForums.org can only become richer. And we're getting closer to reaching 100 members! A significant milestone!
A big 'thank you' to all those members who have made this possible!
Hari (Forum Host)