Christian Heilmann

Author Archive

Planning JavaScript and Ajax for larger teams, equine invigorating imagery, one voice for libraries and a lot of good speakers – this was @mediaAjax 2007

Wednesday, November 21st, 2007

I’ve just been over the @mediaAjax drinks, worked through around 670 emails that accumulated in my inbox since last Wednesday and now there is some time to talk about my experience there.

First of all, here are the slides of my talk:

I didn’t cover many technical issues but instead tried to convince some people to recognize that the way you use JavaScript in your team is the most important part of development. It is not important that you write amazing code, but instead it is much more important to work smoothly together to ensure that you can deliver fast and on budget. This is the only thing that keeps us from being able to train and grow developers – we are too busy playing catch-up with estimates and deliveries. Instead we should concentrate on bringing the fun back into developing by working together rather than competing or being the “JavaScript hero” for the rest of the team.

I got some good feedback and I am happy to get more, so if you’ve been there, tell me about it. Even more importantly, if you are considering on taking on some of the ideas, I’d be interested in hearing how that went in your environment.

Generally I have to say that I enjoyed the conference a lot. I was at first disappointed by the lack of wireless but I guess that in the end it made people listen more intently to what the speakers had to say.

My faves:

  • Dion and Ben of Ajaxian covered the State of Ajax, and compared the current happenings to a wishlist they’d drafted 2 years ago. It was a fun enough keynote, but I am not too sure about some of the CSS bashing that was going on. It is very interesting to see that while CSS people want to do everything with their technology, a lot of hardcore coders just don’t grok CSS. Hey, the future is hybrids, play technologies to their strengths and allow people who care to do them.
  • Derek Featherstone’s “Real World Accessibility for Ajax-enhanced Web Apps” talked about the problems we have in creating rich client application modules like tree menus and how we fail doing them in an accessible manner. It was very entertaining and he had some good real-world photos to drive his points home. My personal favourite was the irony that the stage had a wheelchair ramp that lead nowhere because of the backdrop
  • Stuart Langridges “How to destroy the web” was as unique as he is as it was an anti-presentation as to what to do. He ran the devil’s advocate idea of us building web products in the most obtrusive and bloated manner possible as otherwise people would use all the bandwidth for looking at horse porn (his words, not mine). He had a lot of very good points (don’t do this, as it leaves too much bandwidth) and it reminded me of the Vincent Flander’s approach to teaching web development
  • John Resig’s introduction to Prototyping with jQuery showed how you can easily take a saved copy of a web site (in this case an Apple page) and enhance it with jQuery after analyzing the HTML structure. This is pretty cool for just showing a product person how a change could feel like and I’ve done it in the past with Greasemonkey scripts.
  • Alex Russell of Dojo gave us some food for thought about how libraries should become one voice and talk about the same ideas and overlap in terms of implementation to ensure we all help developers the same way instead of competing. Something I can wholeheartedly agree with.
  • Brendan Eich showed the ideas of a “new JavaScript” while Douglas Crockford explained why the “now” JavaScript is actually a cool language as it is.
  • Dann Webb showed ways how you can use JavaScript’s trickier parts like prototype and clever uses of the arguments array to enhance the language and do meta programming with it.

All in all I was happy to be part of this and I thought it one of the best conferences if you wanted to learn about JS. I did hear people complain that there wasn’t that much about Ajax, though. To me, Ajax is a methodology, not necessarily a fixed set of technologies, and to cover the whole aspect you’d need to explain both the client and the server architecture. True, this could have been done more, and I also lacked the coverage of Flash Developers as programmers that already use a lot of things that JavaScript2 is promising us.

All in all there were several great finds for me:

  • Never sit next to Bruce Lawson, Chris Willison and Stuart Langridge. It is evil but also terribly funny.
  • It is great to see that people involved in the development of competing libraries all want the same stuff and really don’t mind the success of the other competitors. Take this down, fanboys and mailing list flamers: we all want to help you and think you should use whatever suits you best, which is not necessarily our stuff.
  • The best way to recognize in your server side component if a call came from Ajax and not from a normal page submit is to check the HTTP header. Most libraries send a bespoke identifier!
  • Make sure you check if a queen has a jubilee before you go out of the train in the Westminster area.

I hope the people who went also had fun and the others will consider coming to the next conference in the London area. It is great fun and value for money.

[tags]@media,atmedia,atmediaajax,@mediaAjax,london,Javascript2,ajax,javascript,conference[/tags]

Minified Metro, Sticky Event Handling and great new encounters – that was ParisWeb 2007

Sunday, November 18th, 2007

Minification is the process to remove all unnecessary whitepace (spaces, tabs, linebreaks) from a piece of code to make it weigh less when downloaded. During a strike in Paris this is exactly what happens to the public transport system:

overcrowded metro

I’ve spent the last three days at Paris Web – a three day conference about web standards and accessibility held in Paris, France. Just to sum it up: although travelling through the city to reach the two different locations was more of a nightmare that I’d ever imagined, the conference itself was an amazing experience and I am happy to have been a part of it.

Paris Web shows the hallmarks of a conference that is organized by people who are simply passionate about bringing the good ideas of standardization and accessibility to the people and not to line their pockets.

