2004-12-12

Tyranny of the geeks

Nick Bradbury blogja hivatkozik erre:

Adam Bosworth, formerly of Microsoft and BEA and now at Google has probably written one of the best blog posts I've ever seen at http://www.adambosworth.net/archives/000031.html. Its a transcript of a talk he has given where he talks about KISS( no, not the French kind, more of the Keep it Simple, Stupid kind). Follow the link and read that post first. In fact, if you're a software developer, take a large printout and paste it over your bed for you won't hear more sound advice.But I want to deal with something Adam doesn't deal with but implies a lot. Something I'd call 'tyranny of the geeks'.

Adam talks of KISS and how the simpler interface wins out over the more complex interface in the long run. For example, Ted Nelson's Xanadu is nowhere to be seen while the World Wide Web, full of its 404s 'is' the Internet for most people. E-mail doesn't work over some complex binary format - it works over simple text messages. In the long run, simple is better. However, this is a fact sadly lost for most people today. Let me take a few glaring examples

HTML and the web :The 'crime' committed by Internet Explorer

I remember reading some comments on http://blogs.msdn.com/ie where the commenter had basically blamed the IE team for broken HTML today. He argued that IE (though Netscape had started this and not IE) had created havoc by accepting bad HTML. I think that guy is out his mind. Here's why.

Geeks like us can't live without something being strictly defined. We crave to know how exactly stuff works - vagueness and ambiguity is abhorred. However, let's look at the explosion of the Web. Almost all the best designers I know learnt their design by doing 'View->Source'. They opened up a page and seeing how the source looked like, typed out a few tags in Notepad. I remember the excitement when I first saw the output of some HTML code 5 years. Now, imagine if all I had got back was an error complaining of a tag which wasn't closed. I might have been geeky enough to try and fix it - most other people would have abandoned their foray.

Programming languages need strict interpretation - if someone makes a mistake, it would be catastrophic not to point out the error. However, the web is a visual medium. Turn the clock back to some 5 years ago when everybody and his neighbour had a personal homepage in AngelFire or Geocities. If all they had seen was an error message complaining of a tag that hadn't been closed - would they have persisted? I doubt it. Geeks would - but your average geocities homepage guy wouldn't have. If browsers aren't as forgiving as they are today, most of the customized templates on Blogspot wouldn't work. I cringe every time I see someone flaming someone else for not being XHTML compliant. Tim Bray - if you're reading this, I want to know something. Why is XML case-sensitive? No human-being ever thinks in case-sensitive terms. A is a. End of story. So now, I have a situation where writing <html> </HTML> wouldn't be XHTML compliant. And what do I get out of XHTML apart from geek-bragging rights and this strange idea of 'standards-compliance'? Does it give me more freedom? Does it help my viewers? My customers?

[Update: Be careful what you wish for you just might get it. Tim Bray posts in my comments as to why this was done]

In the 'Art of Unix Programming', Eric.S.Raymond argues for programs being liberal in the input they receive but carefully makes an exception for web browsers. Probably because crediting web browsers would mean crediting the IE team. Imagine your mom being confronted with a page which says "Broken HTML - unclosed tag". IE coming up with its best guess for an implementation is a far better idea. I love the Firefox team for being liberal on this too.

People argue that broken HTML is a problem today and this was caused by Netscape and IE being forgiving. Yes- HTML might be broken but part of the credit for the huge success of the web must go to those early Netscape and IE hackers who figured out that normal people don't care about <B><I> </B></I>.

HTML and the web (contd) : The story with CSS

I remember reading a post on www.alistapart.com which dealt with image roll-overs. I remember posting a comment saying "We're in 2004 and we're still talking about image roll-overs"? He couldnt have been more apt. Nowadays, it is the 'in'-thing to be CSS-aware. If you're dumb enough to use a table tag, you're branded as a clueless moron. However, no one really tells you why table tags are bad. In fact, the equivalent CSS for generating something like your standard sign-up form is downright scary. And with every browser (Opera, Firfox, IE) having a different idea on what 'right' CSS is, you're much safer with table tags. For those using CSS and use divs and floats to build their tables, I ask them why. Why do something that is so un-intuitive? I could teach a kid about rows and columsn. Most programmers won't understand floats and block elements and why float actually means 'float' and not 'align'. Its crazy!

