For Further Learning… Web Development Style

I sent this list out to yesterday’s RailsBridge students as next steps if the introductory class lit a fire and they want to learn more. And then I realized it’s a pretty good list, so I’ll share it here too!

Local Savannah Things

For Further Learning

Yesterday’s class was great. Lots of teachers in the room and lots of people who had no idea that web development was accessible to “normal” people. It was tons of fun and a great way to shake off a pretty terrible week.

Come Work With ME!

We’re hiring! We’ve got a ton of work to do on an awesome new product and I need help!

What am I looking for? Someone who “gets” working in a startup. You’ve got to understand the pressure involved and time required to launch something and the crazy stupid optimism to believe it will succeed (even if it doesn’t). You’ll be smart, creative and willing to do the right thing even if it seems a little daft at the time.

So, here’s what we’re looking for:

And the best part? We’re right in downtown Savannah above Leopold’s Ice Cream and close to everything happening around the heart of Savannah. We’re fun to work with and are working with some amazing technology. If you’re interested, check out the postings and apply (please)!

Web Standards’ Three Buckets of Pain

I spent this week at the W3C’s annual technical plenary, which is a week of “discussing” the future of the foundations and future of the web. I spent the first part of the week in the CSS Working Group discussing CSS3 features and CSS2.1 issues. Tuesday evening and Wednesday were spent in the AC meeting and Technical Plenary day (everyone gets together in a big room for panel discussions and lightning talks about standards-related issues – my favorite day of the week). The latter part of the week I spent in the new HTML Working Group talking about a lot of issues I’m not up to speed on because I just joined the working group (but, of course, that didn’t stop me from jumping in).\
Molly led a panel during Plenary Day called From the Outside, In: Real World Perspectives on the W3C with a handful of designers and developers who aren’t currently involved in the W3C (Aaron, Matthew, Patrick and Stephanie). The panel helped solidify a few things for me and I want to try to explore them in this post. The panel wasn’t bad by any stretch. I think it was brave for them to come into the “lion’s den” and give the W3C their perspectives. But, I felt that the way the panel was presented left people in the audience confused about the overall message, and exposes a huge gap between the W3C’s understanding of “web standards” and the web development world’s definition.\
Before I get any further, I need to explain where I stand here. I have a foot planted firmly in both worlds. I’ve been building web applications for almost a decade and have been a fan of standards-based development since late 2001 when my blog validated as XHTML 1.0 Transitional. I’ve been a member of the CSS Working Group for about four years as well.\
The complaints about web standards are varied and many, and the panel made it feel like they all fell squarely at the feet of the W3C. But, that’s just not the case. I think a lot of the problem comes from our (being the web development world) definition of “web standards” being almost completely different from the definition understood inside the W3C. To web developers the world over, “web standards” means: “What I have to do to get my page to look right in all the modern browsers.” The W3C’s definition is “the underlying specifications that implementors (in our case, web browsers) use”. See, the standards aren’t written for, or by, web developers. In the case of HTML and CSS, they’re written for and by the people who create web browsers – which is why they’re so hard for the rest of us to understand. The vocabulary is different. The requirements are different. There is a whole world of pain in store for the brave soul who wants to write a web browser – and it’s a uniquely different world of pain from someone (you and me) who wants to apply those standards to build a web page that will render in one of those web browsers.\
For the rest of this blog post, anyone building a web browser is implementing the standards, and anyone trying to build a web application is applying the standards. People building web browsers have to implement parsers, renderers, conformance checks, error handling and all sorts of other nasty things to get a browser to function. People building web applications have to take the standards and apply them through an implementation (in our case, a browser). We’re not writing the parser, we’re writing the thing that gets parsed.\
And there are our three buckets of pain:

  1. The Specifications
  2. The Implementations
  3. The Applications\
    h4. The Problems With The Specifications\
    The major problems I hear about the W3C and its processes are:
  4. It takes too long.
  5. I don’t know what’s going on or when we’re going to see the standards come out.
  6. Spec X is missing this, this and this!
  7. Developers and designers have no voice in the standards at all!\
    One, two and four are, or were, true. Number three is only half true most of the time. Every time I ask developers or designers I know about what’s missing from CSS, I always hear “I want multiple backgrounds and a real layout model. Oh, and border images!” Two of those are already implemented in Safari, and I’ll bet you Firefox will have them done shortly. They’re all in CSS3 somewhere.\
    Web developers and designers have more of a voice on the CSS Working Group than ever. There are currently three designers in the working group (two from AOL and one invited expert). The group is also working with the new CSS11 group, and is actively gathering feedback. The new HTML Working Group has several members who are web developers and over four hundred invited experts (who can’t all be building browsers).\
    The W3C is working very hard at opening up. It’s not there, and they’ll stumble, but the attempt is being made.\
    h4. The Problems With Implementations
  8. Microsoft took a vacation. IE6 has been out (and broken) for a very long time. We got complacent in our hacks and nonsense to work around its “quirks” and now those bad habits and hacks are getting stale.
  9. They don’t move fast enough! See number one. We’re tired of waiting, but laying the blame on the CSS Working Group instead of Microsoft. If Microsoft had been actively engaged in the Working Group this whole time, we’d be a lot farther along. It’s very hard to get to interoperability when the market leader is working on other things.
  10. They have bugs. Every piece of software ever written has bugs. Thankfully, bugs get fixed in the other browsers fairly quickly. Unfortunately, IE is now on a 15-20 month release cycle, which means we have a while to wait until we see things we need like display: table and probably 30-45 months until we can hope to see advanced layout or the grid implemented.\
    h4. The Problems With Applications\
    (this is going to be painful… just hold on – it’ll be over soon)\
    Our biggest problem as web developers and designers is the misunderstanding I pointed out at the beginning. We need to understand the three buckets of pain and what we can expect out of each one. There’s no reason to rush standards out if no one’s going to implement them. There’s no reason for us to try to use them until they’ve been implemented.\
    We have to admit that we made a fundamental mistake in how we advocated building things with “web standards”. As someone who’s done training for the last five years, this is as much my fault as anyone’s. We taught to the implementations. We never taught the distinctions between the specification and the implementation. We never taught that we were teaching an application of the standard and not the standard itself.\
    The hacks became the standard and not the exception. We taught without understanding the long term implications of teaching hack management instead of teaching the specification and the application of it separately.\
    h4. How do we move forward?\
    We need more developers and designers plugged into both worlds. To work on the specifications themselves, or even read and give feedback on them, you have to abandon any hope that this will be useful to you in your development world for three to five years. Once you do that (it took me two years to get that through my head), you’ll be much less frustrated, and might actually be helpful. To a degree, you also have to abandon your notions of how you do things today. When thinking about layout, you have to give up thinking that “float” is the best way to do it (because, please, it’s just not).\
    We need to reboot our perceptions of web development and start thinking towards the future. It’s a new world, and getting newer every day. Our best practices have to evolve – our disciplines have to evolve. We need to think about a world without IE6. It’s going to happen. We need to come up with better ways of building web applications. We need to come up with better ways of teaching the value of web standards. We need to do a better job of educating designers and developers about the consequences of building web applications. We told them all the good things that would happen when they did it our way, but did we tell them that hacks go away? Did we tell them that browsers evolve and that hack they spent all that time on to get things to line up in IE6 will go away some day?\
    I don’t think I covered everything I wanted to say. There are a lot of things swirling around in my head right now. I had my mind blown last week by this realization and it will probably take more thinking about it before it really crystalizes and I can really explain what I’m feeling. But, right now, this is it, and that’s as good as I’ve got: It feels like I’ve spent the last 7 years living a lie, but the truth is so much more interesting and complex than the lie ever was. It feels like a stronger foundation, but wider and darker in the corners, than the one I’ve been standing on.

