The Ajax Experience: Leveraging Ajax for Enterprise Application Development

October 30, 2006 | 2 Comments

Despite the fact that AJAX is making significant inroads within the Web 2.0 community, many enterprise applications still remain either traditional web or desktop applications. However, by effectively using AJAX, enterprises can develop compelling, innovative, and useful web based applications that increase employee productivity while retaining the manageability enjoyed by traditional web applications. This session will focus on the challenges of developing enterprise AJAX applications with an emphasis on overcoming the common hurdles and problems encountered along the way.

Presenter: Conrad Damon - Zimbra

Conrad’s discussion began with an re-iteration of what Web 2.0 is and how things have changed since Web 1.0. Old news, but the re-iteration was brief.

Choosing an RIA solution

Next Conrad explained his team’s decision process on choosing Ajax as the solution for creating their Rich Internet Application, Zimbra.

Flash?
The Zimbra team turned this down early on as they didn’t want to be tied to a proprietary solution… A decision I can respect :) I’m not too keen on the use of Flash as a front end for full-blown RIAs in most cases.

Ajax Worries
There were some hesitations regarding the use of Ajax as a solution:

  • Complexity - Lets face it, adding Ajax into the mix causes the applications complexity to increase.
  • Performance - there’s a lot going on with an Ajax app client-side that can cause client performance to degrade. (mixed with the chattiness server-side)
  • Some cross-browser issues.

Ajax: The Chosen One
Overall, Zimbra’s team decided on Ajax as the pros outweighed the cons:

  • Enhanced User Experience
  • Desktop application-like feel.
  • Deployment is trivial. - No installation…the application is accessible via the web.
  • The power of mashups is where its at. Its all about SOA (Service Oriented Architecture).

Ajax Points

Conrad noted a few key points regarding Ajax, however:

  • Ajax is cheaper on the server/network
  • Ajax applications are more memory expensive client-side
  • Ajax applications are not a business model
  • Ajax applications are the means not an end

Ajax Tips

Based on the Zimbra team’s experience, Conrad gave some tips:

  • Use an Ajax Toolkit - They simplify things. What you choose is up to you, but the time saved by toolkit use is well worth it.
  • CSS is your friend - bend it to your will
  • Use JSON, not XML - Zimbra has almost fully converted all passing of XML to JSON
    • JSON is easy
    • JSON is fast. Eval’ing JSON is faster than parsing XML by a magnitude of 10!
  • Use Asynchronous XHR (XMLHttpRequest) calls
  • Combine, Compress, and Cache
  • Automate Testing - Zimbra uses QuickTest Pro from mercury to test the Zimbra client.
  • OO, MVC
  • TLS (Transport Layer Security…SSL) - Make sure you use it!
  • KISS (Keep it simple, stupid) - this applies to both code and the UI!
  • No browser lock-in - don’t program for a specific browser…keep it open to at least the A-Grade browsers
  • Test, test, test

Browser Gotchas & Tips

Next came some helpful browser-specific tips and gotchas:

  • Firefox
    • Missing Cursor - workarounds exist (surrounding the input with a div…yadda yadda)
    • Event capture - effects DnD effects
    • design mode - lets you turn the Browser into an editor…buggy
    • xmlHttpRequest - bug that pained the CPU when making synchronous calls
    • opacity (linux) - hangs browser (relationship between X11 and opacity)!!!!!!!!!!!!!!
    • scrollbar bleed (mac) - scrollbar does not respect z-index
  • IE 6
    • string concat with +… - SLOW, use Array joins instead
    • image caching is poor - hard to convince to cache image in browser…workaround: have a hidden div and load the images there first
    • JS engine can be slow
    • Memory leaks - circular reference issue. workaround: give things numeric ids and a lookup table
    • XHR ActiveX object - some memory leaking issues
    • DOM attribute access is slow
  • IE 7
    • ActiveX opt-in
    • CSS fixes
    • Native XHR
    • memory leaks appear to be fixed
  • Safari
    • No design mode
    • DOM API not fully implemented
    • Debugging difficult (not entirely true)

The 3 C’s

By far the most useful section of Conrad’s presentation was on Zimbra’s 3 C’s; Combine, Compress, and Cache.

Combine
Zimbra uses this technique to minimize the sheer amount of files downloaded by the client which speeds up load time! Conrad suggests:

  • Concatenate your JS files and CSS files - Order matters (remember)! Zimbra uses the “Jammer” ANT task to do this dirty work.
  • Merge Images - Images are expensive! If your application uses a large number of icons, try merging them into a single image and use background-positioning on elements for the display of icons. For disabled icons, use opacity at 20-50% rather than creating a whole new icon.

Compress
Compression makes things smaller in size…smaller “things” are quicker to download!

  • Strip comments and whitespace - use JSMin or ShrinkSafe
  • GZIP your Javascript! - All of the A-Grade browsers support gzipping which reduces file size!

Caching
Set proper headers for appropriate browser caching. Avoid redundant downloads. Period.

Conclusion

I respect the Zimbra team and their decisions; their application is solid, functional, and quite sexy. All in all, this was a pretty solid presentation with a nice amount of data. As I mentioned earlier, the 3C’s were the most valuable tid-bits of information for me…although there were a few browser gotchas that I wasn’t aware of.

