Archive for February, 2008

* Ajax Functional Testing

Posted on February 27th, 2008 by Dave Johnson. Filed under AJAX, Testing, Uncategorized, selenium.


We are getting really close to being able to release all of our Selenium functional tests and JSUnit unit tests to our developer community! Ryan has been doing a kick ass job of bring Cruise Control back from the brink and we are being way better about actually running all our tests ;)
With Cruise Control we can now check out our web based dashboard to see the results of automagical test runs and builds or do a manual build. We can even see the results of our Java based Selenium functional tests online.

By abstracting much of the Ajax and DOM leg work into base classes we get really clean Java based functional tests that look something like this:
clickCell(2,2);
assertEquals("Some cell value", getSelectedCellValue());

What could be easier? It is also nice that it is run from Java since I can just create a Java project that references all my Ajax tests then compile and run them individually on my development computer using JUnit. Then they can also easily be called from ANT build files and Cruise Control as well.

I will be posting some more about Ajax testing soon.

.



* Free the Net at Open Web Vancouver

Posted on February 26th, 2008 by Dave Johnson. Filed under AJAX, Conference, Nitobi, vancouver.


It looks like Joe will giving a presentation on Free the Net at Open Web Vancouver this year!

Nice one Joe!

Tags: , .



* Sequence Site Launches

Posted on February 25th, 2008 by Dave Johnson. Filed under AJAX.


My good friend Ian Kirby runs a small company named Sequence where they handle everything from web design to motion design to feature films and DVD authoring. They also share office space with Nitobi and _always_ lose at foosball.

Most recently they did some very well received animated shorts for the latest Will Smith production I Am Legend.

They finally relaunched their website so go check out the cool stuff they are doing!

Tags: .



* Nitobi Complete UI Q1 2008

Posted on February 24th, 2008 by Dave Johnson. Filed under AJAX, Nitobi, Performance, completeui.


I made this video the other day highlighting new features in the latest release of the Nitobi Complete UI Ajax framework.

Main points being:

  • Improved Grid performance and file size
  • Drag and fill selection enhancements
  • Better CSS styling and skinning
  • New Support Center
  • Dreamweaver support

Check it out and download the latest code!

.



* Nitobi’s OnAIR European Vacation

Posted on February 21st, 2008 by Dave Johnson. Filed under AJAX, Nitobi, adobe, adobeair, air.


Adobe is at it again with the OnAIR bus tour European leg.

There will be two legs this time one in the west and one in the east.

Of course the most exciting part is that Andre will be joining the party again for both legs and talking about all the Ajax goodness that AIR has to offer. So if you are a Nitobi customer in one of the tour cities be sure to contact us and meet up with Andre!

.



* Internet Explorer StyleSheet Quirks

Posted on February 19th, 2008 by Dave Johnson. Filed under AJAX, CSS, InternetExplorer, JavaScript, quirks.


I have spent the better part of the past week fighting with the Internet Explorer 31 stylesheets limit.


http://flickr.com/photos/cassidy/2461135/

It came up when, thanks to the great performance of our Grid component, a customer wanted to have about 35 grids on a single page for a very complex ordering system. Now as is usually the case, by the time that people come to us to help them they usually have a pretty firm business case for their application and don’t want to change the overall information architecture and the like - so we had to figure out how to get 35 grids running in Internet Explorer.

The problem arises from the fact that for a live scrolling grid where blocks of data are dynamically inserted into the page as the user scrolls, each grid needs its own stylesheet since the column widths and a few other parameters are defined on a grid/column basis and need to be changed globally in a lot of cases; for example, when a column is resized we need to be able to just change one CSS rule and have the widths of all the relevant HTML nodes get updated.

The worst part is that there is even a difference between IE 6 and IE 7 - w00t. In IE 7 it has no problem with just creating one stylesheet and continually appending or overwriting that stylesheet. So that was a pretty easy fix to have a global stylesheet instead of one for each grid. Then comes IE 6… in IE 6 it seems that you can’t even write to the same stylesheet object more than 31 times (or some number around 31 I am not really sure).

So what was the solution for IE 6? We essentially had to make a registry of all the components on the page that keeps track of which components were done initializing and then when all the components are ready create one huge stylesheet and write the contents only that one time. Failing to use this approach meant that IE 6 would just crash.

The other approach that we of course considered was using addRule on the stylesheet object to inject each of the CSS rules into an existing stylesheet rather than writing the stylesheet. I quickly learned that addRule is ridiculously slow in IE. Something like on the order of 30ms to add a rule. So ~35 grids * 50 columns per grid * 30ms per addRule = way too long. Retarded.

We now almost have everything working with > 31 grids. Joy.

.



* How Not to do Security Questions

Posted on February 12th, 2008 by Dave Johnson. Filed under grindsmygears, usability.


Recently when I tried to log in to my online bank account I was asked the following security question to validate my identity: “What is your favourite television show?”.

Of course normally I would answer Dallas in an heartbeat, however, I have been watching the Designing Women marathon this week and I am re-living the early romance I had with it.

Needless to say who comes up with temporal security questions? My favourite X changes from week to week so just stick to things that don’t change like your first car, first high school, first wife etc.

.



* Hack Day Hangover

Posted on February 10th, 2008 by Dave Johnson. Filed under AJAX, Flex, Nitobi, adobeair, hackday.


The turnout for Nitobi Hack Day was great!

Pretty much all the desks had people hacking and there were five of us around the boardroom table writing code. Hopefully everyone will update the wiki with their names and projects. There was a collaborative flex app, a Rails web application, a blog API written in merb, a Facebook app, foosball cup holders, an iPhone app, declarative YUI components, a command line twitter client, and a few others that my hangover is preventing me from recalling. Hopefully people will update the wiki with the full list.

Ryan had the best hack that was an Adobe AIR application that controlled music being played on a different computer - way cool and hopefully he will polish it up and release it for everyone! For his efforts Ryan won a copy of Adobe Creative Suite Master Collection!

There is still lots of beer left at the office so I am sure that this will be a productive week coming up.

Thanks to everyone who participated and hopefully we will have another hack day in a couple of months.

.



* Nitobi Hack Day Hotting Up

Posted on February 6th, 2008 by Dave Johnson. Filed under AJAX, Nitobi, adobe, hackday.


  • Beer - CHECK (Storm Scottish Ale, one of the best Vancity microbrews)
  • Food - CHECK (giant sammiches from Social here in Gastown)
  • Free swag - CHECK (Thanks Mike and Adobe for the box of Flex Builder licenses and books)

Oh yah and I have finally made a wiki for the Hack Day so that people can put up ideas / list if they are coming or not.

.



* How Not to do Search

Posted on February 4th, 2008 by Dave Johnson. Filed under AJAX, usability.


FutureShop has a great search feature. When you enter a search string that has no results they helpfully suggest you try searching again, however, they don’t present a search box nor even a link to get back to the search page. Maybe the search functionality on their site is server intensive and so want to prevent the low IQ crowd from entering too many difficult searches?

.