Monday, November 19, 2007

@mediaAjax day 1.6: Ajax at work -- a case study

ppk's been one of my favourite JS developers for years so I was excited to see he was scheduled to be the 6th speaker on the 1st day of @mediaAjax. His talk focused around a genealogy application he was writing using Ajax/XHR-methods. I really enjoyed the "case study" approach (it was also very polite of him to use British royalty as his data source on this day, the Queen's 60th wedding anniversary, seeing as we were within shouting distance of her celebrations in Westminster Abbey!) His discussion of the "X" in Ajax -- the data transfer specification, whether to use XML, JSON, HTML or CSV -- was very clear and the reasons for choosing XML ("social", i.e. associated with the project and its people) were well and entertainingly explained.

It became clear during Q&A that he really needs a database and/or SQL/PHP developer. If you read this, ppk, I'm willing to help out! Turning the "relational" XML data underlying family trees into a relational database would be a fun student project...

@mediaAjax day 1.5: Planning JavaScrip and AJax for large teams

Christian Heilmann's was the 5th talk on @mediAjax's first day and it was an excellent description of managing teams of developers, which we probably ought to be expounding to our students and some of which I'll be trying out ("code review" as assessment practice and "lightning talks" for Faculty dissemination seem like good ideas...) His list of bad assumptions is worth repeating here -- don't assume that:

  • I don't need to tell anyone this, they must already know.
  • Surely everyone knows this.
  • This works now, we'll never need to change it.
  • This hasn't worked in the past therefore it'll never work.
  • This is a minor issue; no need to file a bug.
  • Hack it now, we'll have time to fix it properly later.

Some other good (mis-remembered) quotes: A good developer is not necessarily good because he's talented or gifted. He's the guy who works well with others … and works for the next guy (the guy who takes over his code!) JS and Ajax are part of the development cycle, not add-ons. Web products are never finished.

Reasons/procedures for conducting code review:

  • Identify problems and solutions.
  • Training needs become obvious.
  • Share knowledge.
  • Identify reusable resources (then give team-members time to make them publishable.)
  • Don't innovate during production (except at team level.)
  • Ignore the "inner hacker", the "feature creeper".
  • Promote team players.
  • Optimise for production but keep code maintainable and understandable ("compile").
  • Use libraries.
  • se comments sensibly and meaningful variable/method names.

I liked his description of modern web developers as more "librarian" than "memory guy" -- like I tell my WebTech students: I don't expect you to remember all of this [CSS, JS, DOM stuff] but I do expect you to know where to look it up.

Overall he was the 2nd person to kind-of say that the "waterfall" development process was dead and that Agile/scrum was the way to go...

@mediaAjax day 1.4: How to destroy the web

A funny wake-up after lunch on day 1 of @mediaAjax, Stuart Langridge firmly tongue-in-cheek described ample ways to keep the web from becoming useful and in the hands of we, the web geeky-elite ;-), including sucking bandwidth by ignoring Yahoo's YSlow plugin style recommendations, discouraging the use of well-designed libraries & reinventing the cross-browser wheel, permitting cross-site request forgery by building web app's accepting requests like http://site/delete.php?id=54 (great for web spiders! Make sure you have a page listing all things to delete and links to each document's delete link!!) It was a genuine laugh with a serious side: The web is approaching some level of maturity so don't let a Microsoft-style FUD "fire and water" attack put us on the back foot.

@mediaAjax day 1.3: Real world accessibility for Ajax-enhanced web apps

