You have reached the blog of Keith Elder. Thank you for visiting! Feel free to click the twitter icon to the right and follow me on twitter.



The following are a list of presentations that have been given at varoius conferences including DevLink, Codemash as well as other venues such as .Net User Groups, Code Camps, Day of .Net, and Linux User Groups. If you would like to have me speak at your event simply contact me.

Web Applications Re-Imagined for Today’s Demanding End Users

In this talk we are going to take an extreme departure from a typical three-tiered web application and look at how we can leverage asynchronous messaging, queues, and events in exciting ways.  We’ll be architecting a web application utilizing SignalR, TopShelf, Asp.Net, RabbitMQ, and ServiceStack to create a scalable, highly available, buzzword filled, real-time web application.  We’re going to look at how we’ll handle long running business processes that cross service boundaries using command queues and events to push notifications back to our end users. We’ll learn that we’ve actually made our application stronger, faster, and simpler to write (even transactional when we need it). In the end we’re going to try to break our application to find out if it is truly Engineered to Amaze.
You can find the source code and slide deck to this project here: https://github.com/keithelder/StartR

Back To The Basics

The Back to the Basics series is a primer for anyone that is starting at ground zero with .NET. Each one progressively builds on the previous. The sessions start at the beginning with what .NET is and work all the way up to programming in C# and building various applications. This track is great for Code Camps, Technical Conferences and other venues whereby attendees want to get exposure to .NET and building applications on the platform.

Back to the Basics: What is .Net?

No other name in history has confused more people on the planet than when Microsoft named their development platform .NET. For a lot of developers .NET remains a mystery and it is often confused with many things. The Back to the Basics series is a primer for anyone that is starting at ground zero with .Net. Each one progressively builds on the previous. This is the first session in the Back to the Basics series. In this session we’ll look at what .Net really is, the benefits of the platform, bust a few myths and show some sound reasons why you should consider it as a platform. At the end of the session, hopefully we’ll answer one of life’s most puzzling questions: What is .NET?

Back to the Basics: How to Use Your Hammer – Visual Studio

Imagine if you were a carpenter that didn’t know how to use a hammer, skill saw, drill, level, or nail gun. Would you be a great carpenter? Probably not! The Back to the Basics series is a primer for anyone that is learning the .NET platform. Each one progressively builds on the previous. This is the second session in the Back to the Basics series. In this session we’ll look at the biggest single tool you’ll use when building applications on the .NET platform, Visual Studio. Visual Studio is a world class IDE with full blown intellisense, debugging, source control, and much more. When the session is over you’ll know the difference between a solution and a project, how to structure your applications and tons of shortcuts to make you more productive with your new jack of all trades tool.

Back to the Basics: A Programmer’s Primer Programming in C#

The C# programming language is the flagship language available to .NET developers. It is fully supported within the toolset and is even the programming language the majority of the .NET platform is built with. The Back to the Basics series is a primer for anyone that is starting at ground zero with .NET. Each one progressively builds on the previous. This is the third session in the Back to the Basics series. In this session we’ll cover as much about the C# language as time will allow starting with the basics of the language, Object Oriented Programming principles all the way to generics, collections, and LINQ. This is a programmer’s primer, which means you should already know at least one language and have some experience programming.

Back to the Basics: The Swiss Army Knife, Part 1 (Winforms/WPF/Mobile)

.NET is a “Swiss Army Knife” because no matter which type of application you want to write (client, web, mobile) you can use one tool (.NET) to do it with. The Back to the Basics series is a primer for anyone that is starting at ground zero with .NET. Each one progressively builds on the previous. This is the fourth session in the Back to the Basics series. In this session we’ll cover how Windows Client applications are built. First we’ll look at classic Winforms and then we’ll look at the newest technology called Windows Presentation Foundation (WPF) which provides richer user experiences. Lastly we’ll look at how to write Windows Mobile applications for Smart Phones and Pocket PC.

Back to the Basics: The Swiss Army Knife, Part 2 (Web/Services/Workflow)

.NET is a “Swiss Army Knife” because no matter which type of application you want to write (client, web, mobile) you can use one tool (.NET) to do it with. The Back to the Basics series is a primer for anyone that is starting at ground zero with .NET. Each one progressively builds on the previous. This is the fifth session in the Back to the Basics series. In this session we’ll cover how web applications and web services are built. First we’ll look at WebForms. If you stayed awake in session four you’ll feel right at home with WebForms since the same programming model is applied, the only difference is we are building a web application. Then we’ll look at how to build web services to expose business logic to a multitude of clients (web, windows, mobile) using Windows Communication Foundation. Lastly we’ll touch on Workflow Foundation which helps us to easily build out the complex business logic in a declarative manner.


New Language Features in C# 3.0

