WWW2006 and Me

I’m headin’ to Scotland tomorrow for WWW2006, where I’ll be presenting twice:

AIM Pages

We’ve launched!! Hooray!! You can go check it out for yourself over here. If you want to create a profile, you can do that too. All you need is an AIM screen name (and who doesn’t have one of those?) to get started.\
This project has been more fun than anything else I’ve done in my \~11 years at AOL. It was full of huge technical challenges, was a great place for us to try out new things, and the team was probably the best I’ve ever worked with. From product management to QA to Operations and the rest of the developers, everyone pitched in, went the extra mile, pushed themselves to find the best (or at least the one that worked) solution, and kept a good sense of humor about it all.\
I started on this thing as a “consultant” and wasn’t supposed to write any code. I ended up:

  • joining the team responsible for it
  • writing a site’s worth of documentation
  • creating a microformat
  • coming up with a set of rules for writing CSS to accomodate modules, themes and user styles
  • writing almost a dozen modules (only some of which are actually live)
  • helping with dozens more, writing a bunch of themes, and making sure that over 60 themes were ready for launch.
  • spent late nights and weekends at the office debugging javascript
  • worked on convincing developers, management and design that web standards are the way to go
  • and discovered several one-line crashers for Internet Explorer (and one or two ways to make Firefox REALLY unhappy as well).\
    It’s not done, not by a long shot. There are still dozens of bugs and hundreds of features still to come. But, it’s a start. It’s all kinds of fun, not just for end users, but for developers too. One of my “secret” goals at the beginning of this project was to make module development easy enough that even “normals” could do it. And just this morning, sitting around a big conference table, there were three product managers talking about their modules. And my other secret goals? Here they are:
  • Get more people to learn the “right” way to write CSS.
  • Help microformats go mainstream.
  • Show the outside world that AOL can do innovative stuff, and that we support Open Source (we’re using the hell out of Dojo).
  • Show the outside world, and the internal development community, that using web standards don’t limit you. They help you. Creating modules for our product is so much easier than creating them for live.com, dashboard or Google Homepage. Why? Because microformats are “just” HTML.\
    There you go. Go play. And while you’re at it, check out my profile.\
    Oh, and for all you Digg folks, I Am Alpha is not AIM Pages.

I Know Something!

Today is a banner day. No, it’s not because the cold I’ve had for four days has reached Biblical mucous proportions (if Pharoah hadn’t relented, it would have been the next plague: multi-colored, never-ending mucous). It’s not that I’ve had three days off in the last thirty. It’s not that I’ve interviewed two kids out of college in the last week who are actually curious and qualified. It’s not that I’ve forgotten how to sleep.\
What is it? It’s that today, April 13th 2006, I knew something about javascript and the DOM that Mr. Javascript didn’t know, and I got to tell him what it was. What was it? Well, it’s this horrible little Internet Explorer quirk where it won’t let you update the text of a style element with the normal ways (you know, appending a text node, or gasp using innerHTML). You have to use node.styleSheet.cssText to get or change the text. Isn’t that crazy?

I’m Naked!

Since I’m a CSS guy and am always preaching out this crap, I figured I should play along and go naked too. Nothing is broken. Really. I turned the stylesheet off on purpose. It’ll be back tomorrow.\
I’m actually kind of happy with it. The main page of the blog stands up quite well without any CSS. The markup’s not perfect. I’ve been meaning to fix it forever, but it hasn’t changed drastically in almost three years, and it’s supported three complete redesigns without having to really touch it (other than splitting up the entries into two chunks).\
I’ll put my clothes back on tomorrow.

Conferences, Conferences

Just a little reminder… I’ll be moderating the How to Convince Your Company to Embrace [Web] Standards at SxSW 2006 next Tuesday. If you’re going to be at the conference, please show up, even if it’s just to heckle. We’ll have our presentation online by the time we actually sit down to give the panel (but probably not too much before that). If you’re planning on attending our panel, please leave a comment!\
~~Also, I just got the e-mail that Shawn and my proposal for X-Tech was accepted! That means that I get to stay in Amsterdam for an extra week after the CSS Working Group meeting in May.~~\
UPDATE: We’re apparently not presenting at X-Tech. I’m not sure if we got the wrong e-mail first, but it certainly looked like an acceptance notice, but then came another much later in the day saying our proposal wasn’t accepted. Oh well. We can re-submit for “late breaking”, but I don’t know that I really need to bother with it.\
UPDATE Part 2: I am presenting at WWW2006!! I’m helping Bert out on the CSS part with a presentation on architecting CSS for syndicated content (and for the site including syndicated content). It should be fun, and another chance to show off some of the cool stuff we’re doing over in AIM land.\
We also submitted a proposal for the Developers Track at WWW2006, and may be helping out with the CSS piece as well.\
I can’t wait for SxSW. I just hope this jet lag/sinus infection combo is better by Thursday.