The problem is that the geeks don't like the idea that the web has no structure. We, in our inherent geekiness, don't like the idea of people using font tags. We don't like the idea of people mixing content and presentation. We say "Hell..let them inherit CSS attributes!". And we like to criticize the browsers which allow normal people to use HTML. Its a typical old-boys club attitude - we don't like the idea of other people actually enroaching on our domain so we put barriers for them. We say "include your CSS files", "make everything lower-case", "understand the box model".

Somehow the rows and cells of a good-old table tag seems more alluring.

RSS aggregators and Nick Bradbury

Some time ago, there was a remarkable argument between two opposing RSS reader camps. One camp argued that all invalid RSS (and Atom) should be rejected outright. The other camp (with Nick Bradbury probably being the most vociferous), said that aggregators should make an attempt to parse bad RSS. Nick said something along the lines of how his customers wouldn't really care whether the feed has an invalid date format or not. They would just say "Show me the damn thing!". The fact that Nick was probably the only one among the lot who had to *sell* aggregators also said a great deal. If an aggregator is going to reject a lot of feeds on the basis of it being the wrong encoding or some other geeky thing, I'm going to abandon it for another aggregator which can. I remember pasting the OPML file for pdcbloggers into FeedDemon (an early version) and Feeddemon rejected it saying that it was an invalid OPML file. The geek that I am, I opened it up in Notepad and to the human eye, it looked all right. When I posted a question on this on the forum, Nick posted back saying how it was missing one trivial tag. Hundreds of feeds couldnt be loaded in Feeddemon only because someone had forgotten one tag. Seems silly doesnt it that after so many decades of computing, computer software is so dumb that it cant figure out a file which is 99% correct?

Hurray to all the Nick Bradburys of the world - we need more people like you. We need more people like you thinking of what is the best thing for the end user rather than having long and unnecessary flame-wars on what is the best way to represent a date.

A year ago, I read up a lot on the Semantic Web and RDF. I have to admit that I didn't understand any of it. Any of it. Ontologies, RDF, OWL, what not. However, you see blogs and enclosures getting the same effect with only a fraction of the complexity. I dont need smart agents to find what I want - I just search in Google and it is usally smart enough to give me what I need. I dont have high hopes for the semantic web unless they simplify and do it real soon.

 

Edit and Continue

This is another pet topic of mine as I have some experience with the C# implementation of EnC. A lot of bloggers have opposed EnC talking of it leading to bad software practices. I fail to understand this reasoning - why take away a tool from someone on the basis of whether it could be used harmfully? Most Windows users wouldnt be aware that something as powerful as NTSD (the debugger) ships along with their operating system. However, it is an invaluable tool when you can't install VS.NET on a machine thousands of kilometers away. The same argument holds true here - I'm debugging through an ASP.NET application and after 3 hours, I find that there is a bug due to me writing a '<=" as a "<".  You really want me to spend another 3 hours getting to that point? Is that a good use of my time? I don't think so. I remember reading an interview with one of the Id (the Doom guys) developers where he said how the addition of EnC to VC++ 6 was a huge thing to them. When you have several bots interacting at random with a 3d engine, reproducing the entire thing may not be so easy.

But this is another example of geek tyranny. Most 'hardcore' geeks don't like VB programmers. Truth of the matter is, VB gets the job done, like it or not. And for someone writing some small internal tool, EnC is a bigger deal than being asked to a set of unit tests.

 

Programming languages

The C and C++ hackers sneer at the Python and Perl people.I wrote a web crawler in Python recently and I shudder at the prospect of writing the same thing in C/C++. Ritchie and Stroustroup might be great geniuses - but the lack of an inbuilt string type was a huge mistake. Character arrays? Give me a break! Imagine dealing with an integer as a set of bits all the time. All these buffer overrun problems wouldn't have existed if arrays knew their size and there was no such thing as the null termination character.

The argument made in favor of C and C++ is performance. With Moore's Law, that argument has run out of steam a long time ago. Unless you're writing device drivers, there is no good reason to use C and C++ and have to worry about whether strncpy adds a null-terminating character or not. The virtual machine is the future with dynamic languages showing the way for languages. I remember seeing C-Omega for the first time - my first reaction was "Man..this is so natural!". But the purists (the geeks) wouldn't agree. They want their character pointers, their factory classes. They don't like the idea of people actually writing code without having to figure out what pointer indirection is.

I could go on and on about programming languages - but this is somewhere where KISS is really taking hold with languages like Python and Ruby showing the way.

We geeks need a reality check. And we need it soon.

 


This Blog Hosted On: http://www.DotNetJunkies.com/
[Via Sriram Krishnan]