Wednesday 4 July 2007
Things I Hate
Web 2.0 Startups ... Seriously, how many startups per week are sending out press releases like
Wallyport is a new social networking convergence service, currently in invitation-only alpha testing. This product aggregates Web 2.0 functionality, tools, creativity and a portal for converging business with user generated content. The premise is to offer diverse services where individuals, groups and businesses can take advantage of proximity and community.
Can anyone take this seriously? How many MySpace, Beebo, Facebook, Twitter clones does the world really need? How many Youtube clones? How many search engines? Why do thousands of "me too" startups get funded?* And who wants to work in one? "We're Youtube ... with voice chat!" Spare me.
There are so many interesting and challenging problems out there. For example, a hundred startups trying different approaches to parallel programming could actually be a useful contribution to the field. Or a few dozen Second Life clones. Personal life recorders. Omniscient debuggers. Web browsers. If I ever get involved in a startup, it had better not ever appear in a "Top 100" list of anything (unless it launched the bandwagon).
* Yes, I know the answer is that by and large VCs are sheep.
XML ... To quote Phil Wadler, "The problem XML solves is not very hard ... and XML doesn't solve it very well."
OK, so a simple generic extensible structured format is useful. Fortunately there's JSON.
Enterprise Software ... The "enterprise" breeds complex, bloated, and boring software. Hello DCE, CORBA, J2EE, WS-* and many more. It seems that if you create a niche for extremely expensive software that doesn't really work, someone will fill it.
(Interestingly, for a long time Microsoft was smart enough to stay out of these tar pits, but they've bought deeply into WS-*. Times change.)
IT ... Computing educators wonder why they have trouble attracting bright students to the field. Maybe it's because smart people aren't inspired by the software bureaucracy that is the domain of most corporate "IT departments". Every time I read about New Zealand's "IT industry" my stomach churns. We need to draw a clear line between IT and the cool stuff, and make sure that attention is focused on the cool side of the line.
Phew. That rant was building up for a while.
Comments
I have searched but not come across a balanced, impartial analysis of the two. They obviously overlap to a great degree but it seems everyone has different problems they want solved and so end up rooting for one or the other. Do you know of any articles that provide a broad and balanced look at the two, possibly including requirements for transformation abilities like XSLT?
Thanks.
None of us who had a run in with them or the results of same wanted to have anything to do with that part of the field afterwards.
Another thing that I forgot to rant about was how people advocate XML because it's "transformable". Like "CSS should be in XML syntax because then we could transform it with XSLT!" As if anyone has ever wanted to do that.
JSON and XML are similar but really they suit different purposes -- it's not like anyone would write an office format in JSON, for example. So yes, as you're working on document-centric data then XML is probably a better fit than JSON.
But if you're just storing key:value pairs then XML would be overkill, and JSON would be better. And there is now an equivalent to XSLT... JSON-T for reformatting JSON.
I recently came across a webapp that sent JSON to the browser, which - in javascript - was reformatted into HTML. The logic was rather complex, and they'd basically rewritten their C# server-side display logic in javascript to reformat JSON into HTML. Their company policy was sync up their C# display logic in JS. Now there's a place they should have just used XML rather than JSON.
I'm going to disagree with Robert here, despite being a fellow Kiwi (in Wellington), and say that XSLT is a pretty great language, but mostly so when used with XProc or some XML pipeline language.. hopefully one that allows stages of regular code where necessary.
Secondly, I don’t know what you’re talking about as far as XSLT is concerned. Granted, most people really don’t understand XSLT, and it took me a long time until I got it myself, because every. Single. Tutorial about them. Ever written. Is utter crap. XSLT is more misunderstood than Javascript! But if you use it well, you can express transformations in it in a 10th of the code that the same thing would take in imperative languages. My weblog lives in a single Atom feed which gets processed by XSLT, and I stay amazed that years after writing all that code, it has remained incredibly easy to add small but tricky features to it. If it were written in an imperative language, it would be much harder to maintain.
FWIW, XSLT does not have a magical monopoly on this stuff; it’s its functional match-driven tree-walk programming paradigm that yields this sort of extremely powerful and concise transforms, and in theory this paradigm could be implemented in more or less any language (and for any data structure, not just XML DOMs). It’s just that no one has actually done that, although some of the more obscure functional languages come close.
The one thing that really sucks about XSLT is the verbose syntax. Even without abandoning XML as the base grammar, it could be a lot more concise. And using XML as the base grammar is simultaneously a stroke of genius (ever heard of Lisp macros?) and at the same time utterly retarded (my hovercraft is full of angle brackets!).
XML and XSLT serve particular purposes, and they do so very, very well, as far as they go. But they are no panacea or a silver bullet to solve every single problem. If you try to use them for purposes they weren’t designed for, don’t be surprised if they break down.
And yeah, using XML as the base grammar for CSS would be retarded. Using JSON as the base grammar for CSS? Now that’s an idea I could get behind.
Now if only we could get rid of the rest of the web programming morass. HTML, CSS, XML, XSLT, and all the rest. Pity that will never happen.
Javascript can stay, obviously. Otherwise JSON wouldn't work.
Aristotle - You say using JSON as the base grammar for CSS would be good? Check out http://en.wikipedia.org/wiki/JavaScript_Style_Sheets - choice quote: "It now remains little more than a historical footnote, with many Web developers not even being aware of its existence". Pity.
So if you are a VC you take a look at the clones of an existing product, look at the user take up rate, then buy in.
It worked for YouTube, why not for more 'web 2.0' products.
Take myspace, remember geocities? Back in the old days before it was owned by Yahoo? Clone that = MySpace.
XML = turd. Lets go back to ini files.
Nice post though :-)
monk.e.boy
Well, I'll take your "anyone with a clue" gibe as meaning that you don't yet have a cogent argument against the scenario I mentioned. That when you're replacing text nodes or small parts of the page then JSON is a good choice, but X(HT)ML is better than putting too much display logic in JavaScript.
Now I'm not bashing either format, and obviously JSON would be a good replacement for INI files -- it's just that all data isn't INI, some is HTML or word processor files, and JSON would be a poor fit for that.
@ Aristotle - I have experienced the frustratingly mind-bending nature of XSLT but also have been in awe of its power on more than one occasion - the latest spec seems to be moving in the right direction, but is sure is a different world. If you ever write an XSLT tutorial, let me know! (mawrya_at_furtherNorth_net) Its always a joy to read an author who "gets it".
@ROC - Thanks for your blog, I enjoy it! And I have to agree, CSS in XML would be silly. CSS is not a "document" like an expense report or an invoice or a web page, its just a "computer file", a list key:value pairs.