The Future of Web – Microsoft Mix 11

During the last couple of weeks, there was a lot of buzz around the new browser releases – IE9, Firefox 4, and Chrome 11 beta. In part, it could be looked at as a popularity contest and a race to the top. Looking past the smoke and mirrors, it is a more of a race to keep up with the evolving technology – HTML5, CSS3, jQuery, Cloud, {insert more buzzwords here}. Face it – the web is definitely evolving.

That future is this topic of conversation, as well as break-out sessions and bootcamps, at Microsoft MIX 11. April 12 – 14. Mandalay Bay. Las Vegas. And I am there.

I am happy to report that I will be live-blogging the non hands-on sessions. The hands-on lessons learned will be posted sometime after the event.

I will be attending the Cloud Computing and jQuery boot camps.

Cloud Computing Boot Camp

In this half-day workshop we will begin by discussing the what, why and how of cloud computing. After we have covered the fundamentals of cloud computing, we will dive deep into the Windows Azure platform. This will include a discussion of various building blocks, features, and tooling. Next, through a series of demos we’ll review a variety of features of the platform and patterns that can help you move your on-premise workloads to the cloud. Finally, we will discuss the economics of cloud including cost and SLA.

jQuery Boot Camp

In this session, Joe Marini will show you how to get started using the power of jQuery and its sister library jQueryUI to build your next-generation Web applications. Whether it’s animation, dynamic formatting, AJAX, or complicated UI, jQuery has the features you need to help tackle your hardest Web development problems.

I am still deciding on the sessions I will be attending but you will be able to find all posts related to MIX11 at here – http://blog.image0.com/tag/MIX11.

Using Generic Http Handlers to Speed Up ASP.Net – Writing XML

ASP.Net Page vs. Generic HTTP Handler

Web forms (aspx files) and web controls (ascx files) that populate the forms are the two most common elements we create in an ASP.Net web applications.  Web forms are great. You put in some <asp:tags /> and ASP.Net does the rest to render the HTML, and it’s done in a lot less lines than you would have to write with classic ASP 3.0.

