Archives For presentations

By my own personal standards I consider myself an amateur when it comes to delivering public presentations. I’ve been doing it for a few years now and have, maybe, 300 presentation hours under my belt. I haven’t delivered presentations to audiences of 1000+. I think my biggest audience was 500 max, but I’m not the kind of person who gets an ego boost from standing up in front of a huge crowd.

When I first started delivering presentations I was working under the idea that I could simply develop a presentation then deliver the same presentation multiple times to different audiences. However, as I look back on the presentations I have given and the presentations I’m going to deliver (in fact I’m en route to one as I write this), I’m pretty sure I’ll never give the same presentation twice. My reasoning for this is pretty simple, I don’t want to.

To consistently give the exact same talk (canned presentation) or a minor variant, would be limiting myself, and, in my opinion, disrespectful to the audience. You might be wondering, “How can this possibly be self limiting?” Delivering the same presentation means I’m limiting myself from learning from the presentation I just gave. I believe there is always room for improvement, not gilding the lily mind you and going over the top, but just making it better. In fact, I feel an obligation to future audiences to make my presentations better. If I don’t go for improvement when I know I can isn’t that snubbing the audience and saying, in effect, “I don’t value your time”? Is that acceptable?

Let me give a concrete example to bring my point home. Currently I’m on a Frontier airlines flight from Minneapolis to Dallas via Denver (their warm chocolate chip cookies are great by the way) where I’ll be delivering two talks at the Share Cloud conference. One of my talks at the conference is entitled “You Can Do What in Windows Azure?!” During the session I show a number of things you can do with the Windows Azure platform that you are probably not aware of. I gave a similar talk in January, but felt I could do better. Specifically I felt the 10+ demos I did as a part of the talk were interesting, but they weren’t really connected. They were simply one-off demos. For Share Cloud I scrapped the demos and built a new set of demos from the ground up. This time the demos are all connected and tell a great end-to-end story about the possibilities of the Azure platform by showing how all of the great features can work together. I’m really pleased with what I’m going to present tomorrow and I hope the audience is as well. Of course I’m sure I’ll be improving upon it in the future.

If you’re at the Share Cloud conference tomorrow stop on by and let me know how you think the talk went.

Gotta get back to my chocolate chip cookie before it cools off.



January 19, 2011

In my last post I mentioned that I’ll be co-presenting at a number of Azure Boot Camps around the country this winter/spring. As part of this effort we’re using azureoverflow (yes it’s a play on stackoverflow) to capture and vote up/down questions that come up during the sessions. At various points during the day we’ll take a look at the site and try to answer some of the questions that come up. So, if you’re coming to one of the sessions, be sure to bookmark the site so you can ask and vote on questions.

P.S. – If you’re attending one of these session, please, please, please make sure you download and install the prerequisites prior to the event. The list of prerequisites (and links) can be found here. We will have USB keys available with the materials, but if everyone can get their machines configured ahead of time, we’ll have more time to code!

This past weekend I presented a session at Chippewa Valley Code Camp entitled “Are You Ready for the Cloud?” I spent the first half of the talk defining what cloud computing is and walking through various cloud computing models. The second of the talk was devoted to trying to compare the two biggest player, in my opinion, in the cloud computing space: Microsoft and Amazon. I talked about a number of features each company provides in their cloud model. I thought it would be a could idea to provide a high level summary of those features here as well as links for more detailed information. So, without further rambling, here you go.

Windows Azure Compute

Windows Azure offers an internet-scale hosting environment built on geographically distributed data centers. This hosting environment provides a runtime execution environment for managed code. A Windows Azure compute service is built from one or more roles. A role defines a component that may run in the execution environment; within Windows Azure, a service may run one or more instances of a role. A service may be comprised of one or more types of roles, and may include multiple roles of each type.

Windows Azure Storage

The Windows Azure storage services provide persistent, durable storage in the cloud. The fundamental storage services include:

  • Binary Large Object (BLOB) serivce for storing text or binary data
  • Queue service, for reliable, persistent messaging between services
  • Table service, for structured storage that can be queried
  • Windows Azure Drive that allows WIndows Azure applications to mount a Page Blob, which is single volume NTFS VHD. This allows applications to upload/download VHDs via blob.

Windows Azure Connect

