DDD

DDD 8 - 30th Jan 2010

Proposed Sessions

People can submit on any topic they like. The sessions go to a community vote so the community decides what they ultimately want to see.

Voting on the agenda will open soon. Here are the sssions that have been submitted.

Jon Skeet - Getting answers to your technical questions - and giving them

There is an art to asking questions - and answering them. Two people asking for help on the same programming problem can get radically different results, based on how they ask their questions.

Likewise answering questions as helpfully as possible takes more than just knowledge: it requires empathy, communication skills, patience and intuition.

In this session I'll explain how I approach asking and answering questions in online forums such as Stack Overflow. I will come with a "problem" in mind, but if any members of the audience bring ones they need solving, we can work through those instead... framing the question as well as possible, and then considering how we'd answer it.

This session will be technology-neutral; although I will give a few hints about Java and .NET questions, the same techniques apply to any language and platform.

Find out more about Jon Skeet


Guy Smith-Ferrier - Automating Testing With Windows Virtual PC

Windows Virtual PC is a free virtualization download from Microsoft for Windows 7. It allows you to run and maintain multiple virtual machines running different Microsoft operating systems in different configurations. Virtual Machines allow you to test your software in different configurations without the need for buying and maintaining separate physical machines. Unlike previous versions of Virtual PC, Windows Virtual PC includes an API for programmatically controlling these virtual machines. This session describes this API and shows you how to use it to run automated tests on multiple platforms. Subjects covered include basic use of the API, logging on to virtual machines, various methods for copying tests to virtual machines, running processes on virtual machines and collecting test results.

Find out more about Guy Smith-Ferrier


Ian Cooper - The SOLID principles

Bob Martin's SOLID have gained popularity. The acronym defines six core  principles for class design you should be aware of for class design (there are also principles for packages, but let's not get into that here). This presentation is aimed at those of you who have heard people banging on about the SOLID principles, but never had the time to figure out what they were and how you use them. Who the hell was Liskov and what on earth do folks mean by 'Dependency Inversion'. At the very least you should take away an understanding of what the six principle are, and if things go well you should even take away an understanding of how and why to apply them.

Find out more about Ian Cooper


Rob Ashton - Solr and Lucene - get your search on

Lucene is a brilliant indexing tool written in Java
Lucene.NET is a direct port of Lucene and is one way to get the power of Lucene in your .NET application.
Solr is a web front-end to Lucene, and allows any application to add/update/search on data via the use of a nice simple REST API.

In this session, I'll summarise the above, and then demonstrate the basics of how to set up Lucene/Solr, how to utilise it within your ASP.NET MVC web application and how to integrate effectively with NHibernate.

Find out more about Rob Ashton


Mike Hadlow - Enterprise Integration with MassTransit

Web services are so 90's. These days, everyone's talking about
event-driven, publish-subcribe integration architectures. Come and find out how the open source message bus, MassTransit, can help. We'll be looking at the nuts and bolts, with plenty of hands-on code.

Find out more about Mike Hadlow


Gordon Mackie - Design Time Feature Implementation in Silverlight

A practical look at the Designer Extensibility Framework introduced in Silverlight 3. Covering the implementation of design-time support in the Blend 3 and Visual Studio 2010 designers for controls and components developed in Silverlight. Learn how to supply and configure metadata for the property browser and the design surface, Toolbox integration and control registration, intellisense for the code editor etc.

Find out more about Gordon Mackie


Mark Needham - Mixing functional and object oriented approaches to programming in C#

Functional programming is the in thing at the moment and several of the
additions to C# 3.5 allow us to write our code in a functional way.



On the other hand with an imperative language like C#, an object
oriented approach is still very useful for allowing us to break down
complex problems into more manageable pieces.



In this presentation Mark Needham will cover some of the ways that we
can program in a more functional way as well as looking at where it
makes sense to reign our functional approach in and make use of the
object oriented design tools that we already have at our disposal.



This presentation will also look at some of the mistakes and lessons
learned on a couple of projects Mark's worked on over the last 18
months using C# 3.5

Find out more about Mark Needham


Chris Hart - Introduction to Unity3D game development

Unity3D is primarily a game engine for developing first person or third person game-like environments, but with Mono behind it, you can have a lot of fun developing 3D applications for Windows, for Mac, in a web browser, or even on an iPhone / iPod, using a simple editor interface and C# or Javascript code. Plus the basic version is completely free.

From a simple simulation environment to a MMO, you can rapidly pull together entire worlds using pre-made 3d objects, hack some fun scripts in Visual Studio for intercepting events, creating GUIs, passing data back and forth, and create your own worlds in very little time. Drop in your own dlls, interact with users and the environment and you can be driving a dune buggy over a mountain or meeting your peers in a virtual space to learn about new products.

This session is a break from the norm, it's all about applying your hard-earned code skills in a completely new way. Whether it be as a hobby or for serious purposes, take a break from MVC for a bit and learn about a completely different type of application!

Find out more about Chris Hart


Rob Ashton - Multi-tenant ASP.NET MVC Projects (Or 30 very different customers and a single codebase)

If you're like us, and develop bespoke, but very similar software for each of your customers, then you'll have felt the pain of having to make compromises between flexibility and the amount of effort required to maintain the software for each of those customers.

It's very easy to start off with a base product, branch off for each of your customers, make changes according to their wishes and ship on time.

Then you need to start maintaining those different code-bases, and in time they diverge further and further until rolling fixes from your base into those different branches becomes a non-trivial task.

If you're working with high profile customers, then saying no and doing away with the complete flexibility that the above option provides is not really a option from a business perspective.

In PHP or ASP, you can execute code as and when you please, and you can write plug-in systems to allow for highly customisable applications - but you can very easily end up with spaghetti, or hard to maintain code, and you haven't got access to the amazing frameworks that .NET has given us in recent years.

In ASP.NET Forms, you can load in controls from assemblies or other sources, and maintain some semblance to the above plug-in architecture; however it is generally agreed that ASP.NET Forms has many disadvantages which we've overcome and dropped in moving to ASP.NET MVC

