Ultimate List of Datepickers
Tags: JavaScript, Open Source, Free Tools | on 11/12/07
Here is my ultimate list of almost 50 datepickers (popup calendars) each rated each based on useful features, documentation, customization options and internationalization.
If you see anything inaccurate in this table please let me know.
I have gathered this list over the last year that I have been developing jQuery UI Datepicker with Keith. I never used anyone else's code, but I certainly have gotten feature ideas from other datepickers - as I'm sure others have used features ideas that Keith and I have made.
If you feel I have rated a datepicker unfairly low or missed one from the list, let me know. I have probably overlooked something - there are so many great scripts out there it is hard to be perfectly objective and fair.
Ajax Experience Tutorial Sessions
Tags: Conference, Open Source | on 5/5/07
- Part 1: Ajax Experience Tutorial Sessions
- Part 2: My Ajax Experience
- Part 3: Ajax Experience Roundup

I'll be here in Boston for the next week at the Ajax Experience until Friday. Then on Saturday I will be heading over to jQuery Camp at Harvard where I am giving two sessions.
Day 1 - Geek Week @ The Ajax Experience 2007
I flew into Boston this morning from Minneapolis and ate lunch with my cousin. Had an interesting time and finally got here to the Ajax Experience. After spilling a pitcher of water - almost frying some guy's laptop and breaking a glass on the other side of the room, I finally sat down to view the first tutorial titled, "Ajax Tutorial".
Ajax Tutorial
Ben Galbraith - Co-founder of Ajaxian.com
Ajax Tutorial Presentation Slides
Ben gave an overview of Ajax and started getting his hands right into some demo code. He showed a very basic implementation of the XMLHttpRequest object to send data to the server.
Ajax Innovations
- Google Maps was the early innovator with Ajax. Proved to many developers that you actually can do more in a web browser.
- Housing Maps went out to craigs list and merged addresses with housing listing without the permission of Google. Housing Maps showed that Ajax is exposed to the world and there is really nothing the publishers can do to hide it.
- Google Suggest shows that the network response time isn't that slow and you can rely on quick response times from the server.
- Blinklist opened the door to cleaner and quicker UI.
The biggest lesson from Ajax that we learned is, "JavaScript doesn't suck after all".
Tools to develop ajax are Aptana and Firebug - check and check. I absolutely love these tools and use them every day.
Ajax is somewhat slow and processor intensive, but Tamarin is a project that will speed up processing of JavaScript. Adobe's ActionScript interpreter is faster (up to 10 times) and they donated it to Mozilla. Now Mozilla is working on implementing Adobe's ActionScript engine to interpret JavaScript faster in the browser.
JavaScript Libraries
John Resig - Mozilla
Three basic ways to implement JavaScript with libraries.
- Level 1 - Easily drag and drop in widgets into your web application.
- Level 2 - Some assembly required. Set of functions that allow you to not worry about the browser bugs. JavaScript Frameworks - Aids writing JavaScript code.
- Level 3 - Directly interact with the DOM API. Dealing directly with DOM and dealing directly with browser quirks and bugs.
You should use a JavaScript library so you don't have to deal with problems people have already solved. Hence wasting a lot of time.
Prototype, jQuery, Yahoo UI, Dojo - These four libraries completely dominated the open source, general purpose JavaScript libraries. These libraries are significantly more popular than any commercial solutions. GWT, DWR and etc are minuscule in their overall use than the open source JavaScript libraries.
Overview of Frameworks
- Prototype is the oldest JavaScript framework (3 years old) and is the default for Ruby on Rails. Prototype's function naming scheme looks like Ruby functions. Prototype doesn't include any animations. That is done by it's sister library, Scriptaculous.
- jQuery is focused on short code and is specifically focused on adding behavior to the DOM (HTML). Features can be added via plugins. jQuery pioneered using CSS selectors to interact with the DOM, which is now being included into the other libraries.
- YUI is an attempt to standardize internal Yahoo JavaScript. They didn't want to rewrite their code internally, so they decided to put their code into a framework.
- Dojo is largely backed by corporatations and manpower. Very standardized and completely focused on building web applications.
My laptop died after this so I'll summarize in my own words after the fact.
The philosophies behind the libraries are different. jQuery and prototype are built from the bottom up. They solve the core browser problems first and than build other features on top of the core. YUI and Dojo are built from the top down. They are built from the perspective of the end widgets and than built down to the core. The similarities between the widgets.
He than showed a variety of widgets that some people need and compared the libraries on what each one has. You can view this comparison on the presentation slides.
The overall mantra of the presentation was choose the best library for what you need by looking at their strengths and weaknesses. John did a good job of giving an overview of these strengths and weaknesses in his presentation.
Designing for Ajax
David Verba of Adaptive Path
He spoke on the elements of user experience. What I found most interesting about this presentation is that he said with the new user experience (that includes Ajax) Information Architecture artifacts no longer work. It is difficult to map the user experience. He talked about different tools that he has tried to use to to no avail. He said prototypes built with HTML/CSS/JavaScript seem to be the only way to go. It is the only way to really map the interactive experience without building the actual backend of the application.
I am sure the IA folks from back home would have absolutely loved this presentation. According to this, I - as an HTML/CSS/JavaScript developer - would actually have to be involved with the IA process.
Wrapping up Day 1
It was great tutorial day - a precursor to the actual Ajax Experience conference. I have to say I was absolutely locked to Resig's presentation, being that I am really involved with JavaScript development. David Verba's presentation was very important for developing client work, and Ben's was a great overview on Ajax. Tomorrow is when the actual conference starts. Here is my schedule:
| Time | Title | Minor Category |
|---|---|---|
| Tue (1:00PM-2:30PM) | Intro to Ajax - Ben Galbraith and Dion Almaer | Tutorials |
| Tue (2:30PM-4:00PM) | JavaScript Library Overview - John Resig | Tutorials |
| Tue (4:00PM-5:30PM) | Designing for Ajax | Tutorials |
| Wed (10:25AM-11:25AM) | The Future and Viability of the JavaScript Language - John Resig | JavaScript |
| Wed (12:00PM-1:00PM) | Reaching the Entire World: Accessibility & Internationalization with Dojo - Adam Peller & Becky Gibson | Frameworks: Client-Side |
| Wed (2:00PM-3:00PM) | Industry Leader Technical Session | Industry Leader Technical Session |
| Wed (3:10PM-4:10PM) | Industry Leader Technical Session | Industry Leader Technical Session |
| Wed (4:35PM-5:35PM) | Ajax Performance Analysis: Employing the Latest Tools to Get the Job Done | Building Quality Software |
| Thu (9:10AM-10:10AM) | Intro to jQuery - John Resig | Frameworks: Server-Side |
| Thu (1:00PM-2:00PM) | Advanced jQuery - John Resig | Frameworks: Server-Side |
| Thu (2:10PM-3:10PM) | CASE STUDY: Dodging the Pitfalls of Enterprise Ajax Applications - Joshua Gertzen | Case Study |
| Thu (3:45PM-4:45PM) | Using Firebug for More than Development - Patrick Lightbody | Building Quality Software |
| Thu (4:45PM-5:45PM) | Ruining the User Experience - Aaron Gustafson | Design & Effects |
| Thu (6:00PM-7:00PM) | Ajax on Struts - Ted Husted | Frameworks: Client-Side |
| Fri (10:10AM-11:10AM) | Design Patterns and Animation with jQuery - Paul Bakaus | Design & Effects |
| Fri (11:30AM-12:30PM) | Silverlight | Design & Effects |
| Fri (2:10PM-3:10PM) | Advanced JSON: Persistence Mapping, Mashups, RPCs and beyond - Kriz Zyp | Architecture |
| Fri (3:20PM-4:20PM) | Looking for a Fix? Ajax Debugging & Quality Assurance | Building Quality Software |
I will attempt to document good sessions, but there aren't any plugins around here so it is going to be hard to save the laptop juice. 5 days total - 1 day down.
5 Things I learned from Coding Open Source
Tags: Development, Open Source | on 5/5/07

