December 21, 2007

Turned 30 today... more ruminations on me, tech... and life

As opposed to a depressing outlook on life four years ago, I'm really quite pleased with my immediate future. I'm rocking and rolling at DVC (we just got some nice t-shirts), and (at least for the moment) my workload is somewhat manageable. At DVC, anyway.

That said, there's still room for improvement. We still don't have a XPCOM debugger - and with Tamarin reshaping JavaScript next year, it may be harder to do than ever before. (Or easier. It's an open question what will happen to JS debugging in the future. But I'll still try to do some kind of 1.9-compatible mockup.) I postponed my Verbosio work again, and I'm trying to find time for that. I'm still overwhelmed with the amount of Mozilla tasks that I can't find time for, not to mention a number of other very worthy projects to help out on, all of which I have repeatedly dropped the ball on. About the only one I still participate in on a regular basis is CodingForums, where I've been moderating the XML forum for over five years, and helping out for over ten (though even that's suffered lately).

Not to mention the complete (and I do mean complete) lack of a life. For the first time in a decade, I am not able to fly home and visit family this year. Christmas this year will be very, very lonely.

Here's a hint for anyone just entering the software industry: you can find yourself loving your chosen hobby too much. It's happened to me, and though I've benefited in some ways, the tradeoffs hurt.

A few other random thoughts...

  • I guess MTV doesn't care about me any more. 30 years old, right? They're after the teens & twenties. Then again, I'm not sure how much I've cared for MTV myself, either - the best show they had was "The Grind", and that was gone before I graduated high school. More to the point, pop culture has advertised rebellion against the norm for as long as I can remember. Yet I've been more of a rebel than anything you see on the television - rebelling against some of the very practices pop culture extols. How often will you see any semblance of faith, on MTV? Hmm?
  • More to the point (comments about no life notwithstanding), I'm actually happy. Sure, I complain a bit (hmm, I just reviewed my blog entries for this year, and they're remarkably free of gripes... something's up). But there's something about doing what you love doing, and getting paid to do it, that satisfies you.
  • I really wish I was teaching other people this Mozilla stuff. Even as I continue to learn, and to blog about some of what I learn, there's still a tremendous shortage of Mozilla developers available. Which is really sad, because over the past decade, a lot of really bright people have made it a fantastic platform to build on. It's one thing I really envy Dave Humphrey for. He's waking up people to what's possible, on a daily basis. I'd leap at the chance to teach this to others in my spare time, simply because I need a ton of help too - especially at DVC.
  • I miss camping, or anything outdoors-ish. One major downside to not having (or wanting) a car, I guess.
  • Playoffs? Playoffs! Not to mention how a Week 1 game gives my home team the #3 seed over T.B. Five years, including a Super Bowl visit, running...
  • Now that I mention it, MTV doesn't care about me, but I guess the NFL does... tickets to Monster Park aren't cheap. (Neither are their players.) At least the fans in San Francisco weren't that hard on me in late September. To the 49ers Faithful: it's not personal. :-) I only get to see my team play without a television once a year, and only since last year.
  • I really need to clean my apartment.
  • I wasn't really looking forward to turning 30. But it's here now, so... hm, what was I so grumpy about?
Posted by WeirdAl at 5:08 PM | Comments (0)

December 17, 2007

The Web needs a Superfund-like cleanup

Yahoo News. CNN. Ebay. Any major site you visit today has hefty use (or, more accurately, abuse) of HTML. We've pushed HTML far beyond what it was designed to do, and browsers (and developers!) pay the price. Plaxo's Joseph Smarr gave a talk on just what the end-result of this is (featured on planet.mozilla earlier, but here's a link to the horse's mouth: High Performance JavaScript video).