Windows Azure Connect provides a simple and easy-to-manage mechanism to setup IP-based network connectivity between on-premises and Windows Azure resources. This capability makes it easier for an organization to migrate their existing applications to the cloud by enabling direct IP-based network connectivity with their existing on-premises infrastructure. For example, a company can deploy a Windows Azure application that connects to an on-premises SQL Server database, or domain-join Windows Azure services to their Active Directory deployment. In addition, Windows Azure Connect makes it simple for developers to setup direct connectivity to their cloud-hosted virtual machines, enabling remote administration and troubleshooting using the same tools that they use for on-premises applications.

Windows Azure  Content Delivery Network (CDN)

Offering one-click-integration with Windows Azure Storage, the Windows Azure content delivery network (CDN) enhances end user performance and reliability by placing copies of data closer to users. The Windows Azure CDN today delivers many Microsoft products – such as Windows Update, Zune videos, and Bing Maps – which customers know and use every day. By adding the CDN to Windows Azure capabilities, we’ve now made this large-scale network available to all our Windows Azure customers.

SQL Azure Database

SQL Azure Database is a cloud-based relational database service built on SQL Server® technologies. It is a highly available, scalable, multi-tenant database service hosted by Microsoft in the cloud. SQL Azure Database helps to ease provisioning and deployment of multiple databases. Developers do not have to install, setup, patch or manage any software. High availability and fault tolerance is built-in and no physical administration is required.

SQL Azure Data Sync

SQL Azure Data Sync is a cloud-based data synchronization service built on Microsoft Sync Framework technologies. It provides bi-directional data synchronization and data management capabilities allowing data to be easily shared across SQL Azure databases within multiple data centers.

SQL Azure Reporting

SQL Azure Reporting lets you use the familiar on-premises tools you’re comfortable with to develop and deploy operational reports to the cloud. There’s no need to manage or maintain a separate reporting infrastructure, which leads to the added benefit of lower costs (and less complexity). Your customers can easily access the reports from the Windows SQL Azure portal, through a web browser, or directly from your applications.

Windows Azure App Fabric Service Bus

The Service Bus provides secure messaging and connectivity capabilities that enable building distributed and disconnected applications in the cloud, as well hybrid application across both on-premise and the cloud. It enables using various communication and messaging protocols and patterns, and saves the need for the developer to worry about delivery assurance, reliable messaging and scale.

Windows Azure AppFabric Access Control

Access Control provides an easy way to provide identity and access control to web applications and services, while integrating with standards-based identity providers, including enterprise directories such as Active Directory®, and web identities such as Windows Live ID, Google, Yahoo! and Facebook. The service enables authorization decisions to be pulled out of the application and into a set of declarative rules that can transform incoming security claims into claims that applications understand. These rules are defined using a simple and familiar programming model, resulting in cleaner code. It can also be used to manage users’ permissions, saving the effort and complexity of developing these capabilities.

Windows Azure AppFabric Caching

Caching provides a distributed, in-memory, application cache service for Windows Azure and SQL Azure applications. It provides applications with high-speed access, scale, and high availability, to application data. These capabilities are provided entirely as a service (no installation or management of instances, dynamically increase/decrease cache size as needed).

Windows Azure AppFabric Integration

Integration provides common BizTalk Server integration capabilities (e.g. pipeline, transforms, adapters) on Windows Azure, using out-of-box integration patterns to accelerate and simplify development. It also delivers higher level business user enablement capabilities such as Business Activity Monitoring and Rules, as well as self-service trading partner community portal and provisioning of business-to-business pipelines.

Windows Azure AppFabric Composite App

Composite App provides a multi-tenant, managed service which consumes the .NET based AppFabric Composition Model definition and automates the deployment and management of the end to end application, eliminating manual steps needed by both developers and ITPros today. It directly executes application components to provide a high-performance runtime optimized for cloud-scale services and mid-tier components. It also delivers a complete hosting environment for web services built using Windows Communication Foundation (either natively developed or using WCF Data Services and WCF RIA Services) and workflows built using Windows Workflow Foundation.

Windows Azure Platform Appliance

Windows Azure™ platform appliance is a turnkey cloud platform that customers can deploy in their own datacenter, across hundreds to thousands of servers. The Windows Azure platform appliance consists of Windows Azure, SQL Azure and a Microsoft-specified configuration of network, storage and server hardware. This hardware will be delivered by a variety of partners. The appliance is designed for service providers, large enterprises and governments and provides a proven cloud platform that delivers breakthrough datacenter efficiency through innovative power, cooling and automation technologies.

Amazon Elastic Compute Cloud (Amazon EC2)

