contact us

Use the form on the right to contact us.

You can edit the text in this area, and change where the contact form on the right submits to, by entering edit mode using the modes on the bottom right.

           

123 Street Avenue, City Town, 99999

(123) 555-6789

email@address.com

 

You can set your address, phone number, email and site description in the settings tab.
Link to read me page with more information.

Blog

Filtering by Tag: JavaScript

MelbJS and Web Directions Code 2013

John Bristowe

Last week, I had the distinct pleasure of returning back to Batmania (Melbourne) for MelbJS and Web Directions Code 2013. Both events were fantastic and I had a wonderful time connecting with attendees, chatting with them about Kendo UI.

tl/dr: Two awesome events where we (Cameron Marsland and I) were able to connect with the web developer community. Lots of interest around Kendo UI. Great times all around

MelbJS

MelbJS is a prominent user group for JavaScript developers in Melbourne. It features presentations on a monthly basis from local speakers, highlighting a number of topics as they relate to JavaScript and web developer in-general.

The evening's event featured a number of talks by speakers at Web Directions Code. With 100+ attendees, it was a huge turnout for MelbJS and it was great to see!

While at MelbJS, I got a chance to speak to a number of developers about Kendo UI. There were a lot of questions to answer. In particular, I fielded a lot of questions about Kendo UI DataViz, our visualization library for SVG-based charts and graphs.

All in all, I had a great time. I (heart) MelbJS.

Like most house parties, the most popular room was the kitchen

Web Directions Code 2013

As the conference states, Web Directions Code is "for web professionals like you who care about code two days of intense learning, connecting and geeking out". In short, a web developer love-fest.

Web Code Directions 2013

For this year's event, 300 web developers were in attendance from across Australia; 20% higher attendance than Web Directions Code 2012. (Well done, Web Directions organisers!)

Web Directions Code 2013 at Melbourne City Hall

Web Directions Code 2013 featured many prominent speakers from Australia and overseas as evidenced by the conference schedule. If you were unable to attend, you can check out the presentations:

The presentation that stole the show was Steven Wittens' talk entitled, "Making Things With Maths". So impressed I was with his delivery and timing, I tweeted the following:

You can check out Steven's slides (linked above) but to appreciate the epicness of his presentation, you should check out a recording of his talk from Full Frontal 2012:

It was good to be back in Melbourne, my former hometown from 1999-2002. The sights, the smells, the colours. All of it combines into this magical city. Of course, some sights are more interesting than others:

Meanwhile, at the same venue at Web Directions Code 2013...

Being in Melbourne with my colleague (Cameron Marsland) did give me the opportunity to show him around. One of my favourite spots for a bite to eat is Supper Inn in Chinatown:

Supper Inn, Chinatown Melbourne

Which, in turn, led to this at Berlin Bar:

Drinks at Berlin Bar (Melbourne)

Good times all around.

To the next adventure!

Back to Batmania for MelbJS and Web Directions Code

John Bristowe

Next month kicks off with a visit to Melbourne for MelbJS and Web Directions Code 2013. If you happen to be in the area, I'd recommend joining us for these great events.

As far as JavaScript groups go, MelbJS is pretty awesome. They have a great group of organisers and have consistently greatly talks.

This will be my second time at Web Directions Code (May 2-3). This conference features some of the top minds in the web development space from around the world. It's a treat for us here in Australia to have some wonderful talent visiting our shores.

Web Performance and Scenes from WDYK Melbourne (August 2012)

John Bristowe

Last Thursday, I attended What Do You Know (WDYK) Melbourne at The Apartment. WDYK is the brain-child of John Allsopp; somewhat akin to DemoCamp in that it features 5-minute presentations (with PowerPoint!) that highlight the speakers' knowledge on a particular topic. This was my second time at WDYK, having spoken at WDYK Sydney on the topic of CSS3 box-shadows.

I was lucky to make it to WDYK Melbourne at all. The weather wasn't doing me any favours. This was the scene as I left for the event from my house:

Ah, Melbourne in the springtime!