This has been bugging me for a few weeks now, as a deeper-level problem. Part of my job (not just at DVC, but at previous companies) involves figuring out why products I work on break on certain web pages. QA says "We're broken on this page," and before I can work on the bug I have to dismantle the page. Imagine how much fun it is to dismantle code like: <div><div><div><div><div><div><div><div><div>...</div></div></div></div></div></div></div></div></div>... Or the horrors of table-based layout, especially nested-table-based layout. This practice is officially known as "minimizing a testcase", but realistically it ought to be called a steaming pile of fertilizer. No one wants to do it, and pages using hyperbloated markup make it ten times harder. (Especially when one character of whitespace can make the bug disappear.) Then there's the worst feeling of all: minimizing a testcase, fixing the bug, and then finding out there's something else busted on the same page, which your fix didn't catch.

Unfortunately, it's a vicious cycle. Major sites want to work in all major browsers, and major browsers don't want to break major sites. People are quick to blame Internet Explorer (and I'm one of those people), but that's not enough. We need to understand HTML + JavaScript + CSS + AJAX + smart developers = radioactive sludge code that just barely does what we want.

Seriously, how much code should a web page need to implement a tabbox?

I just spotted from GMail a Quote of the Day that really summarizes this well, by Gen. George S. Patton: "If everyone is thinking alike, then somebody isn't thinking."

There are design flaws in the whole process that make some of this unfixable in its current state. XML Namespaces has been around since 1999, but HTML isn't XML (unless you convert wholesale to XHTML). So as long as we keep generating web pages with just HTML, we're stuck. On the other hand, HTML isn't going to go away any time soon.

Maybe it's a standardized user-interface language we need. Mozilla has XUL (which has never worked as well on web pages as it has for chrome apps), Microsoft has XAML (oh, wait, you need Vista for that, don't you?), and somewhere there's a W3C discussion about creating a unified UI language (but how credible is the W3C among developers these days?).

The Tamarin project should improve JS performance significantly (and when it does, Microsoft and the others will be forced to respond - good news for all users), but this doesn't solve the underlying problem - it just makes the problematic code run faster.

Of course, all this is "Web 2.0" - but I don't think anyone really understands that Web 2.0 should be easier to work with than Web 1.0. Web 2.0 shouldn't just be about cool widgets.

How can we, particularly Mozilla developers, contribute to a fix? (It'd be the height of arrogance to ask "How can we fix this ourselves?".)

One way would be to encourage web sites to switch to XHTML (and serve it as something other than text/html). This would enable mixing HTML with other languages more efficiently (even more than with XML data islands, which end up being generic XML). To those who say, "But Internet Explorer doesn't really support XHTML," they should start screaming at Internet Explorer's team for this. Here's a really good question for Microsoft: for the same effect, would IE's parser team prefer to eat hundreds of HTML tags, plus hundreds of lines of JavaScript, plus CSS, or would the team prefer to eat a few dozen XAML tags mixed in with XHTML? I know which I would pick - the one that requires fewer bytes to express in web page source code.

Another way would be to make a standard user-interface language for the web - and implement it so that web pages could use it. Stop downloading cruft from the web - store it locally on the machine as sandboxed components. (Think XTF or XBL without privileges to implement user-interface.) Make it something that doesn't need a whole package from Yahoo!, another package from Google, another package from Tom's Best User Interface Widgets Page, etc. Just make it something everyone can use. And if it means a plug-in for a stubborn vendor, hire someone to write the damn plug-in! (Provided that the plug-in itself has a clearly available spec and a clearly available owner.)

I think the biggest impact we could have would be to ask the people who build and maintain these major sites, "Hey, what can we add support for that would make your jobs easier and your code cleaner?" It would not surprise me to find out that Mozilla was already talking behind the scenes to CNN, Ebay, Yahoo, etc. - specifically to their web engineers. It also wouldn't surprise me if they weren't, but instead focusing efforts on making the browser UI better, the user experience better, and on meeting standards that these major sites just don't give a damn about - while still trying to render these sites well.

I don't think HTML is broken, nor is JavaScript, CSS, or anything else. I simply think we're demanding far too much from them, and we need a better solution for the parts of the web that really put HTML to the test. Even WHATWG doesn't go far enough...

</dvorak>

Posted by WeirdAl at 1:02 PM | Comments (6)