The CSS Working Group and Me

I’ve represented AOL on the CSS Working Group for over three years now, and I’ve always felt that I’m not able to give enough time to it, or help as much as I wanted to, because of my responsibilities in my “real” job. With recent blog posts by Ian Hickson and Fantasai, I think it’s time to put up or shut up, especially since fantasai called me out in her’s:\
bq. For most of my time on the working group, the only representation we had from the web design community was from AOL: from Kimberly Blessing and Kevin Lawver. When Andy Clarke joined the CSS Working Group as an Invited Expert last year, I was really excited: finally some more web designer perspective. But Andy and Kevin are both too busy to be regular participants,and when they are around, they're not technical enough to really follow the discussions and understand the impact some silly sentence in the spec has on what web designers are trying to do.\
In my defense, even though it doesn’t look like I’m following, I usually am, except when the discussion veers into the bowels of typography, internationalization or we have six hour arguments about punctuation (it’s happened, don’t try to deny it): that’s when the blood starts seeping out of my ears. When we discuss layout or things I actually want/need to use, I’m right in there.\
Now, it stings a little bit to be called “not technical enough”, but she’s right. I’m not. I don’t have an inside-out knowledge of typography, of how browsers are built or the reasons certain things are hard for them to do. I build web apps, not web browsers, and after sitting through over three years of meetings, I certainly don’t want to build browsers. It’s a hard, painful and thankless job. The folks who work at Mozilla, Opera, Apple, Microsoft and anyone else who works on browsers are extremely smart and I’m in awe of them. I understand that building browser is hard, but it’s extremely frustrating when features that web developers and designers need are shot down because they’re “too hard to implement”.\
I share her concerns about the lack of designer input on CSS, and that the group is dominated by browser implementors. That’s why I asked Cindy Li to be my backup in the group, and when she left AOL, asked for designers to volunteer to join the working group. I got Jason Cranford Teague and Justin Kirk, two very skilled and experienced designers, to join up, and effectively tripled the designer population in the working group. In fact, Jason’s volunteered to work with Andy to design the group’s blog, which is great!\
I think the CSS Working Group needs more designer and developer input. I think W3C member companies need to pony up some designers and developers to help out – even if it’s just to provide feedback on working drafts and proposals and provide use cases and real world examples of things we need.\
I don’t know what the point of this is, except that I agree with both Ian and fantasai – something is wrong. The CSS Working Group is in jeopardy of becoming irrelevant, and unless the group gets new blood and can open up, we’re in real trouble. The worst part is, I’ve had to admit to myself that I don’t have the time or ability to do anything about it other than nod and agree with them. I’m hoping that by sharing my perspective as a web developer, bringing more designers into the group, I’ve done something worthwhile in my time in the group. It certainly doesn’t feel like enough.