Ah, Melbourne in the springtime!

Before getting into the details, allow me to state that I thought WDYK Melbourne was a hit. I mean, there must have been over 150 people at the event. Everyone was super-nice and engaged. It was great to see and it's a testiment to John Allsopp and his crew. In the words of Kent Brockman, "I, for one, welcome to new event organizing overlords..."

For WDYK Melbourne, I decided to share some interesting sites and stats relating to web performance. Since my earliest days hacking on angle brackets and script, I've been incredibly in making my web pages fast.

Recently, I've noticed a few trends on the HTTP Archive that are somewhat concerning. As the amount of bandwidth consumed by pages is steadly increasing, Google Page Speed scores are heading down. Also, there's a large percentage of sites that don't leverage some basic optimizations like caching.

Anyway, I decided it would be a good idea to expose this to the audience at WDYK Melbourne in order to set the stage for some helpful sites and tools. These include:

It's hard to get everything highlighted in a 5-minute presentation.

I also took a few photos at the event:

All-in-all, it was an awesome event. I can't wait for the next one.

If you're in Melbourne, Sydney, or Brisbane, you owe it to yourself to get involved. Get out and attend! Or, better yet, raise your hand and share what you know with members of the developer community.

ASP.NET Web Forms and HTML5, Part 1

John Bristowe

HTML5 Development for ASP.NET Developers: ASP.NET Web Forms and HTML5

This is the fourth module in the ongoing course, HTML5 Development for ASP.NET Developers. In case you’re just joining us, here’s what we’ve covered so far:

  1. Hello jQuery
  2. Hello Services / WebAPI, REST, JSON and AJAX
  3. Hello HTML5

In this module, we’ll focus on ASP.NET Web Forms.

ASP.NET Web Forms has been around for a very long time. Over the years, it has evolved dynamically. Today, it provides a robust platform for building web applications, including those that target HTML5.

In the previous article of this series, Burke Holland (@BurkeHolland) provided an excellent overview of HTML5 and its support in Visual Studio. I would strongly urge you to review his blog post if you’re new to HTML5, as it provides a number of great tools and resources worth checking out.

In this blog post, I’ll be taking a different viewpoint on HTML5; developers targeting ASP.NET Web Forms and HTML5. In part 1, I’ll cover the high level aspects and a bit of the background. In part 2, I’ll go into much deeper detail about the technical aspects of ASP.NET Web Forms and HTML5.

Background

I remember my first experiences with ASP.NET Web Forms quite well. This was over a decade ago when ASP.NET was known as Active Server Pages+ (ASP+). I recommend reading Dave Sussman’s MSDN article on ASP+ if you’re interested in taking a trip down memory lane.

Back in 2000, ASP+ represented a complete departure from the way websites were traditionally built on the Microsoft stack. Prior to its introduction, developer cobbled together websites with a combination of VBScript, server-side includes, COM components, and a lot of coffee. The developer experience of ASP was incredibly frustrating to say the least.

When ASP+ introduced the concept of Web Forms, it took off like a rocket. For developers, it was a huge boost to productivity:

  • It supported an event model that enabled developers to build web applications in a similar manner as the rapid development environment of Visual Basic 6.
  • It provided a framework and runtime environment that elevated object-orientation to the forefront.
  • It enabled developers to build web applications in a much more productive manner than ASP through its rich object model.

While the branding for ASP+ eventually changed to ASP.NET, the ideas remained the same. And for the most part, not a great deal has changed. In fact, many of the original abstractions introduced in the first version of ASP.NET, such as Web Forms, remain in-place and are widely used today.

This, of course, begs the question: if a technology ASP.NET Web Forms is such a mature technology, can it be used to build applications in HTML5? I’m happy to state that the short answer is a resounding “yes”. However, the longer answer is somewhat nuanced. Depending on which version of ASP.NET you’re building against, your experience (and productivity) will vary. However, the good news is that much like wine, the story around HTML5 support in ASP.NET (and in ASP.NET Web Forms) is getting better as time goes on.