Amazon Elastic Compute Cloud (Amazon EC2) is a web service that provides resizable compute capacity in the cloud. It is designed to make web-scale computing easier for developers.
Amazon EC2’s simple web service interface allows you to obtain and configure capacity with minimal friction. It provides you with complete control of your computing resources and lets you run on Amazon’s proven computing environment. Amazon EC2 reduces the time required to obtain and boot new server instances to minutes, allowing you to quickly scale capacity, both up and down, as your computing requirements change. Amazon EC2 changes the economics of computing by allowing you to pay only for capacity that you actually use. Amazon EC2 provides developers the tools to build failure resilient applications and isolate themselves from common failure scenarios.

Amazon Elastic MapReduce

Amazon Elastic MapReduce is a web service that enables businesses, researchers, data analysts, and developers to easily and cost-effectively process vast amounts of data. It utilizes a hosted Hadoop framework running on the web-scale infrastructure of Amazon Elastic Compute Cloud (Amazon EC2) and Amazon Simple Storage Service (Amazon S3).
Using Amazon Elastic MapReduce, you can instantly provision as much or as little capacity as you like to perform data-intensive tasks for applications such as web indexing, data mining, log file analysis, data warehousing, machine learning, financial analysis, scientific simulation, and bioinformatics research. Amazon Elastic MapReduce lets you focus on crunching or analyzing your data without having to worry about time-consuming set-up, management or tuning of Hadoop clusters or the compute capacity upon which they sit.

Amazon Auto Scaling

Auto Scaling allows you to automatically scale your Amazon EC2 capacity up or down according to conditions you define. With Auto Scaling, you can ensure that the number of Amazon EC2 instances you’re using scales up seamlessly during demand spikes to maintain performance, and scales down automatically during demand lulls to minimize costs. Auto Scaling is particularly well suited for applications that experience hourly, daily, or weekly variability in usage. Auto Scaling is enabled by Amazon CloudWatch and available at no additional charge beyond Amazon CloudWatch fees.

Amazon CloudFront

Amazon CloudFront is a web service for content delivery. It integrates with other Amazon Web Services to give developers and businesses an easy way to distribute content to end users with low latency, high data transfer speeds, and no commitments. Amazon CloudFront delivers your static and streaming content using a global network of edge locations. Requests for your objects are automatically routed to the nearest edge location, so content is delivered with the best possible performance. Amazon CloudFront is optimized to work with other Amazon Web Services, like Amazon Simple Storage Service (S3) and Amazon Elastic Compute Cloud (EC2). Amazon CloudFront also works seamlessly with any origin server, which stores the original, definitive versions of your files. Like other Amazon Web Services, there are no contracts or monthly commitments for using Amazon CloudFront – you pay only for as much or as little content as you actually deliver through the service.

Amazon SimpleDB (beta)

Amazon SimpleDB is a highly available, scalable, and flexible non-relational data store that offloads the work of database administration. Developers simply store and query data items via web services requests, and Amazon SimpleDB does the rest. Unbound by the strict requirements of a relational database, Amazon SimpleDB is optimized to provide high availability, ease of scalability, and flexibility with little or no administrative burden. Behind the scenes, Amazon SimpleDB creates and manages multiple geographically distributed replicas of your data automatically to enable high availability and data durability. The service responds to changes in traffic by charging you only for the compute and storage resources actually consumed in serving your requests. You can change your data model on the fly, and data is automatically indexed for you. With Amazon SimpleDB, you can focus on application development without worrying about infrastructure provisioning, high availability, software maintenance, schema and index management, or performance tuning.

Amazon Relational Database Service (Amazon RDS) (beta)

Amazon Relational Database Service (Amazon RDS) is a web service that makes it easy to set up, operate, and scale a relational database in the cloud. It provides cost-efficient and resizable capacity while managing time-consuming database administration tasks, freeing you up to focus on your applications and business.
Amazon RDS gives you access to the full capabilities of a familiar MySQL database. This means the code, applications, and tools you already use today with your existing MySQL databases work seamlessly with Amazon RDS. Amazon RDS automatically patches the database software and backs up your database, storing the backups for a user-defined retention period and enabling point-in-time recovery. You benefit from the flexibility of being able to scale the compute resources or storage capacity associated with your relational database instance via a single API call. In addition, Amazon RDS makes it easy to use replication to enhance availability and reliability for production databases and to scale out beyond the capacity of a single database deployment for read-heavy database workloads. As with all Amazon Web Services, there are no up-front investments required, and you pay only for the resources you use.

Amazon Simple Queue Service (Amazon SQS)