The two day conference pass held in an IBM building with a state-of-the-art auditorium (I am still geeking out about the remote control and having a monitor in the stage to see my slides) and a more than adequate supply of coffee and beverages was 100 Euro for two days. The workshops, sadly enough (because of the strike) held in a school on the other side of town set back attendees for only 10 Euros!

These prices meant that you were able to reach the folk you normally can’t as they are not able to afford the ticket for much pricier conferences. Pending me, the low price did not mean you didn’t get a line-up of impressive speakers and great presentations. The list of speakers read like a who-is-who of the francophone web scene and included people from WaSP, the W3C, IBM and members of the prototype team.

My presentation at the conference “Successful teams use web standards”

My own presentation was deliberately kept non-technical and explained the benefits of following a standard when you develop web sites:

My workshop on Unobtrusive JavaScript

I based the workshop on my seven principles of unobtrusive JavaScript and tried to apply them by enhancing a table of contents pointing to several content areas in a document. There will be a blow-by-blow description of the enhancement when I get time.

The room was not ideal for doing a workshop as it was a classroom crammed with computers and 19 inch CRT monitors which meant that you couldn’t see much of the people you are teaching something.

I’ve promised the group that by the end of the session the JavaScript savvy ones will have realized that a lot of time they code too much and that the JavaScript afraid participants will know how to work and communicate with JS developers (yes, that is possible).

Making the best of the room and following a whim I explained event handling and event delegation using real people:

Event Handling using Human Guinea Pigs

The first row were the links in the table of contents, behind the list items, then a UL to the left and Stephanie Booth on the left was the window object (I did not treat her as an object, do not start these rumours!). The lady sitting up front was the event listener and the sticky note in the hand of one of the links was the event object e. It is tricky to explain, I guess you had to be there.

I am currently still cleaning up the workshop files and will put them up on my server as soon as they are done. You will find them at http://icant.co.uk/articles/parisweb2007/files.zip later on today.

Will the show go on?

I’ve heard rumours that this would be the last Paris web, and I’d consider that a shame, as it is a conference that reached where it very much needs to and there are too many people to thank and mention. It was a great experience and it should go on.

There are lots of photos of the conference on flickr and the organizers told me that all the sessions will be available as creative commons videos on dailymotion later on.

Photos by
Raphael Goetter and Christophe Porteneuve

[tags]parisweb2007,paris,parisweb,france,webstandards,conferences[/tags]

The seven rules of unobtrusive JavaScript

Monday, November 12th, 2007

I’ve written a lot about unobtrusive JavaScript before, but I never really held a workshop about it. Well, now as part of the Paris Web Conference later this week in Paris, France I am giving one which is already sold out and I am very much looking forward to it.

As part of the workshop I prepared my materials and wanted to have a nice outline to follow. I took this as an opportunity to build up on the older materials and the outcome of this exercise is that I managed to define the rules of unobtrusive JavaScript, which are:

  • Do not make any assumptions
  • Find your hooks and relationships
  • Leave traversing to the experts
  • Understand browsers and users
  • Understand Events
  • Play well with others
  • Work for the next developer

I’ve explained them all in some detail here: The seven rules of unobtrusive JavaScript

After the workshop I will also add the code demos with some more detail, but that’ll be most probably after @media Ajax.

I hope this is helpful to you, it is creative commons, so use it for good.

[tags]javascript,unobtrusive,unobtrusivejavascript,methodology,planning,webdevtrick,scripting,bestpractices[/tags]

Another Hack Day – this time in Brighton and on a farm!

Thursday, November 8th, 2007

I’ll still be in Paris, but were I here I’d be very interested to go. Sussex Folk who want to spend a Saturday developing some prototypes and bounce ideas of other developers can come to Brighton on the 17th of November to attend the Farm Hack Day.

From the horse’s (cow’s, chicken’s…) mouth:

Hack Day is a chance for web developers and designers to get together and work on small, fun projects, e.g. a new widget for their website. During the day people will learn from each other and show off their skills in a friendly, slightly geeky environment. This Hack Day is organised by members of the Brighton Farm freelancers group. The day will be free, supported by sponsors. Tickets will be allocated through EventWax. [...]. This is part of the Brighton Digital Festival

Darn, I should move to Brighton. Hack on!

[tags]farmhackday,brighton,unconference,sussex,brighton farm[/tags]

wp-super-cache cached too far for me (and others)

Thursday, November 8th, 2007

Having just upgraded this wordpress to the new one I wanted to have the whole goodness and installed wp-cache to have static pages of my posts. However it seems that the newly released wp-super-cache plugin for WordPress had some nasty vulnerabilities.

The first to report that to me was Chris Messina on twitter followed by Stefanie Sullivan reporting about Tiffany Brown having the same issues. Checking the folders created I found the same two injection attempts Tiffany mentioned. The caching allowed code injected as txt urls via “i” or “s” parameters to be executed.

In my case I found that half my server was mirrored into the supercache folder in the plugin’s cache folder. Not good.

I was happy to see that my etc folder and other more interesting bits were not reached yet before I deactivated the plugin. Right now I am playing grepmaster to see if there are some injections left. My action: deactived and deleted all caching plugins and their cache folders (best via SSH as FTP is a PITA with so many files).

[tags]wordpress,wp-super-cache,vulnerability,xss,damn,aaarghhh[/tags]