ASP.NET Web Forms and HTML5

There’s nothing preventing you from supporting HTML5 in ASP.NET Web Forms today. The reason for this is simple: HTML5 elements are defined as markup with a client-side event model. There’s no requirement on the server. Also, it’s worth noting that the HTML elements and attributes emitted by ASP.NET server controls are well formed and validate against the HTML5 specification. That stated, there are many developers who would like built-in server controls to leverage the new aspects of HTML5 like semantic elements. Until recently, this scenario was generally supported two ways: custom controls or content adapters.

Custom controls have been supported since the beginning of ASP.NET. Often, they are created as aggregates of other controls found in the framework. However, they are also created to new server controls that developers can use in-place of existing ones found in ASP.NET. Creating a custom control is fairly trivial and there a many articles online that show you how to do this. In the case where you’re looking to emit specific HTML5 elements, you can accomplish this through the Render method of the UserControl class.

Another mechanism of supporting HTML5 elements is through content adapters, which were introduced in ASP.NET 2.0. Content adapters are powerful because they allow you to specify how specific controls should emit markup – including build-in controls like the Calendar. Don’t like the default rendering of a particular control? Why not write a control adapter to modify its output to include HTML5 semantic elements? For more information about content adapters, make sure to check out Fritz Onion’s article on MSDN.

Today and Tomorrow with ASP.NET Web Forms and HTML5

Web Standards Update

There have been a lot of improvements made to ASP.NET Web Forms over the past year. Developers targeting ASP.NET Web Forms and looking to support the latest trends in web development should be encouraged by recent announcements made by teams at Microsoft. However, that doesn’t mean you should wait until HTML5 is supporting entirely by ASP.NET and Visual Studio. The reality is that the specification continues to evolve. This means that has parts of HTML5 start to stablize, one should expect to see a gap in its support in Visual Studio and ASP.NET. However, as we demonstrated throughout this blog series, these gaps are easily bridged through other tools and framework that are available.

Preliminary support for HTML5 IntelliSense and validation was first introduced in Visual Studio 2010 SP1 in the beginning of 2011. However, it was somewhat limited in its effectiveness; integrating support for HTML5 IntelliSense and validation presented some serious challenges given the flux in the HTML5 specification at the time. In June 2011, the Web Platform and Tools team released the Web Standards Update, which added HTML5 and CSS3 support to Visual Studio 2010 SP1. If you haven’t taken the time to download and install this extension, I would strongly encourage you to do so. Essentially, it’s an extension that adds HTML5 and CSS3 IntelliSense and validation to Visual Studio.

I would recommend reading Scott Hanselman’s blog post that covers the Web Standards Update from a high level perspective. While I can appreciate all of the work that’s gone into supporting HTML5 and CSS3 through the Web Standards Update, some important parts – such as HTML5 form elements – are left unsupported. The good news is that support is coming in the next version of ASP.NET.

Looking Ahead to Visual Studio 2012 and ASP.NET 4.5

Visual Studio

There are many exciting improvements planned for Visual Studio 2012 and ASP.NET 4.5. For developers targeting HTML5 with ASP.NET Web Forms, there are a number of features worth noting in the next release. Here’s a table I stole repurposed from MSDN that highlights just of the few things to look forward to:

 

Feature

Description

Model binders

Web Forms now supports model binding, which lets you bind data controls directly to data-access methods. ASP.NET automatically converts data from form fields, query strings, cookies, session state, and view state into method parameters. You can use these parameters to select data from or make updates to the database. (This technique is similar to model binding in ASP.NET MVC.)

Strongly typed binding expressions in data controls

You can now write strongly typed, two-way data-binding expressions in Web Forms data controls, instead of using Bind or Eval expressions. This approach lets you access complex properties in data controls. These expressions can be used with the new model binding feature.

Unobtrusive JavaScript for client-side validation

Unobtrusive validation moves the code for client-side validation into a single external JavaScript file, which makes pages smaller and faster to load. It also provides better caching of script files.

HTML encoded data-binding expressions

