TAE: Day 2 – Refactotum

Posted in the ajax experience by Kris Gray on October 25th, 2007

Started the day off with giveaways of an iPhone and iTouch. My luck was so bad I didn’t even get called in the subsequent giveaway of about 10 different books.

Another Stuart Halloway class, he’s really enjoyable to listen to.

Time block of four hours. The amount of work needed in any project is really endless, you can always add more cool features, fix more bugs, write better documentation, so isolating the amount of effort you plan to contribute for this particular effort to four hours keeps your eye on the prize. Though I’m sure Stuart would encourage you to block off 8, 1o, 12 hours anytime you feel like.

Choose an open source project, make sure it will hold your attention for four hours. It will teach you something so choose one you want to get better in.

Get the latest code, probably with subversion.

“The great is the enemy of the good.”
- Wise man say

Getting metrics on the project, run the tests, observe it with code coverage. Your task can be as simple as upping the code coverage by adding a unit test.

Contribute your change, and submit it to the maintainer.

“If this is your first night at refactotum, you have to refactor.” – Tyler Durden
In the next few months you must go contribute to open source, go blog that you did it.

TiddlyWiki, single page wiki.

Two JSUnit, YUI and Dojo are available testing frameworks. 

Crosscheck, Multi-browser unit tests. Uses a stubbed model of the browser. I’ve seen more and more of this product, with a big push from TheFrontSide guys, they could become the tool for unit testing. (And of course start a nasty little religious war on JS Unit testing).

Able to find an un-needed bit of code in the control that was already in the YUI library. Able to refactor that out.

“If there is more then one line of comments in one hundred lines of code, I’m irritated.”
Convert the comments to code, instead of
if(age >  60) //— Is user a senior citizen?
use
if(isSeniorCitizen(age))

Nobody uses Composed Methods anymore.
Code with Composed Methods looks easy, the developer doesn’t even look that intelligent, but you are very wrong. This type of programming takes discipline and lots of smarts. So far I have Aspect Oriented programming and Composed Methods as areas I must delve into more.

Eliminate the namespaces. Namespaces makes the code ugly and hard to read, and its obscure. Stuart obviously hates namespaces, yet I like them. I dislike the need to look up the namespace basically because we have no intellisense. At eProject I make the fully qualified namespace not required but I do think I should focus on this becoming the norm and trying to name items better. EventManager.Attach is still long for something that will be referenced quite frequently.

As developers we don’t internalize cost.

The tragedy of The Commons. Conflict of personal interest against the common good. I don’t want to stop driving my car because of global warming, let everyone else stop. 

We only spend about 15-20% writing new code. The worse state the code is in, the less we write.

Anything that makes writing bad things more painful, we are less likely to write bad things. TDD and Pair programming are very helpful in this.

Life cycle cost. What is the cost of your product? All that code in the product has a life cycle cost.

The politics of getting your changes accepted.
- Don’t be condescending.
- Do something and offer a test.
- Play the politics. Use the right channels, submit it to the people that you are supposed to, but if you need, go straight to the source and talk to the people who matter.
- Rails was the hardest project to contribute to, they are just smart and strict.

Getting your employer to be enticed to releasing IP as open source.
- Get bits little by little released.
- Relevant spends all Friday’s working on open source.

No comments

TAE Day 1: Keynote

Posted in the ajax experience by Kris Gray on October 25th, 2007

Yea it really seems like I should have opened with this, but hey I’m trying to catch up. Its midnight and I gotta be up at 7 (4 my usual time) so gimmie a break!

A quick note on the vendors, because well, I made a note about it. (Probably the extent of my go getterness). The vendors room here is pretty small, there’s room for about 6 and they got I think 7. Mainly some big names, Google, AOL, Sun, Adobe, and Mozilla, though Qooxdoo, and thinwire (who?) are here too. Basically a bunch of people pushing frameworks. Do these companies even know why they are building frameworks? Who out there cares that AOL has an open blogging API? I’m not actually curious enough to ask the dude giving out shirts though so you might want to forget I talked about it.

 Now, on to the keynote, I could make this very long, or pretty brief, lets go for brief shall we? Its late.

Ben and Dior presented a list of items they wanted to see improvement on from 2006, the first item was fast JS, which I assume is DOM interaction as JS isn’t that slow. They had some comments about all the great stuff Mozilla is doing, Tamarind, the things IE isn’t (IE 8, I mean the super secret next version of IE), and the projects to help IE such as Screaming Monkey. Screaming MONKEY!! Sorry its fun to say.

Another item on the list I made note of was Framework Consolidation, yet we’ve seen many more frameworks come into being. I really wanted to drag these experts aside and ask them what the hell they were thinking. We have a basic free market based on features deciding what the best framework is. Developer adoption of the desired way to program on the web will determine the direction we want the web to go. Plus if we still got people making web frameworks, something must be driving this need. 