Since I Can’t Put Up Photos…

Look at Daniel’s – I forgot the USB cable for my camera at home. Silly me.\
I did document several of the courses we had at L’Ermitage du Riou, which was, as usual, amazing. We’re winding down, and will end up closing down the joint as one of the last two working groups still meeting. We CSS folk just don’t know when to stop.\
I have more stories, but we’ve just had a breakthrough that when it’s implemented will change the way we write CSS. Gotta pay attention!\
This isn’t it, but if you’re a designer or use CSS, please please please go read the new Advanced Layout CSS3 module and post your feedback. This module is very important, and could change the way we build web products if we ever get the browser folks to implement it.

Accepting Small Progress Gracefully: IE7

Here I am again at the W3C Plenary, where I get to spend a week with the web’s big brains and soak in nerd soup. A lot of time has been spent so far talking about IE7 and its progress or lack thereof and the reaction Microsoft (and especially Chris Wilson and Markus Mielke) are getting from the web development community. Molly is here, and she’s especially worried about how poorly the community is reacting to Microsoft. And here I sit in the middle somewhere…\
I’m a standards geek, and part of me wants to kick the IE team in the shins for creating another browser that doesn’t at least get to the point where Firefox and Safari are. There’s a spectrum of standards support, especially as far as CSS is concerned, with IE6 at one end and Opera, Safari and Firefox at the other. I foresee all kinds of problems with IE7 situating itself right in the middle. It’s going to cause developers all kinds of problems, some of them of those developers’ own making, some because IE is cherry-picking CSS2.1 modules to support (and some CSS3).\
On the other hand, the practical side of me is happy to see any development at all out of IE. Progress, of any kind, is a good thing. The fact that IE7 will support selectors beyond the paltry selection we have now. We’ll have child and attribute selectors (finally!! Now we don’t need extraneous classes on elements), :hover on arbitrary elements and min and max width/height, which will all make building pages easier once IE7 overtakes IE6 in usage – sometime in the next five to six years.\
And there’s the rub. I’m impatient. I don’t want IE7 today, I want IE8 today. That it took Microsoft over five years to start working on the successor to IE6 is unforgivable. They abandoned the web development community and did what they could to kill progress in web development, whether on purpose or not, it doesn’t really matter. That we were able to do what we did, given the horrible state of IE6’s standards support, is impressive and we should be proud of it as an industry.\
Now that they are working on IE again, what should our reaction be? Should we be angry? Should we embrace them? Can we embrace them angrily? I think the time for anger is over, and as soon as the next beta comes out (which I’ve been promised will have the final standards features in it and all that will change are security features), it’s time to get to work.\
And for those of you who use standards mode and are complaining about having to change your CSS to change or remove the CSS “hacks” you used… you were warned a long time ago about managing hacks (at least in June 2004 by Molly). The fact that IE didn’t change in 6 years is really no excuse. Hacks are just that – hacks. They’re going to change. And, Microsoft is actually doing the right thing and not changing how pages are rendered in quirks mode at all. So, if you’re using standards mode, you should know what you’re doing. If you don’t, well, you’ve got at least six months to learn (I don’t know when IE7 will be out of beta, I’m guessing).\
It’s time to move from anger and denial to acceptance, even if it’s begrudging. IE7 will not get the market share that IE6 has. Firefox has 30% usage in Europe, and now over 10% in the US and growing. IE7 is not going to get the 90%+ market share that IE6 once had, just because it’s only on Windows XP SP2. This is a good thing for the other browsers, and a good thing for web developers, because I think the adoption rate for IE7 will be slow and gradual, which is a good thing.\
We can be angry. We have lots of reason to be. We can be angry about all the things that aren’t going to be in IE7. But, let’s at least recognize that IE is finally moving forward and that we think most of the things we want (display:table) will be in future version – that we hopefully won’t have to wait five years for. Microsoft deserves some credit for its new openness, with the IEBlog, their outreach at conferences and their work in the W3C. Embrace the change, get used to it, move on to acceptance and get to work (when the next beta comes out).