1. Create a solid foundation.
When you release a piece of code to the open source world, make sure it is commented and nicely formatted. I was under the impression that I would release a piece of code and people will just use it. Not so, they actually interact with your code and modify it to their needs. When you release code to the public, if you comment it well and make it easily extendable you will be amazed at how other developers augment it.
2. Treat your community well and watch your project grow.
Make sure you give users a platform to speak off of. I did this with comments on the demo page. In open source, the community you are a part of is the lifeline to a better project. If you respond to users and fellow developers, they will help you out a lot. jQuery calendar went from having a basic feature set, to having 25+ customizable options and 10+ languages. Could I have done that alone? No, and thats the beauty of open source. I can release something and if I have a solid foundation and a community to fuel it then it will grow.
3. If your code becomes popular, prepare for tons of bugs and feature requests.
At first, it was really cool to get any response at all on my code. I was instantly fixing, updating and supporting my users. After a few months the code became more and more popular. I eventually got overwhelmed with emails and comments. Now I could literally spend three full work weeks tracking down and catching up on the comments on my jQuery Calendar plugin alone. I decided I need to shut down my comments and direct all traffic to jQuery's bug tracking tool. At least now it will be categorized, organized and more efficient. I think comments were a really great starting point because people could make comments without having to register or go to a new location to comment. But at some point I need to have a life and that involves making things easier for me, the developer.
4. Test your code in browsers you don't care about.
Make sure your code is tested in Safari, IE6+, FireFox and Opera or else you will never hear the end of it. Maybe you don't care about one of those browsers but I guarantee someone will complain because they use it as their primary browser. Use something like Firebug Lite to debug your code in non-firefox browsers.
5. Don't expect money, you'll get paid in other ways.
I've talked to open source gurus and they don't get many donations, so you probably won't either. You will get paid in other ways. Sometimes you need to do things because you are passionate about it rather than expecting to get rich. There is more to life than being rich.