After analysis of many different frameworks their recommendation on which framework involves a list of all the possible frameworks on your LCD monitor and some darts. Basically embrace one, and run with it.

Apparently XHTML lost. We’ve abandoned XHTML 2 for HTML 5, I know I read this recently but I’m not sure why I didn’t realize that XHTML is now a dead end. It shouldn’t even be a choice between HTML 4.1 and XHTML.

WhatWG is pushing HTML 5 forward, and they seem to think that its important to start standardizing the components of a page. Such as a Footer tag, container tag, since we have these anyway why not have them marked up properly.

CSS Layout is murder on productivity. If you think about how long it takes to get things marked up and to do simple layout techniques you spend a very disproportionate amount of time on this one area.

Some progress on this with new CSS frameworks, YUI, Blueprint, YAML.

AIR desktop apps with HTML + JS, great possibility for the future.

Phobos - JS on the server. Since we have js on the client, and use js in the transfer as JSON, why not use js on the server and just complete the picture. Yea I used Javascript in Vanilla ASP too, but they never mentioned anything about that.

It used to be good enough that you had a product with great features and that was enough, yet its no longer acceptable to have a feature without good ease of use. And now you need a WOW factor to really make an impact.

The User Experience is key moving forward because “Attractive things work better”, so your product works better, just because it has that WOW factor. (Wow doesn’t stand for anything, its what you said when you first saw the iPhone in action)

2 comments

TAE: Day 1 Anti-Design-Patterns

Posted in the ajax experience by Kris Gray on October 25th, 2007

Anti-Design-Patterns
I was choosing between three sessions to go to, and ended up in none of them. Very wise decision, the presenter was Bill Scott the Director of UI Engineering at Netflix and he talked about some user experience problems that he has seen in his work at mainly Yahoo, Netflix and randomly across the web. Here is another rough list though I want to go back over his slides and do a full post after the sessions are over.

  • The Meandering Way anti-pattern. Signifies that a user has drift throughout the system / user interface to accomplish their intended action. Bill used screenshots of all the UI’s in the process and then overlayed some red arrows showing the path the user would take. This was very successful in showing that the user had to navigate in a trail simulating the HARD track of Project Goth am Racing.
  • If your user experience is poor, people just won’t want to use your product. Having a great UX translates to people being more productive. If people are more productive… (the rest should be self exploratory)
  • Usability testing is important, you need to catch your design issues early. Writing that it sounds obvious, but we’re not currently doing it. We don’t feel like a big enough company, yet that doesn’t seem like a good excuse after this session.
  • Bill felt very comfortable dealing with contextual item issues. (Things like drop down action menus and on hover menus.) The major problems involved here are making your user hover over, then having to move the mouse outside the bounds of the item, yet inside the new hovered menu to perform your action. Imagine a picture of a full parking lot from above and you hover over the image of a car in the middle somewhere, a menu shows up, yet the menu is bigger then the car and so it opens up and you have to select the option to delete the car from the parking lot far to the right. This requires you to hover over a car, then move your mouse to the right, hover over another car and repeat the same annoying mouse move action. His argument was that its really pissing the user off having to keep move their mouse.  His advice was to put the core actions right over the car so that if you want to delete it, you know that you can put your hover focus on the trunk of the car and that’s where the delete button will be, regardless of how the rest of the window opens. This is an inelegant example that he showed, but that’s what ya get for staying home.
  • Netflix found that a quarter second pause on mouse over of a movie before you popup the context window, if it popup up to quickly it was really annoying.
  • Popups to circumvent good usability are called Idiot Boxes, as much as I’d like to assume it was because the designer was an idiot for dreaming up such a feature, its really about assuming your users are idiots. Which while people like to claim just isn’t true, they may seem like idiots when you design something really complicated and they don’t care to try to learn exactly how it works, but when you make something very intuitive and smart the user will just know how to use it, and its not a matter of smart or dumb.
  • You need to be careful with Drag n Drop, especially with checkboxes. Don’t mess with the checkbox, its simple, its powerful and there’s no reason to go messing with how it works. He made a good point about this, but I kinda forgot it, sorry. Drag n Drop though, just make sure that if you implement it, you do it uniformly. If you can drag to add, can you drag to delete? Drag to re-arrange? If its only partially in there, users will get confused.
  • There was some questions about Auto-save, its an action that kind of does something major without to much notification to whats going on. (Autosave like wordpress who saves your latest post without you requesting it so if your browser goes down you don’t lose your blog post that you didn’t remember to save). I think we basically agreed that it was good, but don’t remove the save button. I think as it becomes more commonplace in web apps, people will probably begin to expect it and soon be disappointed when they close their form and it wasn’t saved when they come back.
  • Last thing, Use a grid of actions and elements to plot out the different states the elements are in during each action. So on drag, over header, highlight column.

Whew that was a good class, I hope to keep in touch with Bill a bit to pick his brain further, at-least for some advice on directing the UI tier.

No comments

« Previous Page