An internationally known author and lecturer, Mike Amundsen travels throughout the United States and Europe
speaking and teaching on a wide range of topics including .NET programming, Cloud computing, Web application development, and other subjects.
Recently he has been focusing on cloud-computing technologies including the Windows Azure platform. He has more than
a dozen books to his credit. His most popular titles are Teach Yourself Database Programming with Visual Basic in 21 Days,
Using Visual InterDev, and ASP.NET for Developers. He is currently contributing to a book focused on HTTP programming
using the REST architectural model. When he is not working, Mike enjoys spending time with his family in Kentucky, USA.
Advanced
As more and more data is exposed to the web, many developers find themselves building yet another Web 2.0 custom API and a custom client to match. All is fine until a change is required in the data format, the contents of a record, or the workflow of the application. Then, all bets are off and you start from the beginning again.
"Wasn’t HTTP/REST supposed to solve all that?"
In this talk, you’ll learn to implement RESTful .NET applications using Hypermedia instead of typical Web 2.0 APIs. You’ll learn how to create a single hypermedia definition that serves RIA, Desktop application, and traditional Web browsers. You’ll learn how to design your API so that clients won’t break when you change the data elements in a response or introduce new workflows in the application. You’ll learn how to code both client and servers to allow for change over time – evolvability. And you can do it without abandoning your favorite programming language, framework or library.
Based on Amundsen’s work on Hypermedia Types, this talk includes lots of code examples and access to live servers where attendees can test their own code.
Intermediate/Advanced
Developing applications for "The Cloud" can seem daunting. The number of technologies web developers are expected to master reads like an alphabet soup: MVC, HTTP, REST, SOAP, WCF, Azure Storage, ServiceBus, Workflow, DSL, Oslo, M, etc. At the same time developers are advised to install new versions of operatings systems, Web server hosts, and developer tools all in an effort to gain advantage in the emerging world of cloud computing. However, a very powerful Domain-Specific Language specifically designed for building robust Web applications that 'live in the cloud' has been available to .NET developers from the very beginning. It's the same DSL used by Yahoo, Amazon, Google and others. It's a DSL that crosses platforms, programming languages and developer environments. This DSL is HTTP.
In this session, you'll learn how to build and use a small, powerful set of C# helper classes that allow you to 'program in HTTP' directly - bypassing multiple layers of custom class libraries that may actually complicate your development and, in some cases, hurt overall performance. Along the way you'll get a pragmatic perspective on how the REST architectural model can simplify your code, shorten your development time, improve your application's flexibility, and increase its maintainability. Finally, you'll learn how 'programming in HTTP' allows you to build applications that are both fully operational today and 'ready for the Cloud' tomorrow.
All of the examples covered in the session work on both a local web server running IIS6/ASP.NET 2.0 and in Windows Azure. Attendees get access to all the code samples including the demonstration library, all the examples, and the final code project along with the slides from the presentation (Slides and Code (2010 edition)).
Advanced
As 'schema-less' storage becomes more prevalent, the patterns and practices learned from relational data storage models may be inappropriate for familiar data-handling situations. One example is the task of implementing a simple word search pattern for a short message application (i.e Twitter). With schema-less storage systems, using near-match keywords such as LIKE, linking different table sets using JOIN, and sorting the returned results via secondary indexes are often unavailable. Instead, new implementation strategies must be employed to get the same results.
This talk offers a step-by-step walk-through implementing a simple word search against stored messages and compares common relational data model practices to techniques that work for schema-less storage models such as Azure Table Storage. Attendees will learn how to implement JOIN-type and LIKE-type relational patterns in Azure Table Storage and how to apply these same techniques to other projects.
The demonstration will include a live implementation allowing participants to add word data to the system and experiment with search results (Slides and Code).
Intermediate-Advanced
Anyone who has tested out Azure Storage Services knows that putting your data in the cloud is easy. Getting it back out,
however, is another story. "Where's my JOIN, ORDER BY, GROUP BY, COUNT(),
LIKE, BEGIN TRANS, and all that other stuff I've come to depend on?" you may ask.
"Not there, not needed" is the usual reply. Be we all know different, right?
In this talk, you'll get a look behind the curtains at the "Entity-Attribute-Value" (EAV) data model that makes Azure Table Storage
so fast and how you can get the most out of your data in the cloud. You'll learn why typical SQL-Server operations such as
JOIN, TRANS, and COUNT() are missing and how you can overcome these limitations using common
patterns for schema-less data. In addition, you'll see how you can employ new data storage designs to take advantage of the
strengths of the ATS model. You'll also learn how to gain new power over your cloud data with techniques such as multi-threading,
parallel processing, and pre-emptive caching using simple C# helper classes.
Attendees will get access to all the code samples including helper libraries that work in .NET 2.0/VS2005 as well as Windows Azure/VS2008 along with presentation slides.
Beginner/Intermediate
If you are planning to implement a web-based application hosted "in the Cloud" you need to consider the cost of running the application. Not only can charges occur based on storage, but also bandwidth and even by the number of requests to the server. In other words, if your application consumes lots of bandwidth or handles lots of repeated requests for the same data, you could be in for a fat bill at the end of the month.
In this session, you'll learn how to use standard HTTP Web caching techniques to limit bandwidth and reduce request traffic while still maintaining a speedy web application for your clients. Unlike typical "SEO" techniques, this talk focuses on the coding and design details needed to implement a reliable, responsive dynamic web application that takes best advantage of the latest caching techniques used by Yahoo, Google and others. You will learn how to use the "Validation Model" to cut back on excessive bandwidth usage. You'll also learn how to use the "Expiration Model" to reduce the number of times clients need to request data from your host servers.Also, you'll learn how to easily employ compression services on selected resources to reduce the amount of content sent from your servers.
Attendees will get access to all the code samples including helper libraries that work in .NET 2.0/VS2005 and above along with presentation slides (Slides and Code).
Intermediate/Advanced
If you are responsible for coding Web applications using HTTP you need an essential set of tools; ones that allow you to quickly and easily create applciations that can talk to Web servers over HTTP, return results, and parse those results for processing and storage. What you don't need is an entirely new framework or programming model. You don't need a new editor, a fancy widget library, or a new way to "think about programming." All you need is a single jam-packed assembly that provides clear, consistent support for HTTP services. You need an HTTP "Swiss Army Knife."
In this session you'll learn the seven key components all HTTP programming utilities should provide. You'll learn how to create classes that handle dispatching requests to the proper code block, a class to parse incoming URIs to find essential elements for processing, a class to determine the proper MIME-type to use in response to an incoming request, classes for processing incoming content, and classes to transform your results for responses. You'll also learn how to easily add support for caching and authentication/authorization services. Finally, you'll learn how to leverage existing classes in the .NET framework to create your own HTTP client to use for machine-to-machine HTTP interactions. You'll see how these class libraries are quickly and easily built using any version of the .NET framework and, once completed, can be integrated into all your existing Web applications without major re-writing of existing code.
Attendees will get access to all the code samples including helper libraries that work in .NET 2.0/VS2005 and above along with presentation slides.