DotA 6.38 Released!

October 27, 2006 | 15 Comments

After a long wait, Icefrog and co. have released DotA Allstars version 6.38! Download here or here. For those interested, here’s the changelog:

  • 4 New Recipe items
  • 1 New Hero
  • Added -reverse (-rv) mode
  • Every 6 waves, a glaive thrower/meat wagon comes out with the creeps
  • Bottle with Rune now returns a Full Bottle after being used instead of an Empty Bottle
  • Reduced mana cost on Earthshock
  • Improved how Vendetta levels a little
  • Increased str/level on Ogre Magi
  • Slightly improved leveling of Eyes In The Forest
  • Faceless Void base damage increased a bit
  • Buffed maximum Watchers
  • Desolator damage increased from 50 to 60
  • Slightly improved the range on Shockwave
  • Hyperstone from 2450 to 2300
  • Weaver attack range from 400 to 425
  • Wraith recipe from 150 to 125 gold
  • Increased Shadow Word cooldown
  • Increased mana cost on Dual Breath
  • Added an ability to disassemble certain items in the circle of power
  • Map preview is now colored
  • Added new SA Perm Invis icon by Axidos
  • Improved mana regen on Bottle
  • Melee heroes get denied less xp than range heroes do
  • WTF Mode no longer requires voting
  • Fixed the -ar -random exploit (again!)
  • Fixed Vendetta not listing the movement speed it gave before (10%)
  • Fixed a bug with 2 daggers on disallowed heroes in order to keep 1
  • Tower regeneration reduced
  • Fixed a minor bug that would sometimes cause the level up animation to not play
  • Improved the Wrath of Nature icon based on snork’s suggestion
  • Added disablehelp/enablehelp for Astral Imprisonment
  • Roshan now drops Cheese!
  • Added a set of single player only commands to help people in their hero tests
  • Various tooltip fixes
  • Replaced “Upkeep” text with the version number
  • Tango buying cooldown set to the same as the rest of the items
  • Fixed various other minor bugs and typos

The Ajax Experience: Plan of Attack

October 20, 2006 | 3 Comments

The Ajax Experience is next Monday (although I arrive Sunday afternoon) through Wednesday and I’ve prepared my plan of attack:

Monday

10:00am-11:30am: Leveraging Ajax for Enterprise Application Development - Conrad Damon
12:30pm-1:15pm: Keynote: Towards a Service-Oriented Applications Stack - Matt Quinn
1:30pm-3:00pm: Simplify Ajax development with Apache XAP - Bob Buffone
3:30pm-5:00pm: Ruining the User Experience - Aaron Gustafson
5:15pm-6:45pm: Scriptaculous - Justin Gehtland
8:00pm-9:30pm: Expert Panel Discussion

Tuesday

8:30am-10:00am: Intro to Dojo - Alex Russell
10:30am-12:00pm: Yahoo! Experiences with Accessibility, DHTML, and Ajax in Rich (Dunno what Rich is…probably the start of “Rich Internet Applications” [RIA], probably) - Nate Koechley
1:00pm-1:45pm: Keynote: Ajax from AOL’s Perspective - William Morris
2:00pm-3:30pm: RAD 2.0: Working with symfony (PHP) - Dustin Whittle
4:00pm-5:30pm: Markup & CSS for Developers: Empowering the Application Developer with Front End Magic - Molly Holzschlag
7:00pm-7:45pm: Keynote: The Once & Future Web - Chris Wilson
9:00pm-10:30pm: Expert Panel Discussion

Wednesday

9:30am-10:30am: Designing for Ajax - Bill Scott
11:00am-12:30pm: Dojo Cookbook - Dustin Machi

My schedule is subject to change based on buzz or sudden interest in other presentations. I look forward to seeing what they have to offer and will be blogging along the way!

Ninjas > Pirates Background

October 16, 2006 | 16 Comments

My sweet background:
Ninjas and Pirates Background


Summit 2007 Presentation Proposal

October 11, 2006 | 2 Comments

Like Zach, its time for me to submit my Summit Presentation Proposals. My plans for submitting presentations for Student Query v2.0 and Course Query v2.0 were smashed when competing priorities at work prevented me from pushing forward with those projects. They remain in the same state as last year. Regardless, I still have one presentation proposal this year, which I’ll put below (along with my updated bio).

My Title: Self-Service Banner Administrator and Senior Web Developer

My Bio:
Matthew Batchelder is from Plymouth State University in northern New Hampshire. His titles include: Self-Service Banner Administration, Senior Web Developer, and Business Analyst. Matthew’s projects revolve heavily around Identity Management, custom Student/Prospect tools, and web-based reporting. Summit 2007 will be Matthew’s second year presenting at SungardHE’s conference - at his first, Summit 2006, he presented on “Student Reporting Through SSB.”

Building for Prospective Students
Prospective Students are a key component of every campus. They become our students, but we have to interest them first! Delivering personalized content to the Prospective Student and a solid e-mail marketing strategy in the form of a Prospective Student Portal was the direction taken by Plymouth State University. This session will walk through the steps PSU has taken to plan, develop, integrate, and implement this Prospective Student Portal.