With all this magic, however, there is a lot that happens behind the curtains.  There are 11 events that take place during the loading of an ASP.Net page.

    A Generic .ashx handler just has the ProcessRequest method.

    XML Output

    For something like writing raw XML to the browser which may not have any page controls like buttons or images, this is a perfect example of where you can benefit from the performance gain by using a generic http handler instead of wiring up events you won’t use with an .aspx page.  The code to output the XML is fairly simple.

    public class Handler : IHttpHandler
    {
          public void ProcessRequest (HttpContext context)
           {
               context.Response.ContentType = "text/xml";
               context.Response.Write(
                     MyBLL.XmlHelper.GetFor(someobject));
          }
    
          public bool IsReusable
          {
               get { return false; }
          }
    }
    

    You should notice at least a 5 – 10% improvement in performance versus an asp.net page.

    Graceful Upgrade Notifications for Internet Explorer 6 Users – Enterprise Edition

    Being able to develop for cross-browser compatibility is what separates the good web developers from the teach-yourself-to-get-by-at-a-job-interview web developers.   That’s what the good web developers repeat back to themselves after spending extra time ensuring things work just as well on Internet Explorer 6 (IE6); precious time that wouldn’t have to be spent if you just ignored IE6.

    If you are running a small site, you can choose to completely disregard what IE6 renders. You can also put up clever pop-ups and notifications that ridicule IE6, twisting the knife a little more with an additional Windows ME jab.

    This post, however, is aimed at those of us who need to implement a consumer-friendly method for an enterprise-sized company that will not result in angry emails or Twitter/Facebook posts that can discredit a company’s image in no time.

    The timing of this post coincides with my discovery of ie6countdown.com.  I have seen my share of “IE 6 Must Die” sites, but this one actually belongs to Microsoft! If that doesn’t tell you it’s time to start thinking about a graceful way of jumping ship, you might as well make sure your site is compatible with Netscape 4.

    I am not saying you need to jump ship now.  In fact, a good friend of mine, Kai, that runs kaidez.com even lists out 5 Reasons To Design Websites for Internet Explorer 6.

    The reality, however, is with every project you do, you will have to make sacrifices in your design and functionality.  There are tools like Modernizr, which create a workaround for some styling with HTML5, but it will not restore missing functionality.   There are no tools out there that restore missing functionality.  If there are and I am missing something, please enlighten me with a comment.

    The other reality aspect is that Microsoft is stopping support on it.  This means that the small percentage of IE6 users that are using it in a corporate environment should be seeing upgrades very soon, as this is usually the final nudge that IT departments need to upgrade.

    So, what your options to let users know it’s time to upgrade? More importantly, how do you it gracefully, as to not annoy your users or make your enterprise level site look like your first geocities website from 1996 with one of those animated under construction stick figures?

    Requirements For a Good Notification Plugin

    • Compatibility with IE6 :-)
    • Color theme neutral.
    • Licensed for commercial use.
    • Allows cookies or a framework to add your own to only display the notification once, until cookies are cleared.

    Tools

    1. jReject (http://jreject.turnwheel.com/)

    Description from developer’s site:

    jReject provides a simple, robjust, light-weight way to display rejections based on a the browser, specific browser version, specific platforms, or rendering engine. Provides full customization of the popup. Uses no CSS file (by default), and can easily be used on page load or during a specific page event. Also provides a flexible way to beautifully and cleanly display custom browser alternatives in the popup.

    Screenshot:

    jReject Screenshot

    Cookie Implementation:

    You can use the closeCookie parameter, but it only stores it for the Session.  This means that when the user comes back with a new window, it will show up again.  You could easily write your own cookie handler by utilizing the optional event methods from the documentation -

    1. options.beforeReject(opts) - use this to call your function that will check the cookie.  If cookie exists, cancel the display.
    2. options.afterReject(opts) - use this to to call your function that will set the cookie on first open.

    2. IE6Update.com (http://ie6update.com/)

    Description from developer’s site:
    IE6 Update looks like IE’s Information Bar, but instead of offering your visitors an ActiveX plugin, it offers a browser update.

    Screenshot:

    Cookie Implementation:

    There are no custom events that you can pass in, but the way I would do it is call my custom cookie function from inside the .js file where it preps it up in the jQuery(document).ready(function($).  If the cookie hasn’t been set, call it.  If the cookie has been set, don’t.  The HTML file has the “if lte 7″ check to make sure it’s the right browser, so you don’t have worry about unnecessary cookies being set in non-IE6 browsers.  One other custom feature I would add is, instead of redirecting to a browser page, I would redirect them to a custom page where I give them download options and advise them to talk to their IT staff if they are in a corporate setting.

    Final Words

    As you plan out your IE6 au-revoir, I would insert one more value-added task into project plan.  Download IE9 if you haven’t already done so and do a diligent walkthrough of your site.  Did you really think you were going to have one less browser to QA test?

    Site Launch: PreferredSat.com

    PreferredSat.com screenshotOn behalf of the image0.com web team, I’d like to announce the launch and welcome PreferredSatellite into our the image0.com family.

    Implementation Approach
    After the design of the site was finalized, the team had to make a decision on the approach and technology used.  Since the client updates the deals and content quite frequently, developing the site from the ground up in ASP.Net was automatically out the window.  This definitely screamed for a CMS.

    The site was going to be hosted on shared hosting, so open source was definitely the way to go.  Between Drupal and WordPress, the latter was the better option based on the plugins available at the time, the ease of managing content for the client, and the little configuration required in the initial stages to get started on the development.    One of those plugins is the seamless integration of Google Analytics that is currently allowing the client to track conversions to the Order Now page.

    A great experience overall, it is with great excitement that we announce this addition into the image0.com web portfolio.

    User Agent Switcher for Firefox

    I’ve recently had to develop some custom functionality for a web page that would only be visible if a GoogleBot was crawling the site.

    The development part of it is pretty easy – you check for the HTTP User Agent with either an “if” or a “switch/case” statement and do your thing. Simple concept. Same for most languages, with just minor syntax differences.

    So how do you test what the site will render when the GoogleBot pays it a visit without writing your own browser? I came across Chris Pederick’s User Agent Switcher for Firefox.

    It lets you select which browser/agent you want to simulate right from Firefox’s drop down menu (screenshot below), which makes testing a breeze.

    Check it out for yourself, as well as some of his other cool web dev tools here: http://chrispederick.com

    User Agent Switcher for Firefox