On the surface, ASP.NET MVC looks to be a very static beast, you create your views, your controllers and your models and develop an application for a purpose. Job done.

It doesn't seem to naturally provide us with what we want - the ability to have a base product, with all functionality provided by plug-ins, the ability to theme everything, override/replace any views/partial views and replace blocks of controller logic on a per customer basis.

MVC 2 goes some way towards the first of these goals with "areas", but the flexibility is still not there for our goal of having a single product which is seemingly bespoke for each customer but still operating off a single code base.

There are a number of options for creating completely pluggable ASP.NET MVC applications, with the ability to have your own view engines, controller factories and etc helping tremendously towards those aims.

This session aims to cover some of those options, and to demonstrate what happens when you package up these concepts into a framework you can use to make any product as flexible as you like.

Find out more about Rob Ashton


Steve Sanderson - Behaviour-Driven Development (BDD) with Cucumber

Do you need a simpler way to describe, design, and verify the functionality of your software? Behaviour-Driven Development is a modern re-thinking of TDD that caters to humans first and computers second. At the forefront of this is a Ruby tool called Cucumber: its elegant “Given-When-Then” language can be learned in 5 minutes and then used by developers, business analysts, and usability experts to specify application features at whatever level of precision is appropriate at the time.

In this session we’ll design and build an ASP.NET MVC web application using BDD techniques, seeing how this overcomes problems with traditional unit test driven development (TDD). We’ll explore your options for running Cucumber and compatible BDD tools on .NET (e.g., using IronRuby), and how– if you prefer – you can avoid Ruby and work purely in C#.

Find out more about Steve Sanderson


John Nunn - Whats new in IIS 7.5

Windows Server 2008 R2 featuring Internet Information Services  (IIS) is a powerful Web application and services platform that delivers rich Web-based experiences. It offers improved administration and diagnostic tools to help achieve lower infrastructure costs on a variety of popular development platforms. With improved reliability and scalability, IT professionals and developers can manage the most demanding Web serving environments, from a single Web server to a large Web farm. 

IIS7.5 is the next version ofIIS, and is included in both Windows 7 as well as Windows 2008 Server R2. It includes some new functionality, including some very rich integration with ASP.NET.  

Find out more about John Nunn


Arron Finnon - SSL/TLS - Just when you thought it was safe to return

SSL/TLS - Just when you thought it was safe to return

2009 was a serious year in breaking secure protocols. SSL/TLS was no different. Hacking SSL/TLS has a big return as a blackhat hacker, stealing login details and passwords
are just the beginning.

There are a number of tools and techniques that are readily
available that can make defeating SSL/TLS both simple and well with in the reach of the unauthorized attackers.

The talk focus on the research and tools of Moxie Marlinspike, who has gained an excellent reputation as an independent security research.

With some interesting attack vectors, you'll be surprised at the results one can achieve

Its no longer a case of user awareness

Find out more about Arron Finnon


David McMahon - SharePoint 2010 - An Overview

SharePoint 2010 is the next incarnation of Microsoft's Collaboration and Application platform for the Enterprise and the Web. It builds on the phenomenal success of SharePoint 2007 and adds a host of new and exciting features for the End User, IT Pro and Developer.



In this session Dave will take a whirlwind tour of just a few of the new features of SharePoint 2010, including some which will have the biggest impact for businesses like Business Connectivity Services, Service Applications and 'Sandboxed' Solutions.



If you haven't worked with SharePoint yet, this is a great taster session for things to come in 2010. If you've previously worked with SharePoint and haven't been able to check out 2010, this is definitely the session for you!

Find out more about David McMahon


Ben Hall - Testing C# and ASP.Net applications using Ruby

With the reach and diversity of different programming languages and paradigms at the moment, it's possible to use the appropriate language for the appropriate task. In my case, I develop applications using C# but test the code using Ruby. The Ruby community has always understood the importance of testing. They strive to make applications more testable while improving the approaches and tools they use. As a result, they have created some amazing frameworks and a series of best practices to support testing. 

While this is great for Ruby developers, C# and  ASP.net developers can take full advantage for their own applications. This session provides an insight into the Ruby world and how you can take advantage to create readable, maintainable and valuable tests for ASP.net based web applications, from the business logic up to the user interface. Taken from my own experiences of using this approach, the session will demonstrate how to integrate Ruby frameworks such as RSpec and Cucumber into your application development cycle, and how different frameworks combined with Ruby can solve a number of problems traditionally faced when using C#. There will also be discussion around IronRuby and JRuby and their implications for the future and the future of Testing ASP.net applications in general. 

Find out more about Ben Hall


Colin Gemmell - Basics of NHibernate

NHibernate is one of the longest serving ORM’s available in .Net. An amazingly versatile
and extendable project it can increase speed of development and give you the
agility your project needs. In this talk we will look why you would want to use
an ORM in your project and the minimum you will need to get a project up and
running with NHibernate. Using the classic XML mappings you will see how to map
your entities to the database and perform basic CRUD work against the database.

Find out more about Colin Gemmell


David Burns - Automating Performance Test Data Collection and Reporting

