Abstracts

Creating a Plug-in Architecture in .NET

Wouldn’t it be great to extend your application by just dropping in a DLL? Plug-in architectures make it possible and there are a few techniques that make it easy. This talk starts with a quick refresher on dependency injection and then builds onto that foundation to create a plug-in architecture. Diving deep into the code of a sample MVC application, you will see various plug-in strategies, explore the frameworks that take care of the heavy lifting, and understand where and how the plug-in points should be implemented.

I have given this talk at:

ReSharper: Discover the Secrets

Whether you’re new to ReSharper or have been using it for years, there are a host of lesser-known features that can save you loads of time. ReSharper is used by a growing number of developers to speed up or eliminate some of the most repetitive parts of writing code. It supplements Visual Studio with an extensive and ever-expanding list of features like additional refactorings, code & file templates, code analysis, improved navigation, and much more. In this session you will see some of my favorites and discover a few hidden gems that don’t get the recognition they deserve.

I have given this talk at:

Monetize Yourself

Wherever you go you see people talking about monetizing apps, websites, blogs, games, and more. But there’s more to it than that. Almost everyone I talk to has a story – they want to create something, quit their job, and live comfortably off of that one thing. But for every one success story there are many who have tried and failed. The good news is that by properly monetizing yourself through increased efficiency and the elimination of “waste”, you too can be a success story. You probably won’t create the next Facebook or Flappy Bird but you can live comfortably, do what you love, and have much more free time.

I have given this talk at:

Custom Middleware & Microservices with ASP.NET Core

At the core of ASP.NET Core is Microsoft’s implementation of the OWIN standard, giving developers full control over the ASP.NET pipeline. In this session I will explain what OWIN is and how it can empower you to quickly and easily reconfigure an entire web application. Now in full control, you can do everything from injecting custom code (middleware) into any stage of the pipeline to running lightweight applications and microservices without MVC.

I have given this talk at:

Identity Management in ASP.NET Core

Injecting custom code into authentication and authorization in ASP.NET has always been a chore. ASP.NET Identity is a library built to replace both ASP.NET Membership and Simple Membership, making it much easier to implement custom authentication and authorization without the need to rewrite core components. In this session I will go deep into the abstractions that ASP.NET Identity builds atop of and show how to take advantage of these hook points to implement a custom membership system.

I have given this talk at:

Creating Scalable Solutions with Amazon Cloud Services

The cloud is here, and there’s a lot more to it than just scaling servers up and down. New paradigms have emerged from cloud services that enable you to break down complex problems into much simpler solutions. With new tools and techniques, yesterday’s monstrous enterprise applications can be replaced by scalable and cheaper cloud applications of tomorrow. In this session you will see the architecture of a large enterprise application dissected into its components: web services, storage of both structured and non-structured data, message queuing and delivery, and notifications. With the availability of developer-friendly APIs, it is easier than ever before to leverage the many cloud services offered by Amazon Web Services.

I have given this talk at:

Getting started with NoSQL in .NET using RavenDB

Do you get the feeling that working with SQL is like cramming a square peg into a round hole? In some cases it really is, but fortunately non-structured data stores like RavenDB are here to save the day. Starting with “File > New Project” you will see just how easy it is to launch a RavenDB server, connect to it using the RavenDB .NET Client API, and start filling it with square pegs. You will leave the session with a spring in your step, ready to rethink the way you store data.

I have given this talk at:

Confessions of a Successful Project

A successful project is one that makes both the customer and the developer happy. Typically, doing this requires a project to be completed on time and under budget, as well as having a maintainable codebase. In this session you will follow a fictional project through requirements gathering, time estimation, and finally development – all from the viewpoint of a small team. At each leg of the journey problems will come up, and I will show you some options for getting the project back on track. You will leave this session with some ‘agile’ new ways to help make your next project a success.

I have given this talk at:

Understanding Dependency Injection in .NET (All Day)

Important note: This is a workshop that I have prepared together with Brian Friesen.

Your dream has come true! You just got hired in as a game developer for Bad Snowstorm Inc. They are almost ready to launch their new text-based adventure game, but their development team (Billy, the CEO’s son) is having a hard time keeping up with changing requirements. Billy never learned about interfaces or loosely coupled code, so your job will be to implement better practices that will make adding requirements faster than an avalanche.

This workshop is divided into two parts. In part one, you will get an introduction to Dependency Injection through an interactive exercise. You will then inherit some tightly coupled source code, and begin refactoring in response to changing requirements. You will do this by writing your own simple “Poor man’s DI” engine, because what better way to understand what it is and how to use it than by rolling your own.

In part two, we will refactor again, taking our “Poor man’s DI” engine to the next level. You will be introduced to various techniques such as constructor injection, method injection, and property injection, and their practical application into your code base. You will end the day by looking at existing frameworks like Ninject, StructureMap and Castle Windsor.

You will leave this session with a solid understanding of DI, and how to use it in your current and future projects.

We have given this workshop at:

Understanding Dependency Injection in .NET (2 Hours)

Your dream has come true! You just got hired in as a game developer for Bad Snowstorm Inc. They are almost ready to launch their new text-based adventure game, but their development team (Billy, the CEO’s son) is having a hard time keeping up with changing requirements. Billy never learned about interfaces or loosely coupled code, so your job will be to implement better practices that will make adding requirements faster than an avalanche.

In this double-session we will be exploring Dependency Injection from several angles. Maybe the codebase you work in is an unmaintainable mess, and you want to do something about it. We can help with that. Or maybe you want to learn what exactly, DI containers such as StructureMap or Ninject do. Perhaps you just want to know if you can really trust DI containers. We can help with those too, since we’ll actually be writing a simple DI container from scratch. And maybe you’ve heard that DI makes your code more testable (spoiler: it does). In fact, DI and testability go together like peas and carrots!

So join us, and unravel the mysteries of Dependency Injection as we refactor Bad Snowstorm’s new game: Null Quest.

We strongly recommend (but do not absolutely require) that attendees bring a laptop to this session, as there will be follow-along examples.

We have given this workshop at: