I have never been a fan of custom scroll bars. Most of the time they are just eye candy and end up getting in the way. That was until I saw the scroll bar in Google Wave. I thought it was the best UI feature in the whole app. It... Read more
I'm proud to announce the lauch of spritewizard.com a web service that allows you to create and maintain css sprites with an easy drag and drop interface. I created SpriteWizard because I could never get all of the images from a designer at once. Having a simple web interface that... Read more
In most of the web apps I have written I have had to track / cache simple. It might a jQuery selector or a small group of objects in an array. In some form or another I end up doing something like this to get / set data. appname.data.user[appname.data.state.activeUser].username; Enter... Read more
I was messing around with the dialog widget trying to figure out away to have it remove its self after the user closed the dialog. I tried listening to the dialogclose event but that didn't work. After playing around with it turns out you can override the default options like... Read more
Recently I ran in to a small bug in Internet Explorer where on an empty cache it would take minutes for script.readyState to equal 'complete' after the script had been successfully loaded from the server. But if you refreshed the page , script.readyState would equal complete on page load. var... Read more
One of the features UI that Google wave uses is what I call the "overflow" menu. If you have a wave account you may have noticed that depending on your browser window size not all of the menu options are shown. The hidden options tucked away nicely in a drop... Read more
When creating a function in javascript its a good idea to check object the object type(s) of the arguments pasted to function. Lots of times you end up with code looking like this to do this if(typeof(foo)=='undefined'|| foo==''){ ////do something } Earlier this week I ran across Paul Irish's jQuery Anti-Patterns... Read more