New syntax lets you encode HTML output in page markup.

Fallback support for content distribution networks (CDNs) in the ScriptManager control

When you set the EnableCdn property of the ScriptManager control, the control tests whether the script was loaded successfully from the CDN. If not, the control falls back to loading the script from an alternate (local) location.

Support for HTML5 form types

You can use HTML5 elements like email, tel, url, and search in Web Forms pages.

Improved paging in the GridView control

The new AllowCustomPaging and VirtualItemCount properties of the GridView control let you customize paging functionality. These new properties remove the need for the control to retrieve all rows from the data source each time a new page is displayed.

Reference: ASP.NET Web Forms - ASP.NET 4.5 and Visual Studio for Web Release Candidate

Although it’s not specifically related to HTML5, I am also looking forward to leveraging the new bundling and minification support that’s being introduced to ASP.NET 4.5. Effectively, this will allow you to structure your server-side markup to point to a script or style directory, and have the ASP.NET runtime automatically bundle and minify all of its resources:

@Styles.Render("~/Content/themes/base/css")
@Scripts.Render("~/Scripts/js")

Awesome stuff!

Related Links and Resources

There are many sites worth checking out if you’re interested about learning more about HTML5 in ASP.NET Web Forms. Here are just a few:

YOW! Melbourne 2011 and that Crankshaft Presentation

John Bristowe

Greetings from Melbourne! This week, I attended YOW! 2011, a conference for Australian developers featuring talks on web development, infrastructure and coding practices.

According to the YOW! conference organizers, approximately 500 people registered for this event. This wasn’t a surprise to me; Melbourne has a fantastic developer community and has always supported events such as these. Mitch Denny and I were witness to this when we co-founded the Melbourne .NET User Group back-in-the-day.

Opening remarks at YOW! 2011 in Melbourne

Opening remarks at YOW! 2011 in Melbourne

On day 1, I attended a number of excellent presentations. However, there was one presentation in-particular that was simply awesome. It was a presentation by Kasper Lund from Google talking about Crankshaft, the compilation infrastructure of V8 (Chrome’s JavaScript engine). FWIW, Kasper’s also a member of the Dart team.

Kasper Lund (Google) at YOW! 2011 in Melbourne

Kasper Lund (Google) at YOW! 2011 in Melbourne

In his presentation, Kasper went into great detail about how Crankshaft optimizes JavaScript. It’s amazing to hear some of the things that Crankshaft does to tease out every possible drop of performance possible from JavaScript. Much of it involves runtime inspection of the code as it’s running and optimizing when it’s appropriate to do so. The big take-away for me was realizing that JIT compilers have a tough job; they have to walk a fine line between making JavaScript run super-fast without bogging down the environment.

After Kasper’s presentation, it felt like my brain had been through the spin cycle of a washing machine. This is a good thing. Many presentations today are way too shallow. I always prefer to “go deep” on something, struggle along the way, and then reformulate afterward.

Anyway, I found a video up on Vimeo of a talk Kasper gave about the V8 engine:

It’s worth a look in order to gain a better understanding how Google Chrome optimizes JavaScript.

Kendo UI v1.0 Released!

John Bristowe

Earlier today, we took the wraps off Kendo UI, a framework for creating interactive web applications with modern web standards. My colleague, Todd Anglin wrote about today’s release in a blog post where he highlights what’s new in Kendo UI, the breakdown of products (Kendo UI Web, Kendo UI DataViz, and Kendo UI Mobile – currently, a preview), and the official licensing that underpins it. The good news? Existing customers will have access to Kendo UI Web in both the Telerik Premium and Ultimate Collections.

There’s a lot to like in the v1.0 release. In addition to some of the new UI widgets, we’ve added an integrated ability to modify themes. We call this the ThemeBuilder.

ThemeBuilder for Kendo UI

ThemeBuilder for Kendo UI