Derek Featherstone is an entertaining speaker and I always enjoy his @media talks. The 3rd talk of @mediaAjax was no different but he touched only lightly on the Ajax accessibility question: he talked about taking Google Maps and replacing the naff <div onclick…> "buttons" with real buttons for his ironman site, demoed using DNS (everytime I see someone else use DNS I find out better ways of using it ... I'm such a novice!) His use of a hidden form field updated via JS to signal unobtrusive JS changes to a page in response to onfocus events that screenreaders don't otherwise pick up was good advice and it was great to see him emphasise semantic markup, unobtrusive JS approaches and accessibility, but I'd have liked a bit more Ajax-related stuff (I'm desperate to find ways of "fixing" the back button, for example.

@mediaAjax day 1.2: But I'm a bloody designer!

The second talk on the 1st day of @mediAjax was an entertaining talk from Mike Stenhouse about the upskilling necessary to be a good designer in a modern web development team and how Ajax makes it even more-so: Ajax means you're designing the user experience and need to know how that's going to interact with the server, which means you need to know some JavaScript, front-end and back-end code etc. He talked about experience using Agile and "scrum" development methodologies, pair development, which differs from "pair programming" in that the designer and developer work together on the design or the code, and the insights that enables. The most interesting bit from my pov was how neatly this ties-in with my interests in combining our "Web Development" field with Design (from a different Faculty) ... web designers and web developers are not such separate jobs these days.

@mediaAjax day 1.1: The State of Ajax

The State of Ajax

@mediaAjax opened with a fascinating comparison with the current state of Ajax wrt the state in 2006 according to Ajaxian (where the authors wanted better/faster JavaScript, offline support, framework consolidation, tools inc. debugging: Speed increases in Firefox and Safari were contrasted with no change from IE, and the tantalising suggestion of a JIT compiler from Adobe from Flash 9 (Tamarin?) and Screaming Monkey (a Mozilla plugin for IE?!) bears further investigation (and drooling...) JavaScript 2 (optional typing, object model, namespaces, packages etc) is the subject of a talk tomorrow but the Ajaxian guys described two political camps -- those who want improvement and change, and those who want stability. Offline JS? Google Gears and Adobe Air. Graphics? <canvas> and SVG are slow but Firefox and Opera have hints of OpenGL acceleration in the pipeline. As for frameworks (Dojo, YUI, Prototype, script.aculo.us, JQuery, Mochikit, ExtJS, GWT, DWR, …), despite Prototype and JQuery moving together the guys' recommendation was throw a dart at the wall to choose between them ;-) Tools? Firebug (yay!), IE dev. toolbar, Safari DOM Inspector.

Referring-to Ran Aroussi's Time Breakdown of Modern Web Design got a deserved LOL so I'm copying it here:
pie chart breaking down, humorously, time spent on modern web design
Then they talked about a few of the categories, mentioned WHATWG and HTML5 (where apparently Ian Hickson, also at Google, leveraged the Google search index to look for common class names etc -- this is potentially relevant to a PhD project I'm involved in supervising.) Interaction lag was mentioned (quoting Nielsen: 0.1s delay is noticeable, 1s interrupts workflow, longer wait is nasty) and the fact that Ajax is constrained by browsers' single thread model, which causes UI lag if compute-intensive/slow tasks are running (and Ajax encourages background tasks...) Google Gears adds "worker pool" threads to solve this and Caja for security.

Ajax on the desktop? Adobe AIR, Joyent Slingshot (for Rails), Mozilla Prism.

They finished by describing an encouraging trend, quoting Apple's British chief designer that the days of "functional", just-working app's is over, JS/web app's have matured so that users expect "sexy" design, quoting Donald Norman (author of Emotional Design): Attractive things work better.

Thursday, October 11, 2007

Busy, busy, busy...

<Lame!>The usual excuses about being too busy etc</Lame!> here's a quickie for what I've been doing recently:

  • Spent the summer supervising a visiting French student, helping him to learn PHP and MySQL programming (I over-estimated what he knew before he arrived, so the project he was to work on proved very challenging ... still, it's 75% complete & working)
  • Been to an excellent conference in Southampton from the HEA ICS subject centre
  • Joined a project at work to use technology in the classroom for rapid feedback -- used "ppvote" technology once (writing questions is hard!)
  • Done some "cat-herding" work with also-too-busy colleagues with widely-varying opinions on the age-old question: Why do some students find introductory programming modules so hard? Arriving at some consensus actions is hard!
  • Written two brief articles for our University newsletters: one on computer-assisted assessment and how to tell if it's working, the other on a speech recognition project that I and two colleagues have a PhD student working on (dictating Maths!)
  • Did some L&T/feedback work with some guys from an Indian University with which we have a collaborative agreement
  • Presented L&T technologies to some visitors from Chile
  • Started to teach JavaScript again -- this year the group assignment is to do Minesweeper in JavaScript -- fun!

Thursday, August 16, 2007

Moving home...

Apologies: I'm moving physical house tomorrow which also entails a move of vitual home space so housekeeping-wise I'll finally have to get a proper web host ... this may take some time! Until then, au revoir...

Update 20/Aug/2007: House-move has happened and I'll be sticking with Blogspot for a while...

POSH (pointlessly oversimplifying semantic HTML)

I'm afraid I totally agree with this post: We don't need an acronym to "sell" semantic HTML (i.e. using HTML tags to represent the information they were designed for and/or that current best practice says they should be used for) ... but I have no aspirations to be a web-rock-star, so no worries!

Friday, August 10, 2007

When teaching feels worthwhile

It's stories like this that make this job worthwhile...