Devil’s Advocate: The Web

Everyone that has a living (and networked) computer in his house has seen it. The revolution of our century in computing, the World Wide Web (WWW). Many consider it the next big-bang platform. Google, YouTube, and Facebook among others, deliver a variety of services for all kinds of taste. Social networks, video, music, and e-commerce is now done by web applications.

In addition, many traditional kind of applications are also web-ified, such as government facilities that have all transformed into e-Government. Yes, it is true. You don’t have to run anymore, two more clicks from your chair, and your dreams may come true.

Back then …

… i was a student. I remember surfing the web, that was comprised of simple, for today’s standards of course, HTML pages, downloading C compilers, and recent patches for video games. I also learned of dynamic content, CGI based applications with Perl and later with PHP. I even developed some web applications myself. Then i heard of Java and applets, more dynamic content in a stateless world. Cookies, hidden parameters, hashes, sessions, all concepts that gave birth to the modern era of computing.

Best effort …

… is what the standard says about HTML rendering. In simple english, “do the best you can” and in a more simple manner “write the worst code ever, it is my fault, not yours”. What happens if you open the <b> tag and never close it? Nothing at all. What even happens if you do not know what <custom_tag> means? Just ignore it.

In this platform, we based our dreams regarding the future of our applications, and to make it worse we decided to make it even worse. And we did it beautifully, we took the task of web design from the computer scientist and we created a bunch of incompatible technologies.

The Tower of Babel

Indeed the world-wide web consists of a bunch of unrelated, badly coupled technologies. For example, we have CSS and HTML. What was the key idea behind them? Who knows? We created HTML that followed a specific notation, that obeyed the tag open – tag close rule and then we decided (years later) to defy it and create something like the X configuration files. Why is that? Nobody knows, and keep in mind that they were proposed by the same organisation, W3C.

In all this, we tried to give more juice to it by adding a javascript, that simply added HTML in the start, and later of modified the DOM tree of a page. Superb idea, we created a scripting language that is domain-specific but not exactly to serve its purpose. Javascript has the design concept of a general-purpose programming language, yet we use it like XSLT, to modify XML data. I am sure it is fun to traverse node lists and create new tags the hard way.

At the end, to complete our divine masterpiece, we made the ultimate move. We created incompatible web browsers, that had unique features. So it is nice that a web developer, must have Internet Explorer, Opera, Safari, Firefox, Chrome and Camino to check if the web site works and is displayed correctly. And yes each browser it is like a platform with unique add-ons, interpretation and implementation of the web standards (what?). So what if the menu is an inch lower in Internet Explorer? We have to live with it.

I will not refer to Java applets, flash or Silverlight. All those technologies are helping to increase the complexity not reduce it, introducing more and more diverse features.

Give the Web Back …

… to the computer scientists, because now it is a playground. Everyone can do whatever he wants and get away with it. The web is now built on unstable ground, and it will soon collapse. See all the web apps, like gmail. Try to estimate the effort behind the creation of it. You think it is fun or creative to do it? Or do you think that it would require half the time of creating it in a decent development platform? No, I’m not trying to estimate the development time here, i know it is a very difficult task.

Programmers Love the Web …

… and they want the web to love them back. I do not think i have the required skill to propose things to do it better, so i want you to add a big IMHO (In My Humble Opinion) just before every bullet that follows. So i think that it is time to …

… to enforce the standards. And i mean no best effort service anymore. The web has now penetrated all households and all businesses, time to mature.

… to create a compatible platform. No more dozens of browsers with unique behavior. I want it to work the same way in each one of them. Why LaTeX does it? Do the same.

… to find a decent scripting language. I think javascript is not enough. We create specialized languages for this kind of work.

… to try and find a common syntax for all the related technologies. We like XML notation? Stick with it! Do not create more and more languages that cause diversity. We like humans to learn and use it.

… to find ONE standard for HTML. I do not care who will it be. But it is funny to see standards like, XHTML, HTML 4.01, strict, and transitional.

In the End …

… we all use it. Even the most non-technical user knows that <b>text</b> prints the text bold. We all like blogging, forums and googling. Let’s make it work the right way.

The Zen of Multiplexing (republished)

I always argue with network administrators. They use firewalls to block and monitor the traffic of the intranet and refuse to open any other port except 80 (of course) for any other service.

Ports in TCP and UDP exist for the sole reason for multiplexing many virtual channels on one physical medium. Those guys (and many others) seem to forget that and re-invent multiplexing techniques on higher layers, using web services for example (See Figure below).

How can you stay in the market? Say the same technology again and again.
How can you stay in the market? Sell the same technology again and again.

Original Post

Chrome BETA on OS X

Chrome for Mac OS X is here!

Chrome rocks!
Chrome rocks!

But still they have to iron out some bugs.

I'm sure they are going to fix that in the next version.
I am sure they are going to fix that in the next version!

Top 5 Blog Posts for 2008

  1. Class and Instance Variables in Python (13 November 2007, 785 hits) link
  2. Funny Unix Commands (13 June 2008, 212 hits) link
  3. So long and thanks for the fish (22 January 2008, 105 hits) link
  4. It Took Me 25 years … (26 May 2008, 85 hits) link
  5. Deja-Vu in Java (06 February 2008, 65 hits) link