California, There I Went

I spent the first part of this week in Mountain View for a CSS Working Group meeting. Cindy and I tried to document the atrocities in a photographic manner, but Cindy did a much better job than I did. If you really feel like scarring your retinas, this’ll do the trick (it’s me doing the hula… scary).\
It was a good meeting. Progress was made on a couple of things near and dear to my heart (that will change the way we build web products in a few years, honest), and it was nice to see so many people there. I also go to go to Hobee’s a couple times, and we went and got breakfast burritos at Burrito Real (best since Tucson, and Tucson has the best burritos in the world).\
Unfortunately, I ended up spending 9 hours arguing about CSS, and then another three or four each night writing it, reading it, or answering questions about it (oh, and DOM stuff and plowing through three hundred e-mails every night). So, I was a little worn out when I got home. It was so bad, that Thursday night, I got home around 4:30 in the afternoon, and managed to stay away until 6, when I conked out on the couch. I woke up at 7, and then decided that I really needed to go upstairs and go to bed. I slept from 7:30PM Thursday night straight through to 7AM Friday morning. I needed it.\
Now, I’m home, and I have to get ready for The AJAX Experience, and help get a huge project through QA and out the door very very soon. I foresee more exhaustion in my immediate future.\
In happy news, the boys and I all went out for breakfast while Jen took a nap, and then got haircuts today. They’re so cute when they’re shorn. I’ll try to take some pictures tomorrow if I’m not at work. It’s definitely time for bed…