Stenomonkey

I dread taking minutes at working group meetings because it usually means projecting a text editor which is hard to read for the other people in the meeting, and hard to edit for the minute taker. I’ve used IRC, but I hate that the minutes get polluted by the “back channel” discussion. On the flight over, I thought to myself, “Hey, I could easily make a little web app to do this.” Here it is. Everything is stored in the DOM, and there’s no save back to the server which is an issue. It would be nice to have a backend store for minutes to make sure there’s a backup in case of a browser crash, but I did this between the plane and jet lag. I also haven’t tested it in anything but Firefox and Safari. If it works for you, great. If not, sorry.

Changing Style Elements In IE

Everyone knows what I’m working on, right? Well, this is a little story I’m telling so I don’t have to remember it. I’m working on the generic style API so users can change stuff, and wow… I didn’t think it would be as painful as it was. What caused the pain? Oh, you should know by now that it was caused by Internet Explorer for Windows!! Hooray for the truly strange!\
The other browsers (Safari and Firefox, chiefly) did fine with removing the existing text node in the style element, and replacing it with the new one. I tried using the CSS DOM, but that was a lost cause, so I wrote a simple CSS parser in Javascript (only about 10 lines) to throw all the selectors and properties into objects and then more functions to change, update, delete, etc, properties and update the associated style elements.\
What happened in IE? It blew up as soon as I tried to remove the child text node of style, or even set innerHTML. What did I have to do? I had to crawl the properties of that element’s object and find the styleSheet property, which is an object and has a property of cssText, which I can set.\
So, now my code looks like this (\_style is the style element, output is the text I’m setting and yes, I’m using Dojo):

<code>if ( !isIE ) {
dojo.dom.textContent(_style,output);
} else {
_style.styleSheet.cssText=output;
}</code>

I hope you never have to do this, but if you do, that’s how.

Mountain View: Day One Recap

Yes, I am in Mountain View, and I really wish I had more time to see all my friends out here (I’m especially bummed about not having time to hang out with my brother, his wife, and Sam. It’s just a two day trip, and it’s chock full of meetings, all about this. We did a big presentation yesterday about it, what’s coming (shhhh, it’ll be cool), and how the world can join in. It was extremely gratifying to see geeks get really jazzed about it. It proves that even though I can’t explain it worth a damn, we’re headed in the right direction.\
I’m having a really good dinner last night at Nola’s in Palo Alto, and laughed our fool heads off. We rehashed the “good old days”, talked about geek energy and how to harness it, and what it feels like to be working on something we can truly be proud of.\
I was talking to Joe afterwards about stuff we’d worked on before, the old projects that still hold a special place in our hearts, and I thought about this silly fulfillment system I wrote when I first came out to Virginia to finally become a “real developer”. It was a maintenance system. People submitted tickets, filled in a bunch of detail about the affected system, the problem, the request, etc. Then, someone got the ticket, did whatever was in the request and then closed it. It ran reports, was extremely flexible in setting up types of requests, etc. I wrote it almost 6 years ago, and thought it was dead. I hadn’t touched it in about five years and figured people stopped using it and forgot about it long ago. Then, I got an e-mail about a month ago (and an IM yesterday) about it, asking who owned it, and if someone could add a feature to it. I was stunned. This thing that I thought was dead and buried has been used every day for five years by a couple different teams. No one’s touched the code, cleaned out the database or anything in five years and it’s still running like a champ, taking requests, running reports, etc. I thought the thing I was most proud of was what I did on AOL Search, but I think I may have a new winner. Almost everything I’ve ever written has a fairly short shelf life between versions. This tool is ancient and still going strong, which not only scares me, but makes my geek pride swell.\
Today? We’re talkin’ modules, modules, modules and javascript. Oh, and between all the module talk, I have to figure out how to create CSS blocks on the fly in Javascript. I’m really close, but man, does that spec need some work.