Web applications have been growing in size and complexity with every new release.The addition of slightly more JavaScript, more HTML can lead to the site becoming sluggish without an obvious cause. Fortunately more organisations are taking note of the correlation between site speed and profitability. Without suitable tools, developers are left stabbing in the dark trying to resolve performance issues, until the application feels faster. Luckily there are many tools out there including YSlow, which can help you through the process of measuring the performance of your application. However gathering this data manually can be time consuming, laborious and prone to human inconsistencies.

 This presentation covers the implementation and integration of an automated framework that addresses these issues by gathering performance data and presenting it in an accessible format.

 YSlow was set to auto run on each page load and send a beacon request to a collection page. By default, the beacons did not contain any detailed size information, so the YSlow source was modified to include this.  As our development and test teams use Selenium to automate our front-end testing, Selenium RC was chosen to help fully automate the process.  Test scripts were written to visit each page and exercise the site in a consistent manner, collecting YSlow score and page weight data as it went.

 While testing this solution, it was noticed that the caching and Etag values were noticeable different to those gathered using YSlow manually.  Some investigation revealed that the Selenium RC proxy blocks caching-related headers, so a custom version was compiled.  The Selenium scripts were updated to record user experience data, by measuring pageload times and the time taken for typical user interactions.  This data was stored alongside the YSlow data to allow it to be cross-referenced.

 Our continuous integration system was then updated to trigger this entire process a number of times (to ensure consistency in the timing data) each time a numbered build compiled, passed all unit tests and was deployed.

 The aggregate YSlow and timing data was made available in JSON format, allowing an interactive reporting portal to be built using jQuery and flot.  The reports are interactive and zoomable with tooltips to provide more information on each data node.

 The performance data can also be accessed using a Testers Heads Up Display (T.H.U.D.), an in-house Jetpack plugin for FireFox which also uses the JSON webservice.  It has a overlay that shows the current data for each page as they are visited, using sparklines to show the graphical data.  T.H.U.D is also integrated with our source control and bug tracking systems (Subversion and Fogbugz respectively) to provide testers with quick access to all the relevant data for a page.

 Feedback from all areas regarding this system has been overwhelmingly positive - it allows developers to pick off the low-hanging performance issues and gives them targets to work against.Testers can quickly raise issues as soon as they surface, rather than waiting until they become more serious.  Management can keep abreast of improvements that have been made by the development team and use this information to allocate time to future work.

 The system has improved the awareness of web performance issues within the company, and provided the evidence required to instigate changes and measure their impact.  An average 75% reduction in primed page size has been achieved as a direct result of the system's introduction. 

Find out more about David Burns


Andy Gibson - Web Application Testing With Selenium

Testing is a fundamental part of the development process regardless of how you approach it however GUI's have always been trickier to test and web based UI's are some of the hardest. JavaScript, AJAX and browser compatibility are all things that make web UI functionality quite difficult and time consuming to test properly. Enter Selenium, a web application testing framework which makes the creation and automation of complex web user interface tests a joy. This session will introduce you to Selenium and explain the core features of the framework before showing you, through live .NET demonstrations, how it can be harnessed in your own web development.

Find out more about Andy Gibson


Gordon Mackie - A review of the new features in Silverlight 4 beta

Silverlight 4 beta was announced at PDC09 with a set of much-requested features aimed at enhancing Silverlight's capability of supporting the building of business-focused Rich Internet Applications (RIAs).

This session is a demo-based run through the key new features, specifically covering items such as out-of-browser operation at elevated security levels, printing, device & COM API access, commanding & enhanced validation/exception handling and more.

Find out more about Gordon Mackie


John Nunn - What is Deep Zoom?

Deep Zoom is a Silverlight adaptation of a technology for presenting vast amounts of pictorial data to users in a highly bandwidth efficient manner.  Deep Zoom allows you to programmatically manipulate the Deep Zoom Scene, associate metadata with each image. The Images can come from a database or be composed on the fly. I will show you have to take advantage of this technology and create some truly remarkable applications.


Find out more about John Nunn


Andrew Westgarth - Ba-da-bing! Using the IIS SEO Toolkit to improve your site's ranking

Do you have sleepless nights worrying about the ranking of your site on Bing and Google?  Do you spend hours trawling through SEO guides and implementing changes to your site to grab an extra ranking place?  Constantly hounded by SEO experts offering their services?


If any of this sounds familiar or if you're interested in generating more traffic to your website, then let me introduce you to the IIS SEO Toolkit. 


The IIS Team has released the IIS SEO Toolkit, building on the great extensibility model built into IIS 7/7.5, to help you improve your site's search engine rankings.  In this session we'll look at how to generate reports highlighting issues with your sites based on SEO Best Practices, use built-in tools to generate Robots.txt and Sitemap files.


Also as the toolkit takes advantage of the Extensibility of IIS 7/7.5 the toolkit can also be exended.  We'll take a look at the options available and how to extend the toolkit.


Find out more about Andrew Westgarth


Barry Dorrans - Stop being stung

The OWASP Top 10 vulnerability list is the resource for discovering the most popular attacks against web applications on the internet right now. This session aims to go through them, demonstrate them and show you how to protect your ASP.NET web site.

 

Missed this last time? Now's your chance to vote for it again! And you never know, if they're published in time Barry may throw out copies of his new book, "Securing ASP.NET" (published by Wrox, will make an ideal birthday present for your loved one ...)

Find out more about Barry Dorrans


Simon Munro - De-risking your first Azure project

So you've downloaded the tools and 'played around' with Windows Azure,
looking for a project to pounce on and show off your as yet untapped
Azure awesomeness.  But you know that if you pitch an idea, your boss
is going to be counting out on his stubby fingers, like a three year
old, all of the reasons why you should not be using Azure - security,
vendor lock-in, service levels, data locality and backups.  You can
picture him suggesting that you keep things as they are and you can
almost see the mould starting to form on your daily legacy code and
your career.  You need ideas and answers so that you can go into the
office and start extending a finger or two of your own... maybe you
can, maybe you can storm into the office on the first of February and
use your newly gained DDD8 knowledge to make a pitch.

Find out more about Simon Munro


Jon Skeet - C# 4

C# 4 doesn't have as many new features as C# 3 did, but they're handy nonetheless... and pretty fundamental, when it comes to making a statically typed language selectively dynamic.

In this session I'll cover (briefly!) all the new features of C# 4:

- Default parameters
- Named arguments
- Better COM interop (named indexers, linked PIAs, simplified ref)
- Generic variance for interfaces and delegates (prepare to have a headache)
- Dynamic typing

Find out more about Jon Skeet


Jon Skeet - Save the day (or hour, or minute, or month...) with Noda Time!

Handling date and time information in .NET is a pain: the built-in APIs simply aren't rich enough for the complex requirements of the real world. In this session you'll learn about Noda Time, an open source effort to rectify this situation.

In this session I'll talk about why I started the project, the benefits it brings over the standard date and time APIs, and what we've been learning about open source .NET projects in general.

Find out more about Jon Skeet