Amazon Simple Queue Service (Amazon SQS) offers a reliable, highly scalable, hosted queue for storing messages as they travel between computers. By using Amazon SQS, developers can simply move data between distributed components of their applications that perform different tasks, without losing messages or requiring each component to be always available. Amazon SQS makes it easy to build an automated workflow, working in close conjunction with the Amazon Elastic Compute Cloud (Amazon EC2) and the other AWS infrastructure web services. Amazon SQS works by exposing Amazon’s web-scale messaging infrastructure as a web service. Any computer on the Internet can add or read messages without any installed software or special firewall configurations. Components of applications using Amazon SQS can run independently, and do not need to be on the same network, developed with the same technologies, or running at the same time.

Amazon Simple Notification Services (Amazon SNS) (beta)

Amazon Simple Notification Service (Amazon SNS) is a web service that makes it easy to set up, operate, and send notifications from the cloud. It provides developers with a highly scalable, flexible, and cost-effective capability to publish messages from an application and immediately deliver them to subscribers or other applications. It is designed to make web-scale computing easier for developers.
Amazon SNS provides a simple web services interface that can be used to create topics you want to notify applications (or people) about, subscribe clients to these topics, publish messages, and have these messages delivered over clients’ protocol of choice (i.e. HTTP, email, etc.). Amazon SNS delivers notifications to clients using a “push” mechanism that eliminates the need to periodically check or “poll” for new information and updates. Amazon SNS can be leveraged to build highly reliable, event-driven workflows and messaging applications without the need for complex middleware and application management. The potential uses for Amazon SNS include monitoring applications, workflow systems, time-sensitive information updates, mobile applications, and many others. As with all Amazon Web Services, there are no up-front investments required, and you pay only for the resources you use.

Amazon CloudWatch

Amazon CloudWatch is a web service that provides monitoring for AWS cloud resources, starting with Amazon EC2. It provides customers with visibility into resource utilization, operational performance, and overall demand patterns—including metrics such as CPU utilization, disk reads and writes, and network traffic. To use Amazon CloudWatch, simply select the Amazon EC2 instances that you’d like to monitor; within minutes, Amazon CloudWatch will begin aggregating and storing monitoring data that can be accessed using the AWS Management Console, web service APIs or Command Line Tools.

Amazon Virtual Private Cloud (Amazon VPC) (beta)

Amazon Virtual Private Cloud (Amazon VPC) is a secure and seamless bridge between a company’s existing IT infrastructure and the AWS cloud. Amazon VPC enables enterprises to connect their existing infrastructure to a set of isolated AWS compute resources via a Virtual Private Network (VPN) connection, and to extend their existing management capabilities such as security services, firewalls, and intrusion detection systems to include their AWS resources. Amazon VPC integrates today with Amazon EC2, and will integrate with other AWS services in the future. As with all Amazon Web Services, there are no long-term contracts, minimum spend or up-front investments required. With Amazon VPC, you pay only for the resources you use.

Elastic Load Balancing

Elastic Load Balancing automatically distributes incoming application traffic across multiple Amazon EC2 instances. It enables you to achieve even greater fault tolerance in your applications, seamlessly providing the amount of load balancing capacity needed in response to incoming application traffic. Elastic Load Balancing detects unhealthy instances within a pool and automatically reroutes traffic to healthy instances until the unhealthy instances have been restored. Customers can enable Elastic Load Balancing within a single Availability Zone or across multiple zones for even more consistent application performance.

Amazon Simple Storage Service (Amazon S3)

Amazon S3 is storage for the Internet. It is designed to make web-scale computing easier for developers. Amazon S3 provides a simple web services interface that can be used to store and retrieve any amount of data, at any time, from anywhere on the web. It gives any developer access to the same highly scalable, reliable, secure, fast, inexpensive infrastructure that Amazon uses to run its own global network of web sites. The service aims to maximize benefits of scale and to pass those benefits on to developers.

Amazon Elastic Block Storage (EBS)

Amazon Elastic Block Store (EBS) provides block level storage volumes for use with Amazon EC2 instances. Amazon EBS volumes are off-instance storage that persists independently from the life of an instance. Amazon Elastic Block Store provides highly available, highly reliable storage volumes that can be attached to a running Amazon EC2 instance and exposed as a device within the instance. Amazon EBS is particularly suited for applications that require a database, file system, or access to raw block level storage.

On Tuesday, November 9, 2010 Presented at the Twin Cities Developer Group on Silverlight and the Managed Extensibility Framework (MEF). Here’s brief overview of the session:

