Yahoo Acquires Zimbra

Zimbra Today, Zimbra announced today that they have been acquired by Yahoo! for $350 million. Zimbra was bound to be acquired by someone and the acquisition by Yahoo! wasn’t an overly surprising move as it has had a tendency to pick up Web 2.0 and Ajax Web Apps over the past few years. It will be great to see where Zimbra (which is an amazing application) goes with the resources that Yahoo! brings to the table.

This purchase is interesting seeing how Plymouth State University, my place of employment, just finished an implementation this summer. With such a large organization backing Zimbra now, it will be interesting how licensing will change over the years. We can always hope that the changes will be minimal…but as always, change is inevitable.

Regardless, the two companies in bed together isn’t too scary of a thought and I look forward to seeing things unfold!

The Ajax Experience: Leveraging Ajax for Enterprise Application Development

[[innerindex]]

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.

Google Calendar Coming Down the Pipe

googlecl2.gif I knew it was coming, but when will it get here? I’m talking about Google’s Calendar a.k.a. Google CL2. It seems as if the calendar may come sooner than later, as google is leaving bread crumbs hanging around that point in the direction of a calendar app. Here’s a blurb from PaulStone.net (where I first read about this sweet news):

I can’t see the links show up in Gmail itself yet, but if you go http://mail.google.com/mail/?view=barc you can select which links to show. And when you go to the calendar url (http://www.google.com/cl2/) it gives you the login box, but if you try to login it gives you an invalid request page.

I’ve no clue what Google CL2 has in store, but I’m hoping for something on par with Zimbra‘s integrated calendar. I speculate that it will be hand-in-hand with Gmail, it will be Ajaxified, and I can only hope it has RSS features. Just another sweet tool to be added to Google’s list of services!

Ajax, More Than A Buzz Word

Ajax the development technique, not to be confused with Ajax the cleaning solution, is taking the web by storm. What is it?

Ajax stands for Asynchronous Javascript And XML. Its an architectural methodology on the interactions between a number of different technologies in a way that provides a more seamless user experience between user-to-server communication.

There are tons of blogs and articles out there that rant and rave of its use as savvy site designers implement Ajax into their web applications, and rightly so. However, through my blog skipping and digg watching I have seen numerous complaints of “OMG, Ajax is stupid….its just a fad/buzzword/etc” or “Ajax is just overhyped, don’t know why people use it!!” I have a couple words that describe those people: cynical, ignorant and, well…squirrel handed. Wake up people. Ajax isn’t a fad, its an architectural change in the way that web applications function. A focus on application speed and uninterrupted user interaction.

What’s so great about it? Why do I pee my pants with glee every time I use a web app that makes use of the technology?

I’m a developer. I’ve been developing database driven web applications for a number of years now and have seen the clear line between a desktop application and a web application. Desktop applications are highly interactive and responsive to the user, where web apps (in the past), were fairly static locations (however dynamic the content) to provide information/entertainment to the user, where user interaction required page loads in order to store information to a database/write to a file.

Next came Flash, an excellent tool but tends to require a much more artistic flare and is much more time consuming with general maintenance than its worth.

The reason Ajax is so sexy is that it bridges the gap.

The average-Joe browser may not be aware when they stumble upon a site that makes good use of Ajax, but that average Joe can feel something right about it. To the avid browser, however, an Ajax site is more readily obvious; you can interact with elements on a page and save settings without reloading; pages are highly resposive to user input with minimal wait times.

Gmail and Google Maps were the applications that really brought Ajax into the limelight. (They weren’t the first, just the first major apps). The world saw what Google could do and followed suit. The world saw that it was good. The Ajax revolution was born. It has birthed a whole new breed and boom on the internet, bringing forward a multitude Ajax enabled sites and applications:

And thats just the tip of the iceberg. I look forward to what will become of our expectations of web applications. You won’t see me sitting idle during this evolution. I will be innovating and participating all along the way.