Ian Walker - Developing a Silverlight based web site

This session will cover all aspects of the development of the public Silverlight based web site http://FromTheMalverns.com.  Begininng with the background to the content on the site, how and why it came about moving through the technical aspects of preparing the content and finally how the site was put together to show the content in interesting and dynamic ways using Silverlight.  Along the way I will also cover the folowing:

* Moving a Silverlight 3 application to Silverlight 4.

* How to host a SIlverlight Application for free.

* Options for getting web stats for a SIlverlight Application.

* Geocoding data then quickly displaying it in Bing Maps.

* How to get your photo taken with the Laker Girls.

Find out more about Ian Walker


John Price - Everything in the Kitchen Syncd

With more and more PC devices appearing in the marketplace, we have more and more data that needs to be kept up to date, Calendars and contact lists come to mind and is readily dealt with by applications such as Outlook and Exchange, but what about data in your own applications? Does your application really need a constant connection to its data? How can you provide this level of disconnectability (if thats a real word) in your own software? ADO.NET Sync Services, thats how!



This session will look at the ADO.NET Sync Service framework and, demo gods permitting, we'll have a go at building an app that can work just as well with or without its database server..

Find out more about John Price


Neil Robbins - An Introduction to CQRS

The Command-Query Responsibility Segregation (CQRS) pattern has recently been getting a lot of deserved attention, and a new name, it was 'architectural CQS'

At work we have developed a transactional B2C/B2B system following this pattern and found that it was easier to build, maintain and had much more appropriate coupling than we had achieved previously following more conventional ActiveRecord approaches.

In this talk I will introduce the audience to CQRS with Event Sourcing, talk about our real world experience with it (good and bad) and show a demo codebase that uses these patterns.

Find out more about Neil Robbins


David Burns - Selenium 2 and its future in .NET community

Selenium over the years has become the defacto testing for testing web applications in the browser. Its has the ability to work with applications that use AJAX at their core.

Selenium has been an amazing tool for testing web applications for years but there has always been a very close rival just behind with WebDriver.They have been competing for years so much so that the creators of the two frameworks hold the top spot when searching for "steel knife cage fight". 

But finally they have seen that they are better together than against each other. So with that they are being merged to create one über testing framework.

The talk will focus on what this means for testers using Selenium 1 and how they can migrate to Selenium 2 and start using some of the great features from WebDriver using .NET tools.

There will be demonstrations of the code using Iron Python, Iron Ruby and C#.

Find out more about David Burns


Colin Gemmell - Death to XML with Fluent NHibernate

Fluent NHibernate has brought a smile to many NHibrenate users by removing the need for XML. In this talk we will see how Fluent NHibernate can automatically map our database, apply our own mapping conventions and manipulate the mappings when the conventions are just not enough

Find out more about Colin Gemmell


Shay Friedman - IronRuby - the Development Booster Machine

IronRuby V1.0 is just around the corner and it's a great time to get
your hands dirty! In this session you will get familiar with the main
concepts of IronRuby and see how this exciting new .Net language will
help you boost your everyday work. From testing, through extending to polishing your
software, you will be astonished about this new developer's best friend!

Find out more about Shay Friedman


Kris Athi - Microsoft Surface

With the recent public release of the Microsoft Surface SDK, this session aims to introduce you, the developer, to this exciting new platform.


We will explore a little bit of history behind this platform before delving deep into the capabilities that exist under the hood of the device.


We will then move on to explore the application development architecture and how you can leverage your existing skills with WPF or XNA to create compelling new user experiences on the device.


By the end of the session, I hope you will see how this platform offers limitless new opportunities that will provide something never experienced by end users...and that it really isn’t just a big coffee table :) 


Find out more about Kris Athi


Gary Short - Not Everything is an Object

We've all been trained to be OO programmers, universities have taught that way for years. OO development is most suited to those problems that can be descibed by heirarchies of related objects sending messages to one another and modelling state changes.



However, not all problems can be described in this way, and with the advent of multi-core processors, we could be seeing the dying days of OO programming.



In this presentation, I'll show you why OO programming is not the most suitable paradim for solving all problems and why it certainly isn't the best paradim for taking advantage of mutli-core processors. Using real world examples, this presentation will go beyond the basic introduction to the functional programming paradim and demostrate those problems best solved using a functional approach, including those of concurrency.



These examples will be demonstrated using the Clojure language on the JVM.







Find out more about Gary Short


Chris Hardy - C# on the iPhone with Monotouch

An overview of what's possible using Monotouch, Novell's new tool, to


enable C# and .Net based applications for the iPhone and iPod touch.


Find out what you need to start using Monotouch and how to create a


sample application. If you have any questions on why you'd use
this, what are the benefits and downsides of using Monotouch then this
is your place!

Find out more about Chris Hardy


Mark Dalgarno - When Good Architecture Goes Bad

As software
evolves its architecture ‘as-is’ deviates from its architecture
‘as-hoped-for’ – the architecture is said to decay. Architectural decay
can be a problem because the time, effort and risk in implementing
further changes increases; the effect of further changes becomes harder
to predict; further changes typically cause the ‘as-is’ architecture to
deviate further from the ‘as-hoped-for’ architecture – the situation
becomes worse. This session looks at examples of architectural decay
and explores practices to prevent or slow such decay.

Find out more about Mark Dalgarno


Neil Robbins - Hello Document Databases

For many years now RDBMS tech has pretty much had a monopoly on the world of datastores. In the last few years though a brave new world of non-relational databases has been gaining increasing popularity, it's even got a name now the NoSql movement.

In this talk I will focus specifically on document databases, in particular looking at CouchDB. I'll talk about the kinds of problems that these solve, and no doubt we'll see some code showing CouchDB in play. It'll be an introductory talk, so if you're already a master of the field don't expect to learn much. But if you're looking to understand the problems that they can help with, and to get bootstrapped so you can get working with CouchDB quickly then I hope this talk will be for you.

Find out more about Neil Robbins


John Price - Designing software for the living room - Media Center