Are you tired of writing foreach loops or loops in general? Did you know with the launch of Visual Studio 2008 and the .Net 3.5 framework new language features exist in C# 3.0 to help you write your code differently? One of the many enhancements in this release were new language features to one of the core .Net languages, C#. In this session we’ll take an in depth look at the various features of C# 3.0. We will explore the old way developers wrote code (using foreach loops for example) in C# and then transpose the code to take advantage of new language features like Lambda Expressions, Extension Methods, Anonymous Types, LINQ and more.


What Software Developers Can Learn From Forrest Gump

As software developers we are notorious for complicating things. We have this natural ability to make the simplest of things sound overly complicated, not to mention we use acronyms for everything. By making things sound more complex than they are we create a huge divide between us, management, clients and end-users. If you are a developer that has to meet face to face with clients or customers you have to know how to communicate clearly. The problem is that as developers we are so busy trying to talk to our computers in various languages we forget how to communicate in real life. If you watched the movie Forrest Gump you probably realized early on that Forrest wasn’t the sharpest knife in the drawer. Yet, the way he told his story kept audiences glued to their seats. In this session we are going to take a step back and look at the things developers can learn from Forrest and how to communicate better in various ways. We’ll look at a range of bad examples, good examples, and apply the lessons learned to communicate better with end-users, stake holders, clients and even other developers. We’ll even look at examples of how to write code that is more discoverable by developers.

Visual Studio

Structure and Guidance for Organizing Applications within Visual Studio

Visual Studio is an outstanding tool when it comes to building applications on the .Net Framework. It can be confusing for users when trying to initialize a new software deliverable though. For example, how do you name your projects? Where do you put third party assemblies so they can be re-used? How do you set things up for an n-tier architecture? And the list goes on. I’ve given various talks throughout the US and it never fails that I end up in a conversation with multiple people on what are the best ways to organize projects within Visual Studio. This session should answer these questions and provide some proven guidance that works. In this session we’ll cover some best practices on how to organize your projects and solutions. We’ll also look at some tricks and guidance on how to map your folder structure to your namespaces. During the session we are going to build a new application from scratch and cover how to initially incorporate an n-tier design when initializing your project. Even if you are an experienced .Net developer this is one session you will not want to miss!

Power Point

Sample solution

Smart Clients

Defy Occasionally Connected Challenges with Smart Client Applications

This session introduces the new features and improvements incorporated into Visual Studio 2008 for smart client development. This session pulls all of the .Net 3.5 features together into a comprehensive application that showcases Windows Presentation Foundation (WPF), Expression Blend, Windows Communication Foundation (WCF), Windows Workflow (WF), hosting Workflows with WCF, Sync Services for offline data storage, and ClickOnce deployment. If you’ve ever wondered how the pieces of the puzzle fit together this session should answer those questions and then some.

Building and Deploying Smart Clients with Visual Studio

In this session you will learn a practical and best practices approach to building and deploying Smart Clients in the Enterprise. Maybe you’ve heard of Smart Clients and maybe you haven’t. Or maybe you are an Asp.Net developer who has come to realize you spend 5% of your time writing logic for your web application, and the remaining 95% of your time trying to make it function like a Smart Client. Whatever the case is, the fact remains that we use Smart Clients everyday and they are here to stay. In this session we’ll cover what exactly is a Smart Client and how they are built using Visual Studio 2005. Once we learn how to build them, we’ll cover how to deploy these applications as simple as a web application throughout the Enterprise.
Sample Solution and Powerpoint

Building Enterprise Smart Clients using a Services Oriented Architecture

This session picks up where session 1 leaves off. It covers more detailed information which will show you how to architect an enterprise smart client application called Enterprise Desktop. In this session we will explore how to architect Smart Client applications using web services and a SOA architecture and how to overcome some of the challenges such as changing business rules and validation without having to redeploy our application. We’ll also take a look at several application blocks of Enterprise Library and how they can be used in the application to save you time. And finally we will look at a lot of best practices and patterns for separating business and data logic.
Sample Solution and Powerpoint

New Features and Improvements for Smart Clients in Microsoft Visual Studio 2008

Learn what is new in Visual Studio 2008 when it comes to building Smart Clients. We’ll take a look at several new enhancements and improvements developers can take advantage of in Visual Studio 2008. In this session we’ll look at several things such as Client Application Services, new improved ClickOnce features, offline and online data syncing and more.

Power Point

Windows Communication Foundation

Demystyfying Windows Communication Foundation