In certain .NET circles there has been a lot of talk as of late about the Managed Extensibility Framework, or MEF. You may have even heard some of this chatter, but you’re probably asking yourself “What the heck is MEF and why should I care?” At its core, MEF is a library for creating lightweight, extensible applications. MEF is an integral part of the .NET Framework, and Silverlight 4 shipped with out-of-the box support for MEF. In this session we’ll dive into the guts of MEF looking at what it is, why you might want to consider using it, and how to actual implement MEF in your Silverlight applications.

You can download the source code for the session demos here.

PDC10 Recap

November 5, 2010

On Thursday, November 4, 2010 Brent Stineman and I recapped PDC10 with an open discussion at the Twin Cities .NET User Group. The discussion had two main areas of focus, one being, what I’m calling, “The HTML5 Incident” and the other being announcements regarding Windows Azure. Below are links to resources from each focus area.

“The HTML5 Incident”

Windows Azure Announcements

Additional Resources

(On a side note, I had originally planned on giving a presentation on the Managed Extensibility Framework. I’ll work with the organizers of the Twin Cities .NET User Group to get that session back on the schedule some time 2011. Between now and then I will be posting a multi-part series on MEF, so stay tuned!)

On Sunday, October 10, 2010 I presented at Twin Cities Code Camp on Silverlight and the Managed Extensibility Framework (MEF). Here’s a brief overview of the session:

In certain .NET circles there has been a lot of talk as of late about the Managed Extensibility Framework, or MEF. You may have even heard some of this chatter, but you’re probably asking yourself “What the heck is MEF and why should I care?” At its core, MEF is a library for creating lightweight, extensible applications. MEF is an integral part of the .NET Framework, and Silverlight 4 shipped with out-of-the box support for MEF. In this session we’ll dive into the guts of MEF looking at what it is, why you might want to consider using it, and how to actual implement MEF in your Silverlight applications.

You can download the source code for the session demos here.

On Saturday, October 9, 2010 I presented at Twin Cities Code Camp on Multi-Targeting WPF, Silverlight, and Windows Phone 7. Here’s a brief overview of the session:

With WPF, Silverlight, and now Windows Phone 7, all using xaml, multi-targeting applications can be a reality. However, it’s not without its challenges. In this session I’ll talk about which things are easiest to share, and which are hardest. I’ll also show you some recommended approaches on how to structure your project, as well as a comparison of the different ways by which you can share code and xaml. I’ll cover topics such as assembly portability, code sharing using linked files, usercontrol encapsulation and abstraction, and even loading xaml at runtime after tinkering with the source via code.

You can download the source code for the session demos here.

This past Wednesday I gave a talk at MDC10 on Windows Phone 7. It was an introductory talk and we covered a lot of different concepts.

You can download the source code from my demos here.

Below are a number links to help you to start digging deeper into the platform.

Part 1: User Experience

Part 2: Developer Experience

Part 3: $$$

Windows Phone 7 Developer Launch

Next month I’ll be presenting at the Twin Cities Silverlight User Group on Windows Phone 7 Series and Silverlight. Here’s the session abstract:

At MIX10 there were a number of announcements and a lot of buzz around Windows Phone 7 and one of its development platforms, Silverlight. While it is undoubtedly tempting to download the CTP bits and start coding, it would be wise to take a step back and come to an understanding of the differences between developing in Silverlight for Windows Phone 7 and developing for traditional (i.e. browser hosted) Silverlight applications.In this session we’ll examine the differences and similarities between the two platforms as well as some other gotchas that come along with developing for Windows Phone 7.

Be sure to register for the event here.

In pulling materials together for the session I thought it’d be nice to have a PowerPoint presentation that had the look and feel of the Windows Phone 7 Series. After hacking around for about 15 minutes I came up with a template that I thought would work. The template consists of two layouts:


(Layout 1: title)


(Layout 2: content)

After creating the template I realized other people are probably throwing together presentations around Windows Phone 7 and they might like to use/modify this template. So I thought I’d just make it available to anyone interested.

Note: The template was created using PowerPoint 2010, and has not been tested for compatibility with PowerPoint 2007.

You can download the template here.

Hello Azure!

December 1, 2009

Tonight I gave a talk on Azure to the Dubuque Iowa .NET User Group. The talk was an overview of Microsoft’s cloud platform with an emphasis on Azure. The demos show how to start developing with Azure, using Web and Worker Roles along with various storage mechanisms (i.e. tables, blobs, and queues).

 To run this code you’ll need the following installed on your machine:

Optionally, you want to also install the Azure Storage Explorer to make working with Azure storage on your local machine a bit easier.

You can download the slide deck and code here.