The ThemeBuilder is a tool that lets you modify the Kendo themes with ease, so that they match the look and feel of your site or app. Through a series of mouse clicks, you can quickly customize the look and feel of the Kendo UI widgets. Once you’re done, the ThemeBuilder will generate LESS or CSS text, which you can then integrate into your web application.

It’s pretty freaking sweet.

We’ve also introduced two new aspects of the Kendo UI framework: globalization and validation.

Globalization is the process of designing and developing an application that works in multiple cultures. The culture defines specific information for the number formats, week and month names, date and time formats, etc. Kendo UI exposes the culture(cultureName) method, which allows you to select the culture script corresponding to the “culture name”. This method then uses the culture name to select culture from the culture scripts that you have included and then sets the current culture. You can check out a live demo of this in-action by visiting the Kendo UI demos.

The Validator in Kendo UI provides an easy mechanism of client-side validation to web developers. Built around the HTML5 form validation attributes, the Validator supports a variety of built-in validation rules, but also provides a convenient way for setting custom rules handling. A live demo of the Validator can be seen on the Kendo UI demos page.

There’s certainly a lot more to cover. Fortunately, we’ll be hosting a webinar that provides you with everything you need to know about Kendo UI to help you get started. Simply register, attend, and you’ll hear everything you need to know about building awesome web experiences with Kendo UI.

In the meantime, make sure to follow Kendo UI on Twitter, Facebook or Google+. Also, don’t forget to check out our forums. They’re a great way to provide feedback to the team.

JustCode for JavaScript Developers

John Bristowe

JustCode for JavaScript Developers

Telerik’s JustCode is an agile development add-in for Visual Studio 2005, Visual Studio 2008 and Visual Studio 2010 that boosts development productivity. It provides blazing fast solution wide on-the-fly code analysis and error checking, smart code navigation and refactoring features. With its cross-language engine, JustCode provides features for C#, VB.NET, ASP.NET, XAML, JavaScript and HTML and supports multi-language solutions.

In this blog post, I’ll highlight how JustCode helps JavaScript developers write better code.

On-the-Fly Code Analysis for JavaScript

Along with the inspections done by Visual Studio, JustCode conducts code analysis, which provides a list of errors and warnings found in your JavaScript. It does so by applying a list of custom inspections of your solution on-the-fly, without interrupting your work.

On-the-Fly Code Analysis

In the Code Analysis settings, you’ll find options to control how JustCode inspects your JavaScript. By default, JustCode will mark all syntax errors along with non-optimal statements (i.e. empty statements). These errors/warnings are displayed to the developer in the editor and document well:

JustCode Showing Errors

In the image (above), items marked in yellow are warnings. Items marked in red are errors. A more detailed list is provided in the JustCode Errors window:

JustCode Errors

This list can be filtered across all columns, allowing you to quickly find a particular class of error/warning:

JustCode Errors with Filter

JustCode is highly configurable. The errors/warnings discovered during the on-the-fly code analysis can be configured through the Code Analysis options of JustCode:

JavaScript Code Analysis Warnings in JustCode

Once an error or warning has been discovered, the next step is to fix it. Once JustCode has inspected your JavaScript, it will provide you with Quick Fixes to fix any non-optimal statement:

Quick Fixes in JustCode

In addition to Quick Fixes, JustCode also provides a feature called Quick Hints. These are code inspections that recommend ways for improving your code. While Quick Fixes warns you about code that won’t compile, Quick Hints will provide suggestions on how to improve it:

Quick Hints in JustCode

Quick Hints – along with many other aspects of JustCode – is highly configurable:

JavaScript Code Analysis Hints in JustCode

Code Navigation and Search

Go To Definition command navigates you to the definition of a selected identifier:

JustCode - Go To Definition

You can invoke this command by simply right-clicking a variable and selecting “Go To Definition” or press F12.

Go To Member is a useful feature of JustCode that’s provided in the editor window. It allows you to quickly jump to members by supporting statement completion:

Go To Member

The Find Usages command helps locate where a variable is used in the solution:

Find Usages in JustCode (Collapsed)

This view can be expanded to show all instances of the variable being searched for:

Find Usages in JustCode