Windows Communication Foundation was released with the .Net 3.0 framework and is the future of the platform for distributed computing. With .Net 3.5 and Visual Studio 2008, Windows Communication Foundation (WCF) became a first class citizen with additional tooling and add ons for Windows Workflow Foundation. In this session we are going to look at WCF from the standpoint of how to transition from ASMX web services and some of the important things you should know about WCF. If you have been hesitant in adopting WCF and still writing ASMX web services, this session will hopefully put you over the edge to giving WCF a try. I assure you, once you do, you will never look back.

Power Point

WCF, Multiple Bindings, Host Headers Galore, IIS7, Oh my!

Don’t you love it when you go to a conference and the speaker shows you a new technology like Windows Communication Foundation (henceforth abbreviated as WCF)? You then head back to the office, start playing with it and then you find all sorts of things that make life difficult when it comes time to deploy it. This session was created out of the pain experienced in deploying WCF services with IIS7 in the enterprise. WCF supports multiple bindings that allows developers to expose their services in a variety of ways. What this means is a developer can create a service once and then expose it to support net.tcp:// or http:// and various versions of http:// (Soap1.1, Soap1.2, WS*, JSON, etc). This can be useful if a service crosses boundaries between intranet and extranet applications for example. What makes this talk different is we are going all the way to production with our multiple binding service and that means IIS7 configuration and setup. We’ll look at how to setup IIS7, how to configure IIS7 with multiple host headers, what that does to your WCF services and how to make everything play nicely with the other children. We’ll also configure IIS7 to support the net.tcp protocol and talk about WAS (windows activation service) which still seems to be a mystery to most people.


Introduction to Windows Workflow Foundation

Scenario: Your boss gives you a task with fairly complicated business rules one day at work. You spend weeks coding it and as soon as you get done he/she informs you the business rules have changed. Your first thought is to lash out at your boss because this is a major change. Instead you politely smile and say thank you, “I’ll get right on it”. Little does your boss know you’ve used Workflow Foundation to map out all the business logic and rules. You quickly make the change declaratively within Workflow Foundation and all of a sudden you are a hero.

Workflow Foundation enables developers to quickly and easily map out complex business tasks that turn their code into declarative models. In this session we’ll explore the ins and outs of Workflow Foundation from the ground up so you’ll have a good sense of where to get started when you head back to the office.

Power Point

Building Custom Workflow Activities in Workflow Foundation – A Developer’s Primer

Workflow foundation is a powerful tool that allows you to declaratively design and map out application logic. While a lot of custom logic can be created using the Code activity provided out of the box, it doesn’t work very well when you move workflow out of Visual Studio and into the hands of business analyst or end users who want to re-configure workflows. The real power of WF shines through when you build custom activities that can be re-used on numerous workflows by end users and other developers. In this session we will look at Workflow Foundation from the ground floor all the way through building custom workflow activities from scratch. In the end we’ll design a reusable workflow activity that can be easily configured complete with validation.

Power point

Sample Solution

CSLA.Net – Business Framework

Introduction to CSLA.Net

If you are in a developer that writes line of business applications I have some questions for you. How do you handle security in your objects today? Do you go as far as protecting each property of your objects? What about validation? How and where do you put business rules in your objects? Do your objects allow for unlimited undos so users can roll back to previous versions? Do the business objects you write today automatically support databinding for Winforms, Web and WPF? Do you truly have a reusable business layer? If you want to scale your application from a two tiered deployment scenario to an N-Tier scenario will you have to rewrite your code? Did you plan for that up front? Those questions are the common scenarios that we have to think about when writing business applications today. While these are common problems we all have to solve, everyone does it a different way. Having 15 ways to do one thing isn’t the most productive, especially if you are working in large development teams. CSLA.Net is a business object framework that supports all of these scenarios and provides a common framework for building applications including Winforms, Web, Services and even supports multiple deployment scenarios. In this session we’ll look at what CLSA is, what problems it addresses, why you may want to consider it and how to get started.

Introduction To CSLA.Net

Enterprise Library

Leveraging Enterprise Library in Your Applications

How do you log exceptions in your applications today? How do you handle security? What about validation rules? Can you easily re-configure your applications on the fly when it comes to any of these topics? Enterprise Library offers developers this and a lot more out of the box. It has a slight learning curve that stop a lot of developers from using it so in this session we are going to cover all the things needed to get up to speed on Enterprise Library. In this session we’ll look at why you’ll want to use Enterprise Library in your applications, how to get started and look at a multitude of samples. We’ll also look at some extension points whereby you can see how Enterprise Library can be extended within your own applications to provide richer functionality.

Power Point

Other Topics For Consideration

The following are various topics that haven’t been fully fleshed out into power point but that could also be presented.

Building Vista Sidebar Gadgets

Sync Services for SQL Server Compact Edition 3.5 in Visual Studio 2008

Exposing a WCF Service With Multiple Bindings and Endpoints

Creating Custom SQL CLR User-Defined Types