Category: Technology

Why end-users prefer blogs to CMSes and more

Posted at 09:04:13 am by hari under Opinions, Technology, Programming (755 views)

While I was writing the code for my new blog/CMS system yesterday, I realized why people prefer blogs to Content Management Systems and why developers prefer databases to XML for content storage.

To answer the first question: blogs enforce structure on websites which makes it very easy to insert content. By providing a convenient method of organizing information without requiring too much input from the end user, blogging platforms are way friendlier and easier to administer/manage from the back-end.

CMSes are unique beasts. They have a layer of abstraction that requires the end user to think a lot more about the structure. Even a simple CMS like Drupal forces you to think about content organization. While Drupal can be used as a basic blog, I think the point is that it is so flexible in terms of content organization that it does confuse one as to what is the best or optimal way of using it. That, I think is the crux of the issue. Thinking, planning and organizing a large website is a specialist design team's job. Blogging, on the other hand, allows people to create as much content as they want without having to indulge in structuring. Of course, categories and tagging allow people to manage content to an extent, but that is built into the system and so requires little maintenance. CMSes allow such flexibility in design that sometimes it's harder to think about how to manage content and to visualize how future content will affect a particular structure. They also carry a lot of features (or bloat, if you prefer) that are unnecessary for personal websites.

Coming to the second point, I think the reason why databases are more popular than XML with developers is something similar. Databases impose norms and rigid structure (fields and records). Of course, they are powerful because they can be queried in an endless variety of ways. But they scale well for small as well as large applications and it is easier to visualize how a database design will work with large amounts of data than to custom design an XML format that will allow future flexibility. I also think that with XML there's the issue of choosing a suitable XML parser for the particular application in question. The generic nature of XML parsing imposes a lot more pre-planning in terms of code, while it is a lot easier to write a specific set of SQL queries to work on a particular database that will completely manage data-handling for the application.

In the end, I think the answer lies in the fact that as people, we like structure and simplicity to generic flexibility and complexity in design. Structure doesn't necessarily mean rigidity while simplicity doesn't necessarily imply lack of features. It's the layer of abstraction that makes generic design (as opposed to one specific design) harder to visualize.

Computers in those school days

Posted at 09:21:25 am by hari under Tidbits, Society/Community, Technology (241 views)

A lot of people these days tend to look upon the computer as "just a tool to get the job done" and adopt an indifferent attitude as to how things actually get done. You usually find these kinds of people on Linux online forums who use this as an excuse to justify the existence of Microsoft Windows (as though justification was necessary).

Well, this post isn't about Linux or Windows, but I can actually remember a time when computers were an exciting new technological marvel, available only in school and college computer labaratories and protected zealously by the authorities. My earliest experience of computers was at my school when we were taught the basics of MS-DOS and then GW-BASIC. Because computers were seen as educational tools and not the productivity machines as they are today, programming was the first thing that we dived into as young, eager-beaver students.

In fact, back then at school, we always had to write down our programs on pen and paper before we were allowed into the computer lab (once a week) to type them down and then test them out for errors. If we hadn't written down these programs taught in the theory class, we weren't allowed inside till we did. I vaguely remember the excitement of entering the CS lab in those days. Picture a small air-conditioned, musty-smelling room (we could enter only after removing our shoes and socks) with about a dozen computers, mostly equipped with black-and-white low-resolution EGA/VGA monitors. No mouse, no GUI, no internet, no Windows (we had MS-DOS with an early version of Novell Netware for networking), no CDROM, no games - in fact, nothing which can be identified with computers of this day and age. If I remember right, there was one VGA colour monitor (which was usually monopolized by the staff) and only one very ancient dot-matrix printer to print out our program listings during the practical examinations, but otherwise peripherals were few and far between. The student-computer ratio was 3:1 and so three of us sat at one terminal, taking turns turns to type in our programs (needless to say, I was the quickest typist then ;) ) From GW-BASIC, we graduated to Pascal the next year and quickly moved on to Borland Turbo C/C++. Most of us never owned a computer then so the CS lab hour was something to look forward to the whole week. Whether I did my other homework or not, I used to make sure that the programs taught in the previous theory class were written down well in advance to make sure I would not be denied entry.

