My Blog

Practical Web Applications


The lines between web sites and web applications are blurred. Outside of the more classical publishing scenarios (which are discussed in a different course), how do you take your XML data and put it on the web, taking advantage of modern information architecture principles and the capabilities of modern browsers?

During this two-day course you’ll learn about information architecture principles such as REST-based systems and identity and security considerations, as well as a good set of technologies to use and how to use them, including CSS, HTML5, JavaScript, and advanced technologies such as OAuth. You’ll come away from the course with an appreciation of the principles, and hands-on experience of some of the technologies that you can use immediately.

The class project will be a web-based information site. We will be supplying computers with software already installed, or you can bring your own laptop.

Faculty members Matt Pat­ter­son, Nor­m Walsh, and Paul Downey teach, as well as Faculty Board member Dr Lauren Wood. Other Faculty members will be available to help with the hands-on part of the classes.

Classes for 2011

Web Information Architecture

Taught by Paul Downey.

An introduction to presenting data in a form friendly to Machines and Humans using examples from around The Web. We’ll cover topics including:

  • Architectural Styles: REST (v) RPC-style web services
  • Resources
  • Content negotiation, canonical URIs and HTTP Range-14
  • Can your Website be your API?
  • Caching
  • Modelling data as resources: documents, tags, searching, filtering
  • Client-Side versus Server (JavaScript versus The Web)

The practical exercise will be getting started with our case-study using Sinatra (a Ruby framework available from

Nifty Tools

Taught by Matt Pat­ter­son.

The full-fat tools commonly used to read, write, and transform XML and HTML documents (such as XSLT and the DOM) are sometimes like using the proverbial sledgehammer. There are a whole host of brilliant lightweight tools for processing XML and HTML on a server, your local machine, or in a web browser.

During this class you’ll learn how to generate and process XML using lightweight Ruby libraries and DOM scripting in the browser using JQuery and Javascript.


  • Reading
    • XML parsing with Nokogiri
    • simple XPath
    • CSS Selectors
    • More complex documents
    • simple (complex) XPath – custom functions
  • Writing
    • Builder
    • DOM-ish with Nokogiri
    • Namespaces, oh my!
  • DOM scripting
    • Introduction to JQuery
    • Document traversal
    • Document manipulation
    • Events

Security and Identity

Taught by Dr Lauren Wood.

Web sites and applications are under constant attack for a variety of purposes ranging from simple vandalism to attempts to steal proprietary information. Web applications need to be protected from such attacks and many require implementation of security provisions to limit access to information and functions to authorized users.

During this session you’ll learn about some of the most common attacks and how to harden your Web application against them. You’ll learn about securing access to your Web application, protecting information during transfer, and the pros and cons of integration with external Web identity services.

Client-Side Latest and Greatest

Taught by Nor­m Walsh.

The language of the web, HTML, is getting the largest and most significant update perhaps in its entire history. The W3C and the WHAT WG are collaborating to produce HTML5. The update includes both new features and new expectations of browser interoperability.

In this session, we’ll look at the changing face of HTML. We’ll explore the new and updated elements as well as how these elements interact with new browser APIs.

  • Introduction to HTML5 markup
    • New markup
      • Semantic markup (e.g., HTML Microdata and
      • Inlines
      • Forms controls
      • Lights and sounds (canvas, video, and audio)
      • HTML5 vs. Flash vs. Silverlight
    • Deprecated elements
    • Polyglot markup
    • Mixing HTML and XML
  • Styling with CSS
  • Dynamic behavior with JavaScript
  • Introduction to HTML5 APIs
    • Geolocation
    • Client-storage