Take a look at why Media Center can make your life richer. There are a number of different personal video recorders on the market, but Media Center has one major advantage, YOU... and the software you can write for it. We will look at MCML (Media Center markup language), and look at how the XBOX 360 can be used for more than just games when working in conjunction with Media Center and Windows 7. We will also look at how we can react to things that the user does and how we can use that information to affect the physical world, like dimming the lights automatically when you play a video, and other home automation ideas.   

Find out more about John Price


Mike Hadlow - 10 Advanced Windsor tricks


The Castle Windsor IoC container has been in development for a number of years, but few really grasp its awesome power. In this session, I’ll show 10 lesser known container features and tricks that go beyond simple configuration. I’m going to assume you already know how to do the basics, so we’ll jump straight into the really cool stuff and learn how to tame that dependency graph like IoC Ninjas!


Find out more about Mike Hadlow


Mike Hadlow - An Introduction to IoC containers with Castle Windsor

There's a lot of buzz around about 'Inversion of Control Containers', but what are they and why would you need one? Come and find out how an IoC container can help you reach developer nirvana by allowing you to easily build component oriented, runtime composable, testable applications. I'll be showing you how to write your classes using Dependency Injection, the different registration options that Windsor provides and how to architect your application to leverage the benefits a container can give you.

Find out more about Mike Hadlow


Dylan Beattie - "Back" to the Future : Why Implementing MVC in Javascript Will Make Your Users Happy

Once upon a time, we navigated the Web by clicking happily from page to page, bookmarking the bits we liked, and relying on the friendly "Back" button to rescue us if we took a wrong turn somewhere along the way.

In these heady days of Ajax and jQuery, with sites offering rich interactivity and limitless possibilities behind a single URL, what does "navigation" actually mean? How can we build rich internet applications that satisfy our users' expectations, when those users are still thinking of the web in terms of pages and bookmarks?

In this session, we'll implement the model/view/controller pattern in JavaScript to create clean, elegant, interactive pages. We'll combine existing browser capabilities with jQuery plugins to regain control of your users' navigation, and we'll create web apps that use bookmarks, back buttons and browser history to deliver a harmonious, intuitive user experience.

Find out more about Dylan Beattie


Colin Mackay - SQL Injection Attacks and some Tips on How to prevent Them

In light of some recent events, such as the man who was convicted of stealing

130 million credit card details through a SQL Injection attack
, it is

imperative that developers understand what a SQL Injection Attack is, how they

are carried out, and most importantly, how to defend your code against

attack.




In this talk Colin Mackay will demonstrate a SQL Injection Attack on an

application in a controlled environment*. He’ll show you where the vulnerable

code lies and what you can do to harden it.




Although this talk uses C# as the application language and Microsoft SQL

Server 2008 as the database engine many of the concepts and prevention

mechanisms will apply to any application that accesses a database through

SQL.




* Demonstrating an attack on a system without the owner’s consent is a

breach of the 1990 Misuse of Computers Act, hence the controlled

environment.


Find out more about Colin Mackay


Joel Hammond-Turner - From Blend to Printed Page – Real World Printing with Silverlight

In this session you will see how the new Printing features of Silverlight 4 allow you to design for print using Microsoft Expression Blend, and be confident that your design will translate onto the printed page. Learn some of the tricks of printing with Silverlight, including an introduction to the Printing API, how to scale, position and paginate your content correctly on the page, and how to use the same XAML for both print and on-screen UI.


Additional Notes:


 A physical printer isn't needed, as the XPS Writer or a PDF printer driver can demonstrate the concepts acceptably.


This session would be an evolution of the 10 minute "Nugget" session I presented to the NxtGenUG (Manchester) on 18th November 2009.


Find out more about Joel Hammond-Turner


Abid Quereshi - Crystal Clear: A Prescription for Prescriptive Agile

It's been almost 9 years since the agile manifesto was first drafted. There are thousands of signatories of the manifesto and the list is growing. Yet, at the same time there is growing disillusionment and criticism about agile practices coming from experienced agilists. Some have even announced the death of agile. Is agile really dead? If so, who or what killed it? Are we merely going through the motions of last decade's great software idea?


 


Alistair Cockburn, one of the original signatories of the Agile Manifesto, has put together a great non-formula for dysfunctional agile teams called "Crystal".


 


This talk discusses a few fundamental mistakes that are prevalent in "agile" software development environments; why these practices are killing agile and how Crystal can save it.


Find out more about Abid Quereshi


Ben Lamb - How to Get a Job with Facebook

Facebook have a number of interesting programming problems on their careers page. Let’s see how many we can solve in 50 minutes using the latest .NET technologies.

We’ll be looking at how to select algorithms to solve these problems. How to implement the algorithms effectively in .NET so we can get results in a reasonable a time period with large datasets. Also what relevance do these problems have to real-world applications?

See http://www.facebook.com/careers/puzzles.php for a idea of what’s in store.

Find out more about Ben Lamb


Ian Cooper - Scripting with DSLs

In this session Ian Cooper will look at how we can use internal DSLs to configure our system behaviour using scripting. The session will cover concepts such as language oriented programming that position the use of such ideas. It will include a discussion of Rhino DSL and using the Boo programming language for scripting. 

Find out more about Ian Cooper


Ian Cooper - A Domain Driven Design Experience Report

So you have heard all about Domain Driven Design, but you are not really sure how anybody uses it in practice. You may even have seens repositories, entities, and value types appearing in a code base near you. But is that what folks who are practicing DDD do? In this presentation Ian Cooper talks about his team's experiences
using DDD, particularly Distallation, Ubiquitous Language, Strategic
Context Mapping, and oh yes something on Aggregates, Repositories and Service

Find out more about Ian Cooper


Demis Bellot - Developing gmail-like applications with Ajax Stack