Slow Recovery

I’m slowly getting better. I’m still congested, but at least I’m off the steroids. I’ve still got the awesome horse decongestants and I still sound pretty bad. But, at least I feel well enough to go to work and actually contribute.\
Today, I did a favor for my old manager and did training for some of his new folks. We talked about standards-based development, markup, CSS and DOM scripting. It was fun going through the old presentations again, but it was obvious to me how rusty I am with the whole teaching thing. There was a time last year when I had those presentations down and could go through them and the explanations were all practiced and came out fluidly. Today, not so much. I blame the congestion and the drugs… but I’m just out of practice. It was still fun, even though now I’ve almost completely lost my voice.\
This weekend is all about recovery… soup, sleep, stupid movies and football. Oh yeah, and I updated the blogroll today. It’s much bigger than it was before, and is still an export of my feeds from NetNewsWire (minus all the Flickr feeds, wikis, work and my stuff). So, it’s actually a pretty decent representation of what I follow.

AOL Is Fun Again!

Things at AOL are changing, and it feels great to be in the middle of it. Every day, it becomes more and more clear that a small number of people are driving gigantic changes all throughout the company, and I’m both honored and a little nervous to be considered part of that group. It makes me a little self-conscious, to be honest.\
It just feels like everything is coming toether. Last week, I was asked to speak at a conference for the first time (thanks, Tantek), which is a huge honor for me, especially considering who asked and who is on the panel. This week, I did training on semantic markup and CSS to a handful of designers, with the goal being to get the rest of the designers through the course by the end of the summer. I also found out that I’ll be speaking at Mashup U in July. And just today, I was asked to join a small group doing something extremely cool that I don’t think I can talk about publicly yet (maybe never, I’m not sure yet). This is all on top of the privelage I have to work on AIM Pages.\
I’m extremely lucky to be in the position I’m in. I’m not quite sure how it happened, or really where it will lead, but I love it. I work with the best people, get to play with and develop the coolest stuff (cool to me, and that’s really all the matters), get to share what I’m passionate, and feel like what I do affects and influences other people.\
I’ve been at AOL for eleven years, and this is the most fun I’ve ever had. I can’t wait to see what happens next!

Last Day and A Thought

The panel today went really well today. Bert showed of Cesar’s really cool Advanced Layout demo, Andy Clarke did a great presentation about the responsibility we have as web developers, and I did my CSS for Syndicated Content, which went pretty well. I got some good questions, and I don’t remember anyone walking out in disgust.\
Andy and I got a sandwich afterwards, and had a good talk about a bunch of web-nerd topics.\
Now, I’m back in the hotel, really tired (happens after every presentation), and just waiting for Big Brother to come on (can’t help myself), and IM’ing with folks. While doing that, I had a thought. Next time I travel, I’m taking a headphone-jack-to-RCA audio cable, and an s-video-to-RCA cable, so I can hook the Powerbook up to the hotel TV and watch all the crap I bring with me. My room has a perfectly nice DVD player in it, but it’s region 2, and all my DVD’s are region 1 (right now, it’s Homicide season one and the first two seasons of Buffy). I don’t want to sit at the desk and watch stuff, so it goes unwatched. But, if I could hook the Powerbook up to the TV, ta-da, whatever I want to watch on the big screen.\
Just sayin’… next time, I’m bringing even more cables with me.

Presenting to The Webfather

I just did my first presentation at WWW on our microformat, and who was in the audience, but Tim Berners-Lee, the father of the web. There was a moment, sitting at the front of the room, waiting for my turn to present, that I got really nervous. I’m not normally nervous before I speak in front of a fairly small group (less than 100). This time, I was. I had a thirty minute presentation that I had to compress into 10, which didn’t help.\
I think Friday’s will be easier. I get to talk about CSS, on stage with two people I know fairly well, and I have my full time. If you’re at the conference, Friday’s Style and Layout panel should be a lot of fun. I get to talk about the guidelines we set up for CSS in modules and themes in AIM Pages, and how that process has worked out for us so far.