You can also modify this view by specifying a group criteria:

Find Usages in JustCode with View Parameters

Code Templates

Code Templates are reusable code snippets that allow you to quickly insert commonly used code fragments or surround given code fragment with a meaningful code block (example: try-catch statement). With this feature you just type the abbreviation for the template, press “Shift+Space” and the template expands:

JavaScript Code Templates in JustCode

When JustCode expands a template, it will search for all variables in scope that can help complete the code template. In addition, it will suggest appropriate variable names where necessary:

JavaScript Code Templates in JustCode (in Editor)

The list of available code templates can be easily expanded to include ones that embody common patterns or conventions that you leverage within your JavaScript.

Rename

It’s useful to know what the impact of renaming a variable before committing it to your source. The Rename operation in JustCode allows you to see the changes you’ll make ahead-of-time beforehand:

JustCode Rename in JavaScript

You can see the code that’s impacted along with the locations where these changes will occur.

At this point, we’ve only scratched the surface of what JustCode can do. There are many useful features that will help JavaScript developers write better code. If you’d like to try JustCode for yourself, you can download a free, 60-day trial by visiting http://www.telerik.com/products/justcode.aspx and clicking the DOWNLOAD button on the page.

My Experience at SydJS

John Bristowe

I have a new, favourite group and its name is SydJS (@sydjs).

IMG_0125

Before arriving in Australia just over one month ago, I knew that it was critical to get myself involved in the local developer community. As a Developer Evangelist for Telerik, it’s important that I’m connecting to our customers (i.e. developers). This allows us to hear what they love (and maybe, not love quite as much) about our products. It also allows us to introduce ourselves to developers who maybe haven’t heard of us.

An effective way of connecting with developers, of course, showing up and getting involved in the local community. This can be done in a number of different ways. I find that being present and helping out are a good start. Ultimately, to become truly connected, you need to give back. (More on this in a blog post later.) It should be noted that I love developer communities regardless of my job role; there’s a good chance that I would have attended SydJS anyway. But, I digress.

Last night, I attended my first meeting of the Sydney JavaScript group (SydJS) at Atlassian. In short, what an awesome group; lots of passionate developers who care deeply about JavaScript. Oh, and beer. They definitely care about beer.

IMG_0116

The night’s agenda provided four presentations:

The one presentation that impressed me the most was Brian McKenna’s lap around languages that compile to JavaScript. In this session, I learned about Roy (built by Brian) and about Source Maps, which – frankly – are kinda awesome. From a .net Magazine article that highlights Source Maps:

There is detailed information on the progress of the Mozilla work over on the wiki at wiki.mozilla.org/DevTools/Features/SourceMap, and you can read about the WebKit work atbugs.webkit.org/show_bug.cgi?id=63940. The Mozilla document states that this feature is targeted for release in Firefox 9.

The presentations that were delivered provided more of a high-level overview of JavaScript-related concepts. It’s wasn’t terribly low-level but that’s OK. There were a number of new members who haven’t written a great deal of JavaScript yet and I’m sure these presentations helped in their skills development.

The other thing that I impressed me was the core group of folks at Atlassian. They have passionate developers who understand why JavaScript rocks. The digs are too bad either. They also appear to pride themselves on grokking development; right down to the swag.

IMG_0123

But, of course, the highlight for me was this:

IMG_0117

You can almost hear these values recited by Morgan Freeman; “That’s goddamn right.”

So, all in all, I had a great time at SydJS and I’m already looking forward to the next meeting. Why not sign up? Registration is free and the folks are super-friendly.

Reducing FOUT with FOUT-B-Gone

John Bristowe

While I’m a big-time fan of web fonts, I’m not a fan of a side effect I’ve observed in browsers like Firefox and IE. In particular, I’ve noticed that during the loading of a page, there’s a moment where web fonts aren’t applied. This is known as FOUT or “flash of unstyled type”. Coined by Paul Irish back in 2009, FOUT refers to an instance where web fonts appear briefly unstyled prior to apply the @font-face CSS rule. After the web page appears, the viewer sees unstyled fonts morph into styled web fonts. By way of example, here’s what you will see (briefly) on the initial load of pages that leverage web fonts:

You’ll notice here that the title of my blog isn’t applying a web font on the initial load. That’s because there’s a slight delay in particular browsers (i.e. Firefox and IE). It should also be noted that the delay is brief but noticeable. If you’d like to fix this, check out WebINK’s FOUT-B-Gone:

FOUT-B-Gone is a JavaScript library that inventories custom fonts used on a page and selectively hides only DOM elements that would cause FOUT. The end result of applying this to your page is a delayed rendering of text with applied web fonts. However, it is quite reliable and eliminates the artifact you’ll see otherwise. Now, I haven’t decided to apply FOUT-B-Gone to my page because I simply don’t care. However, if you are in the boat that does (or, have clients that do), this is a possible solution for you.

HTML5 Pirates Love EaselJS

John Bristowe

At MIX11, I attended the HTML5 Canvas Mastery boot camp, featuring fellow Canucks, Lanny McNie (@astrostyle) and Shawn Blais from gskinner.com. These are the folks who built Pirates Love Daisies, a tower defense game built in HTML5.

Pirates Love Daisies

If you haven’t done so already, drop everything and check it out. It’s a great example of what’s possible with HTML5.

As part of the development process for this game, the developers at gskinner.com built a framework called EaselJS, which abstracted the 2D context API of the HTML5 canvas. Why? Well, because – frankly-speaking – the 2D context API can be a bit gnarly, especially for those folks who don’t have a background in game development. While the HTML5 canvas is great for pushing pixels, it’s an immediate-mode drawing API, which means that nothing is retained in-memory; you are responsible for managing and maintaining the drawing surface. And, while that’s great for things like performance (especially for browsers like IE9, which feature hardware-acceleration for things like the HTML5 canvas), it can be pretty challenging for web developers wanting to do this themselves. For these reasons, the folks at gskinner.com built EaselJS.

EaselJS

EaselJS is a JavaScript library that allows you to target the HTML5 canvas element in a rich and meaningful manner. Its audience is developers who are accustomed to work with sprites, graphics primitives, and input event handling (i.e. mouse events). It provides all of the building blocks for HTML5 games in canvas, without resorting to the 2D context API. In fact, a lot of the pitfalls with HTML5 canvas (i.e. pixel positioning) can be easily avoided through this framework.

Here’s the description from the EaselJS page:

The new Canvas element in HTML5 is powerful, but it can be difficult to work with. It has no internal concept of discrete display elements, so you are required to manage updates manually. The Easel Javascript library provides a retained graphics mode for canvas including a full, hierarchical display list, a core interaction model, and helper classes to make working with Canvas much easier.

So, what’s possible with this framework? Lots. The folks from gskinner.com have posted a number of examples, which you can check out for yourself: game, sparkles, drag & drop, localToGlobal, globalToLocal, sprites, graphics, bar graph. However, one of my recent favourites is The World’s Largest PAC-MAN.

WBP

The World’s Largest PAC-MAN was coordinated through Microsoft Australia and built by the talented folks at Soap Creative in Australia. It features a (virtually) never-ending, crowd-sourced super-maze for you to play one of the best arcade games ever created. It was built using a number of JavaScript libraries like Modernizr and jQuery. However, the bulk of the heavy-lifting was done by EaselJS.

WBP - 2

Again, I think examples like this, built with awesome frameworks like EaselJS, really demonstrate what’s possible with HTML5 today.

For a good primer of EaselJS, check out Mike Chambers’ excellent blog post, Getting Started with the Canvas Element and EaselJS.

Miguel Carrasco (@miguelcarrasco) happened to catch me coming out of the HTML5 Canvas Mastery boot camp and asked what I thought about the session:

If you’re interested in finding out more, go check out EaselJS and start cranking out some games. Even better: Submit an entry to the Dev Unplugged Contest we’re running. There’s a category for games and we want your entries!