Google Spreadsheets and Writely Merge

October 11, 2006 | 1 Comment

Since the Google acquisition of Writely and the creation of Google Spreadsheets, the two office-like products have sat separate. Office documentation has become more simplified as of last night! Google Spreadsheets and Writely have merged into one web application: Google Docs.

Google Docs has kept the functionality of the two products intact while adopting the simplified look-n-feel of Google Spreadsheets. The next logical step would be to merge some of the functionality of each application…adopt discussions in the document (ex-Writely) section and give the collaboration/publish functionality to spreadsheets. (yeah yeah, you can already collaborate with spreadsheets, but the collaboration is limited)

I’m excited to see what pans out with all of this. Oh, and as a side note, I see that Google has added a ‘Photos‘ link to the quick-nav at the top of Google Docs. Google is finally pushing Picasa…interesting.

The Ajax Experience

October 10, 2006 | 5 Comments

Well, it seems my application for one of the 5 scholarships to The Ajax Experience has gotten through! w00t!

The Ajax Experience is:

Ajaxian and NoFluffJustStuff Java Symposiums (NFJS) are pleased to announce The Ajax Experience 2006 Fall Edition - Boston. We had a great time at the spring event in San Francisco, so we decided to do another show on the east coast. This international event will take place October 23 - 25, 2006 at the brand new Westin Boston Waterfront in Boston, Massachusetts.

The Ajax Experience 2006: Boston show will feature sixty (60) technically focused ninety (90) minute sessions across three (3) full days spanning six (6) parallel tracks with over (40) forty speakers.

We encourage you to register as soon as possible because seating is limited and we anticipate a sold out show. Here is your opportunity to attend one event where you will find authors and industry notables in one place for the duration of The Ajax Experience Fall 2006 show. This is a unique event you should want to be a part of.

When I first heard about the conference last year, I was extremely excited…but had my hopes stomped when I brought the cost to my manager. Ajax was “too new” and the University could not justify the expense of the trip. I waited a year and once again had the eyebrow raised when I brought it up. Not necessarily my manager’s fault…but convincing the University System that they should do something is like convincing a rock it should get up and walk around.

When I saw the Scholarship Program for The Ajax Experience, I got to typing and sent in my application with crossed fingers and high hopes. My typing paid off. Here’s what I wrote:

My name is Matthew Batchelder, I run BorkWeb ( http://borkweb.com), am a co-founder of MasterWish (http://masterwish.com), and am a web application developer at Plymouth State University (PSU) in Plymouth, NH. I’m close by yet so far away.

A few PSU co-workers and I have been steering web development at the university to include Ajax techniques to enhance the speed and usability of our applications on campus. Users have been pleased with the results and want more! But…PSU - being a state-run university - lacks funds to send all of their employees to conferences, especially conferences where the higher-ups [don't know] what valuable information can be attained there - brains, networking, tips, etc. When mentioning this conference both last year and this year, I’ve been met with a handfull of negative responses: “No, we don’t have the resources” to “Ajax…isn’t that a cleaning product?.”

MasterWish - a one and a half year old brainchild of a couple of other developers and myself - has been my playground after work hours. I began my experimentation with Ajax using that site, as PSU tended to slap my hand when looking into Ajax at work. Through that experimentation, I began to understand the workings of Ajax and how it would work into the PHP/Templating environment I was so comfortable with. Once I had dug down, I promptly posted my “Ajax; Templating; and the Separation of Layout and Logic” article that Ajaxian blogged about, along with the follow-up article.

I am building. I am reading. I am experimenting. I am writing. There’s always more to learn and I’d love to see and hear what the Ajax leaders are doing to help guide my train of thought. Re-creating the wheel sucks and conferences are a great way to have a lot of information slammed into your skull and an even better way to network. Sadly, the price of The Ajax Experience admission is too great great a cost for me to fund myself, and PSU [doesn't always] know what’s best for them and refuse to pay. I look to you for help.

Thank you for your consideration. If you need anything more from me, please let me know!
-Matt

I look forward to picking brains, networking, sucking in as much information as I can get, and blogging it all :D So: I owe a HUGE thanks to the guys over at Ajaxian; and a big congrats to the other 4 that received a scholarship. I’ll see you all there!

Oh….and I look forward to the swag:

  • All Access Pass - The Ajax Experience
  • Branded iPOD Shuffle - The Ajax Experience
  • Two free books - Ajax Design Patterns & Java Script: The
    Definitive Guide, 5E
  • Free Access to Slides/Audio of The Ajax Experience 2006: San
    Francisco ($250 Value!!)
  • Custom Laptop Bags - The Ajax Experience
  • The Ajax Experience Shirt
  • The Ajax Experience Binder with handouts from sessions attended
  • CD with all presentations
  • Slides/audio/select videos of The Ajax Experience: Boston
  • Breakfast, Lunch, Dinner, Breaks
  • The Ajax Experience Party
  • Great Giveaways including iPOD Nanos, iPOD Videos and XBOX 360s