Ajax Stack (http://www.ajaxstack.com) is an open source MVC-inspired Ajax framework that lets you simply develop gmail-like Ajax applications.

This session will demonstrate development of an Ajax application which happens inside an ASP.NET project where your website is laid out into a manageable and logical order, i.e. All html files in the 'html' directory, all stylesheets stored in the 'css' directory, all javascript in the 'js' directory. 

Refreshing the page compiles your changes all your into a single javascript file that gets loaded instantly. Deployment, versioning and hosting becomes easy as the release version of your website can be hosted by any webserver capable of serving static files.

Benefits of Ajax applications include maximum: 
- performance
- user experience 
- scalability 
- access thanks to Internet browsers.
 


Find out more about Demis Bellot


Simon Sabin - Entity Framework - How to stop your DBA from having a heart attack

ORMS are here to stay and most developers love them but most DBAs have been told to hate them. Thats because ORMS can generate some of the worst SQL I have seen in my life, but it doesn't have to.



In this session we will be looking at how what you do with your Entity Framework Model, and how you write your LINQ to Entities queries will affect the SQL that is generated.



After this session you will be able to make sure that you can design your use of the Entity Framework so that you can avoid being top of your DBAs hit list.

Find out more about Simon Sabin


Guy Smith-Ferrier - How To Achieve World(-Ready) Domination In Silverlight

So you’ve written your Silverlight application and you want it to work in another language ? Then this session is for you. World-Readiness is all of the work that a developer needs to do to globalize an application and make it localizable (i.e. capable of being localized). Whereas these concepts are well established in Windows Forms and ASP.NET, Silverlight is not only a cut-down version of the .NET Framework but also cross platform and client-side. In this session you will learn how to localize Silverlight applications using .resx files, download culture-specific resources on demand so that users only download resources for the culture they need, understand what System.Globalization types and properties Silverlight does not support and why, what globalization and font support you can expect on Windows and the Mac, what the Silverlight installation user experience is for non-English users and what language support you can expect from the Silverlight framework.

Find out more about Guy Smith-Ferrier


John McLoughlin - Introduction to WF 4.0

WF 4.0 was announced at PDC 08, and includes some very sexy new features.  We'll take a spin through some of those new features and see how WF has evolved.

Find out more about John McLoughlin


Simon Sabin - Car Crash Queries - What happens when the database goes wrong

We've all had an application that works fine but then suddenly starts to perform really badly. The DBA is probably blamming the Dev for writing shoddy code and the Dev is blaming the DBa for not maintaining the database properly.

You probably recompiled queries, added indexes, updated statstistics and maybe rebooted the server which might or might not have solved the problem.

This session is focusing on why the database decides to do things really badly resulting really bad performance. We will look at what causes these problems so that stop them happening in the future or at least know what to do when it happens again.

Find out more about Simon Sabin


John McLoughlin - PRISM and MEF, can they be friends?

PRISM is the latest incarnation of the the Patterns and Practices teams extensible client framework for WPF and Silverlight.  MEF is the Managed Extensibility Framework coming with .NET 4.0 and currently available on Codeplex.  They sound similar, do they do the same thing?  Or do they have different uses?  In this session we'll look at the two frameworks and how they can coexist in one application.

Find out more about John McLoughlin


Guy Smith-Ferrier - Enforcing Code ‘Beauty’ With StyleCop

In May 2008 Microsoft finally released StyleCop (aka Source Analysis). StyleCop does for C# source code what FxCop does for assemblies – it applies ‘good practice’ rules to your source code. This means all those controversial code beauty issues like spaces, where to put curly braces, how and when to use blank lines and over 150 similar rules. This session gets you started using StyleCop, investigates a selection of rules, shows how to integrate StyleCop into Visual Studio and your build process and finally shows how to write your own custom rules. This is a low tech session on an essential tool that all C# developers should be using.

Find out more about Guy Smith-Ferrier


Gary Short - Credit Crunch Code - Paying Back the Technical Debt

Technical debt is the price you pay, in time and money, for shortcuts you take at various stages of the project life cycle. In this presentation I'll, briefly, define technical debt more thouroughly, before describing some of the patterns that can lead to debt, and how to mitigate against them. I'll then finish up by demonstrating some metrics you can use to identify the areas in your codebase where technical debt might reside. This talk is a must for any developer who wants to rid their project of technical debt and ensure that the code base stays as flexible and clean as possible.

Find out more about Gary Short


Rob Blackmore - Adding WPF to a WinForms application

Have a large WinForms application but want to start using WPF?  This session will look at how you can have both technologies within the same solution and how to retain a WinForms style look and feel to allow you to begin to migrate to WPF.  I will also look at some of the early "gotchas" that WPF introduces and how to overcome them.

Find out more about Rob Blackmore


Richard Hopton - Test Driven Development to save, time, money and your sanity

How many bugs does your software have? How much time will it take you to fix those bugs? The normal answer to these questions is many and forever, that is unless you are practicing Test Driven Development. NxtGenUG Oxford coordinator Richard Hopton walks through what it is, some guidelines to follow, how to get started implementing it in new projects as well as tips to help apply these same techniques to existing applications.

Find out more about Richard Hopton


Colin Gemmell - Dependancy Injection with Castle Windsor

An Inversion of Control (IoC) container can be one of the most useful and powerful tools in an enterprise developers toolbelt. Caslte Windsor is one of the most mature of these IoC containers and in this talk we will look at how configure the container using the simple fluent interface in some simple and not so simple situations. We will also see how to integrate Windsor in a range of differentnt projects types.

Find out more about Colin Gemmell


Barry Dorrans - Who are you again? Identity and the internet

These days there are more options for web sites than just a plain old username and password. This session will take you through the options you can use to add authentication to your web site.


The journey will start from user names and passwords, through client certificates, Live ID, Open ID and culminating in an overview of Microsoft’s plan for claims based authentication using the Windows Identity Foundation SDK.


Find out more about Barry Dorrans


Phil Pursglove - The Need For Speed: Distributed Caching With Velocity

AppFabric Caching (neé Velocity) is Microsoft's new framework for distributed caching.


In this session we'll look at:


·         why you might want a distributed cache


·         how to configure your applications to use AppFabric


·         how to install AppFabric on a server


·         how to manage an AppFabric cluster


We'll also explore some of the other features of AppFabric Caching, including concurrency and locking, tagging, building a highly-available cache, and how to get away from sticky load balancing.

Find out more about Phil Pursglove


Andrea Magnorsky - Lessons learned on Unit Testing

Learning to unit test takes time ( maybe just a lot of practise.. so time is implied). This is a discussion about what was the process and what I learned along the way.

Covering

General tips on unit testing and principles

What makes a bad test ( ie test smells?)

What makes a good test

Mocking

Other Tools

Not Covered :

BDD

Comparing Unit testing frameworks

Find out more about Andrea Magnorsky


Ian Cooper - Real World MVC Architectures

So you have drunk the kool aid and decided that MVC applications are a better way to build your web applications, kissed goodbye to a page based architecture and learned to love JQuery. 

From here on everything is just gravy, right? 

As ever with would-be silver bullets you have bought off one set of problems but are now at risk from another set. 

In this presentation Ian Cooper will talk about his experience from building MVC applications for the last 2 years, discussing gotchas like the Fat Controller and God Service, and asking what a Front Controller is and why it might mean you fall in love with the command pattern. 

Find out more about Ian Cooper


Rob Blackmore - T4 and how it can be used for code generation in Visual Studio 2008 / 2010

T4 is the best kept secret in Visual Studio.  In this session I will look at how it can be used to generate any type of code be it a class, T-SQL or even XAML!

Find out more about Rob Blackmore


Barry Carr - Contractual Obligations: Getting up and running with Code Contracts.

Code Contracts is Microsoft's implementatoin of Programming by Contract for .NET (also known as Contract Programming, or Contract-First development).  Code Contracts are a way of adding executable specification documentation to your code; they can also work hand-in-hand with your unit tests.  All-in-all, the aim of Code Contracts is to improve the quality and reliability of your software.



With Code Contracts you can: specify a method's pre-requisites (pre-conditions) and what it guarantees to do for it's caller (post-conditions); you can also specify what conditions must always be in-place throughout the the lifetime of an object (object-invariants).  Code Contract conditions can be tested at runtime and, if you're using Team System, they can also be analysed and tested statically after your application has compiled. Using the features of code contracts in conjunction with your unit tests can help you find potential problems in your code sooner.



Code Contracts will be part of .NET 4.0 and are also available for .NET 3.5; they're language agnostic and integrate into Visual Studio (08 & 10).



The aim of this session is to show you how to write code contracts: method pre and post condtions along with object-invariants and we'll look at how Code Contracts work.  In addition, we'll also be looking at using Code Contracts with TDD and how to use Contracts with Interfaces.

Find out more about Barry Carr


Liam Westley - Commercial Software Development - Writing Software Is Easy, Not Going Bust Is The Hard Bit

... the sequel to 'How To Start a Software Development Company for £5000'

There are three excellent ways to lose lots of money; open a restaurant, own a football club or start a software development company.

Liam will provide a personal and subjective view on some of the tactics that he has found useful when running a software development company, to ensure it enjoys a 1st birthday party.

Liam will be assuming that you can write code, work hard, have commercial ideas and have clients or sales leads.

We won’t focus on any particular technology or framework, instead topics will include; Support, Testing, Logging, Time/Cost Estimates, Paperwork and Sales Pitches.

Find out more about Liam Westley


John McLoughlin - Introduction to PRISM

PRISM is the latest incarnation of the Composite Application Guidance from the MS Patterns and Practices team. The guidance allows you to build extensible application quickly and easily in either WPF or Silverlight. In this session I'll show you how easy it is to build a WPF application and then extend it with PRISM.

Find out more about John McLoughlin


Mark Needham - An introduction to F#

 F# is one of the newest languages available on the CLR and as a predominantly functional language it is quite useful for solving some problems more easily than C#.

Mark has been playing around with F# for about a year and will share some of the lessons he's learnt over this time in this session.

We'll talk briefly about why you might want to use F#, how you might go about learning it and the types of problems Mark has tried to solve with it and the lessons learned from doing so.

Find out more about Mark Needham


Daniel May - Learning the right way

There are many different methods of learning how to develop, design and manage effectively, efficiently and do things in the 'right' way. This begs the question - what is the 'right' way?
Is it via reading books, reading blogs, or not reading at all?
Is it via pair-programming, code reviews, and how much does this affect the learning process?

In this session, Daniel May will be going over the common ways to learn a new language, pattern or aspect of development and design, and suggesting improvements and recommendations to these methods. 

Subjects covered will include learning from books including publication choices and recommendations, learning via pair-programming and code reviews, learning in the workplace with internships, official microsoft training (.NET) and much more.

Find out more about Daniel May


Liam Westley - Hyper-V For Developers

For those new to virtualisation we'll provide an overview of virtualisation and the desktop products currently available for developers.

Then we'll explain the differences between those products and Hyper-V and examine the two products for running Hyper-V; Hyper-V Server R2 (free) and Windows Server 2008 R2 (semi-free).

Finally we'll demonstrate automation of Hyper-V using the PowerShell library available on CodePlex so that you can automate your testing and integrate Hyper-V in your continuous integration server.

At the end of the session you'll have a greater understanding of the Hyper-V architecture, whether it is suitable for you and how to automate Hyper-V for development tasks.

Find out more about Liam Westley


Jimmy Skowronski - Testing web services using SoapUI

When working with web services, unit tests using a proxy class are not always accurate, especially when comes to interoperability. SoapUI is a tool that allows to test web services from client-on-the-wire perspective when the only thing we are working with are messages. In this session I will show how to use SoapUI to create and automate tests for SOAP based web services. 

Find out more about Jimmy Skowronski


Alan Dean - Lessons learned bringing Agility to a Startup

Development at a startup company is highly unpredictable. How do you respond when product ownership is haphazard, even capricious, or when your legacy code is essentially a prototype application? Such questions have been legion over the last year since joining moveme.com and this session will be a jungle guide of success, failure and hard-won learning.

Find out more about Alan Dean


David McMahon - Visio On!

One of the lesser known new features of SharePoint 2010 is Visio Services.  Following on from the success of Excel Services in SharePoint 2007, another of Microsoft's Office suite hits the web, this time combined with the magic of Silverlight!  Visio Services offers the end user a new and exciting way to view his data, it offers the developer new and exciting ways to display data!



Dave will cover by means of demo's a-plenty most of the features of Visio Services, including it's Architecture, it's Javascript API, it's WebPart Connections, Custom Data Source Provider and ability to create Custom Icons. 



Think Visio is for a few network diagrams? Think again, Visio Services will surprise you and excite you, as you begin to see new ways to visualise your data, and to give users an insightful and exciting visual experience!

Find out more about David McMahon


Sebastien Lambla - OpenRasta, a new way to build web applications

OpenRasta is getting more and more popular as a general purpose web framework. Why use different frameworks for services and web pages? You don't have to.



Come and discover the only web framework that lets you design web applications and services quickly, and run them on IIS, in a windows service or even WCF.



In this session, you'll be introduced to OpenRasta and ReST principles, see what OpenRasta lets you do easily such as serve xml, json and html from the same URI, and you'll even get a sneak preview of an easier way to deploy OpenRasta applications across environments.

Find out more about Sebastien Lambla


David McMahon - A Quantum of Computing

Do you want a session which will give you latest and most relevant information to help you in your day-to-day work? Want to take back some nugget of information to your Boss to make his job easier and get into his good books?  If you do, don't bother attending this session, as it's of no value to you today or probably even in ten years time. 



If however, you want a completely different session, one which takes you to the edge of what is currently possible in science and in computing, one which pushes the limits of your comprehension, then this is definitely the session for you.



Dave will, without the aid of any demonstrations, 'cos there ain;t no such thing as a commercial quantum computer, explain what quantum computing is all about, give you some examples of quantum computations and why, SSL's days may be numbered ....



This session requires no prior knowledge of any kind, it will be an overview and suitable for any attendee at the event.

Find out more about David McMahon


Richard Fennell - Putting some testing into your TFS build process

Continous Intergration and scheduled builds are an important part of any development process. To get the best out of these tools, as much testing as possible should be wired into the post build process.

In this session I will show how with the new Microsoft Test and Lab Manager an application can be built, unit tests run, a virtual test environoment created, the product deployed so that intergration/coded UI tests can be run.

Find out more about Richard Fennell


Dave Sussman - Mapping with Silverlight and Bing

Building mapping into your web applications is becoming a common
requirement, and while it's easy to incorporate Google or Bing mapping,
the existing technologies have been Javascript based. This brings
several problems, among them performance. With Bing however, you have
the opportunity to use a Silverlight control, which opens up huge
opportunities. Not only does running in silverlight free you from
Javascript performance restrictions, but also it's easy to customise
the mapping experience; after all, it's just silverlight, so anything
goes. In this session we'll look at integrating mapping into web
applications, showing everything from simple pushpins to complex
interactions, and examine some simple ideas for building a modular
architectures.

Find out more about Dave Sussman


Toby Henderson - An Introduction to Mono

An introduction to Mono and the ecosystem around it the Frameworks (.Net, Winforms, Asp.Net, GTK#), Platforms, Cross platform applications, IDEs and IDE support, Tools and Libraries.

Find out more about Toby Henderson


Barry Dorrans - A developer's guide to encryption

Do you think a hash is how your girlfriend refers to the pile of clothes you leave on the bedroom floor? Is a MAC something you wear when it rains? When you hear about symmetric encryption do you believe it involves mirrors? Is asymmetric encryption something you worry may be ascetically displeasing?


In this session Barry Dorrans will take you through the basics of cryptography and attempt to demystify random number generation, hashing, symmetric and asymmetric encryptions, securing XML and using X509 certificates. The session will show you where and how you should use each cryptographic technique and will demonstrate, with thrilling code to how do it yourself.


Find out more about Barry Dorrans


Ben Lamb - Turbocharge Your Tests – Introducing Pex and Moles

Many developers realise the benefits of unit testing but writing good tests isn’t as easy as it seems. Pex is a tool from Microsoft Research that can intelligently generate tests and attempts to find problems with your code. This talk will explain how it works its magic and how it integrates with Visual Studio.

I’ll also cover Stubs and Moles. Moles are an addition to Pex that allow you to proxy methods on existing .NET classes. For example, if you want that call to Random.Next() to always return the same value Moles would allow you to replace it with a method which does that.

Find out how these tools can turbocharge your unit testing and enable you to write better tests with less effort and reduce the maintenance burden of keeping your unit tests up-to-date as your code changes.

Find out more about Ben Lamb


Richard Fennell - "But it works on my PC" Making manual testing a structured part of your development process

Software has always needed to be tested manually, automation can help, but it is never going to replace the need for manual testing totally. How a team manages this requirement for manual testing can be key to a projects success or failure.

In the 2010 release of Visual Studio,Microsoft have provided a whole new set of tools to aid in this process - Microsoft Test and Lab Manager. In this session I will show how MTLM can be used to assist a tester in creating detailed, acurate and repeatable testing that are a joy to use (well might be stretching a point there!). Also I will show how the tooling can allow these manual tests can become the basis for automated tests, and how the advanced logging features of the tools allow bugs to be acurately passed back to developers for speed the production of fixes.

Find out more about Richard Fennell


Chris Hart - Introduction to OpenSim

OpenSim is a platform for making 3D virtual environments that can look and feel like SecondLife, or can be tweaked and tuned to your own requirements. It's an open source project, written in C#, and is developing very rapidly into a flexible platform for hosting 3D environments.

This session introduces the OpenSim platform, and describes how it can be applied to make interactive 3D spaces for learning, collaboration, education and social interaction. Delving into the code, we'll also look at some cool ways to extend the platform and work to model data, visualise ideas and concepts, track metrics on who's using your world, and create innovative and exciting ways to entertain visitors to your world.

Web apps can be so plain and flat, give your web experience a third dimension and really get into the guts of this fantastic platform! There'll be plenty of C# to go around, but with some fun visuals and demos to liven things up a bit!

Find out more about Chris Hart

Latest News

Photos