Five Faves with Ryan Dewsbury
1. Fave Ajax Application
I have two. First is Google Maps. This app is what first got me excited about Ajax because it's a perfect example of the type of application that excels with the technology. Traditionally maps work best as folded sheets or bound in books. The problem is that they get outdated and don't have complete information. Sometimes you need to look just beyond the map that you have. With the web, we have the capability to have an immediately accessible and complete map of everything. MapQuest recognized this and created a compelling solution. However, it was slow and cumbersome. You would be given a map viewport but had to refresh the page to zoom or scroll and the refresh could take a few seconds - not quite as good as an unfolded map that you could scan over completely. Google maps came along and solved this problem properly with zooming and scanning without slow refreshes, giving you a complete map of the world on a web page.
The second is Yahoo Pipes. Although it's not quite as ground breaking as Maps it shows how a simple development environment can be created in Ajax. Using Visio-style diagrams to route data is very compelling. I look forward to seeing more domain specific development environments like this in Ajax.
2. Fave GWT Tool
The ImageBundle is my favorite tool. I was able to combine what would be 52 image downloads for the cards on GPokr into one download using this tool. If you know about HTTP's two connection limit you can understand the performance improvement this gives you.
On top of being very useful, this tool indicates that the GWT developers are improving the toolkit in more than one direction. They're not only working on more widgets, libraries, or compiler optimizations, but are also paying attention to how applications are deployed. Ajax applications tend to be closer in structure and size to regular client side applications which you would download and install. The difference is that client side applications usually come as an installable bundle while web/Ajax applications come in pieces. These pieces are great for traditional web applications because it allows pages to share resources, but for an Ajax application that is typically self contained it's unnecessary. The ImageBundle gives Ajax applications some of the deployment advantages you get from traditional client applications. Also very exciting is the GWT Incubator project's ResourceBundle. This class takes the ImageBundle idea and applies it to other types of resources.
3. Fave IDE
My Favorite IDE is Eclipse. Usually in web programming you can get away with not having an IDE because code can be updated on the fly and actions are divided into small distinct requests from clients. However, if your application code grows to more than simple requests or declarative HTML you'll need a better way to manage and debug it. Traditional client and server software has always had rich IDE's to help with this task. Now we're seeing web software become more complex and require more advanced managing and debugging. I now use Eclipse to build both the server side and client side of my web applications.
4. Fave web site for learning GWT
The best website for learning GWT is the GWT online reference and the very active developer's forum.
5. Fave web development book
My favorite two over the last few months are High Performance Web Sites by Steve Souders and Ajax Security by Billy Hoffman. The book by Steve Souders is short and sweet, outlining 14 simple rules to make your web applications faster, including things like moving stylesheets to the top of your HTML page and javascript to the bottom. The book is a perfect complement to YSlow. Billy Hoffman's book is a must read if you're building public facing Ajax applications. He explores quite a few security holes that you may unknowingly bump into.