Because of my interest in computers, I later attended a computer course in a place called Computer Point (now defunct). I actually learned MS-DOS systematically and thoroughly along with software applications like dBase, Lotus 123 and even FoxPro (for DOS) later. In Computer Point, we actually had access to games like Prince of Persia (the original classic) and many other classic EGA DOS games like Alley Cat. I was enchanted and spent hours of the day at Computer Point (even after class) just to play Prince of Persia (I didn't know the cheat-codes back then). The first time I used Windows 3.11 was in Computer Point and it was an exciting moment when I actually had access to a colour monitor and a system with a mouse. Of course, my time at the machine was still restricted since there were people waiting to use it. I grew dissatisfied with this arrangement and pestered my parents to buy a computer (which was still a very expensive acquisition for a home at that time). In the meantime, I played around with my neighbour's powerful (at that time), 80286-driven PC (again, with no GUI) till we could actually purchase our first computer (an unbranded, assembled 80486 equipped with Microsoft Windows 3.11). Windows 3.11 (Windows for Workgroups) was my first GUI experience: it was something novel and sensational and pretty soon we "upgraded" to a colour monitor to enjoy the full experience of a graphical interface.

Although I have never looked back since then, I never recaptured the thrill I had about computers as rare, jealously guarded inaccessible wonders which had a touch of magic and mystery about them. The closest I got to this feeling again was when I first began using Linux.

This generation of computer users brought up on mobile phones and iPods very early in their lives might never experience or fully understand it. I feel so old :P

Stupid, annoying VCD/DVD edits

Posted at 05:58:15 pm by hari under Opinions, Technology (157 views)

If you own a sizable collection of VCD or DVD movies you would understand what I am talking about.

Why do VCD and DVD manufacturers randomly edit portions of the movies they sell? It's not censorship, because there's nothing in censor in the kind of movies I watch. Yet these distributors cut out 2 seconds here, 10 seconds there, half a minute here and two minutes there and before you know it the whole movie experience is ruined.

In one of the movies I bought recently, almost the entire climax scene was cut out! The whole movie fell flat. A 30-second cut can make all the difference between a great movie and a good one. This is exactly what happens when unprofessional idiots decide to take liberties with the video sequence.

Talk about stupidity. They let the whole (entirely useless) credits sequence run in full but decide that they didn't have enough space to fit in the most important part of the movie! One also misses subtle humour sequences because the DVD producers are too thick-headed to understand the importance or value of such scenes. Sometimes it's just a word or two cut out, but that makes all the difference, I say! For instance, in one sequence of a movie I really enjoy, the villain would beg the hero to let him go during a big fight sequence at the end, but that bit was chopped off in the VCD. The scene was flat because the tension really builds up at that time when the hero advances upon him to beat him up in spite of his appeal.

When I pay the full price for a legal DVD or a VCD, I expect the full movie to be available, without cuts. I'm not talking about cuts made by the official censors before the movie got released, but the cuts made by these idiot DVD manufacturers in their studio. If they absolutely have to make edits, at least the fact should be clearly mentioned in the cover. If it's not mentioned, as a consumer I feel cheated out of my money. Why should people have to put up with it? Do these distributors get away with it because most consumers cannot be bothered about lodging a complaint? When the whole movie industry is crying foul about piracy, why should customers stay silent when they're being subtly cheated in this manner?

What is surprising is that this practice of random editing seems to be fairly common in the industry. I've not seen too many unedited movie VCDs or DVDs so far. Almost every single one in my collection has at least one perceptible sequence cut. Most have two or more. I really cannot understand the reason for this practice. Disk space is definitely not a constraint with DVDs and most VCD movies are packaged in sets of two. That should be enough to fit the whole movie intact. What do they gain by wasting so much effort editing?

On programming

Posted at 08:35:49 am by hari under Opinions, Technology, Programming (289 views)

If you are a programmer in C++ and you think you're fairly advanced, you should take a course of this book which my brother bought recently: Modern C++ Design: Generic Programming and Design Patterns Applied (full review here). I read a few chapters and came away with my head swirling in the clouds. This book is essentially about generic programming using C++ templates and illustrates and implements concepts that would truly challenge even the most advanced programmers because it talks about some of the most difficult theoritical concepts you would ever have come across - namely meta meta-programming (even understanding this term might require considerable effort). If you thought basic template programming in C++ was hard enough to grasp, then this pushes even templates to the limit. In short it is revolutionary in thought simply because it requires one to completely rethink the whole idea of traditional OOP.

Nevertheless, it really made me understand how much programming has advanced of late - particularly conceptual programming. In today's context, the term "programming" itself might become irrelevant simply because it's too broad a term to encapsulate all the different methods and paradigms of software design and engineering. In fact, I would classify software design itself on the following broad levels.

  • Solving a particular problem using a specific method. This is the most basic level of software development that I can think of. This can probably be thought of as algorithmic programming in its purest form. Both the problem and the solution are well defined and the challenge is to translate the solution in a computer-readable form.
  • Solving a particular problem by choosing from different methods. This is the next level of programming where you have a well-defined problem and different methods of solving them. Your main worry here is to choose the best method under a variety of constraints.
  • Devising new methods to solve a well-defined problem. This could be thought of as creative programming - where a problem is well-defined, but the solution may not be as straightforward.
  • Using an existing paradigm to generate methods of solving undefined problems. This is meta-programming at one level. Where problems are not yet well-defined, but you devise solutions based on an existing concept (like Object-Oriented Programming) which would cover expansion of scope. This could probably be best thought of as "anticipatory programming" - where you attempt to make code re-usable and extendable. This is the stage of advanced programming which requires more planning than coding.
  • Creating a new paradigm which will generate methods of solving undefined problems. Now this is what we're talking about in the book I mentioned. It creates new paradigms of programming which will generate ways of solving future problems without writing new code. In short, it is generic programming at its height. Even grasping the basic idea is hard enough. I call it "meta meta-programming" because both the problem and the solution are undefined and requires the highest degree of skill and imagination to visualize.

We've come a long way from the traditional idea of programming - that much is sure.

Apart from this, I would also classify complexity in programming into two distinct categories.

  • Theoritical complexity - as illustrated above, you can see how a theoritical complexity increases when you start thinking about concepts and programming paradigms. Theoritical complexity is the difficulty you encounter when you think about the software design and how best to match a design with a particular problem.
  • Practical complexity - this is when the actual problem to be solved is inherently difficult. It can be anything from writing a full-fledged 3d game requiring intricate knowledge of vector physics and 3d geometry to writing an entire Operating System. Practical complexity often forces programmers to avoid theoritical complexity and choose solutions which are not necessarily suitable.

Often new programming paradigms are introduced so that practical complexity can be reduced as much as possible. But in introducing new paradigms, theoritical complexity is increased a hundred-fold which requires a complete re-learning of skills and techniques. It's like changing the whole grammar of a well-known language like English. But the time invested in learning a new paradigm might actually be worth it as it can help solve future problems of the same kind much more productively. That's why there are two kinds of programmers in this world - those who love exploring new theories to solve problems and those who just want to get the job done as quickly as possible. I can see merit in both sides.

Truly, when you go in-depth into these issues, you realize how little you actually know. If nothing else, exploring these ideas made me realize how little I know and understand in the vast field of software application development.

Linux ATMs in rural India

Posted at 08:02:52 am by hari under Linux/*nix, Society/Community, Technology, In the News (388 views)

I read a piece of news yesterday in my local newspaper about Linux-based ATMs which might soon become a reality in rural India (I am unable to find any online source for this news). With Linux-based ATMs being much cheaper than traditional ATMs using proprietary software, I can see how this can help banks gain a competitive advantage by being able to serve a larger number of customers at a lower cost. The cost-benefit advantage is *huge* when you consider the scales of population involved and equally, the benefits for the people are enormous. It also shows that there is still a large, untapped market in rural areas for such technological amenities. I do wish there would be more coverage of such news in the mainstream media - it might help convince those who continue to believe that Linux is merely a competitor to Microsoft on the destkop and doesn't have any utility beyond that. I think the West particularly isn't able to appreciate that the real action for Linux is in the so-called third-world countries looking to modernize technology as quickly and as cost-effectively as possible.

The real power of Linux is seen not by elite desktop or power users sitting in their air-conditioned homes or offices, but by organizations looking for cost advantage and competitiveness for commercial and community projects like this. And this is how Linux helps in truly empowering people - by providing freely available technology that is truly inexpensive and accessible by all.

1 2 3 4 »