Keeping it responsive - cross-platform MVVM with ReactiveUISam Hogarth
Building an awesome user interface is hard work. You've got the complexities of real life to deal with - handling user inputs, dealing with slow network connections and managing background workers. There's also this testing thing that people keep going on about!
We need a way of handling the real world, whilst behaving in a predictable and responsive manner. Enter ReactiveUI, a fusion of MVVM and the Reactive Extensions (Rx) for .NET applications.
In this session I'll introduce ReactiveUI, show you some tips and tricks, discuss the benefits and tradeoffs of the framework and show how it can be used as a solid foundation for building cross-platform .NET applications.
An Introduction to Functional Programming with F#Ian Russell
F# is a functional-first programming language which helps you to tackle complex computing problems with simple, maintainable and robust code. In this session, Ian Russell will get you started on the road to thinking and writing code functionally.
CQRS & Event sourcing – an Azure implementationAndrew Macdonald
When thinking about developing a new software product, it’s normal (for me at least) to think ‘let’s play it safe – let’s use the same techniques we always use’.
This time though, I thought ‘No – I like the sound of this CQRS thingymabob’ and after a bit of investigation ‘ooo… event sourcing – that sounds cool too’ – ‘I know what - I’ll use both’
In this session we will explore these exciting concepts and walk through how they are implemented in a real life production project that targets Azure table storage as a first class citizen.
Windows 8.1 Behaviors SDK and Universal App upgrade war storiesJoshua Whittle
In this session, I will be covering using the Behaviors SDK that now comes with Visual Studio 2013 for use in Windows 8.1 Apps. Behaviors are very useful in keeping your MVVM code clean and avoiding lots of decision making in your view models.
The second section of the session will be some war stories when upgrading your Windows 8.1 app to a Universal App, and in turn I will provide advice on how to avoid/tackle these issues.
AngularJS directivesMauro Servienti
Directives in AngularJS are one of the most powerful concepts and one of the hardest things to understand and manage. In this session we will start introducing directives basic concepts and we will deep dive into the programming model, and challenges, understanding how to build custom directives starting with a simple breadcrumb to move to a much more complex typeahead.
Moving batch scripts to the cloud using Azure Web JobsSteve Spencer
This session will introduce Azure Webjobs and show examples of their use.
Event sourcing in a “not-always” connected worldAlessandro Melchiori
In a "not-always" connected world we have a problem: merge business transactions across network boundaries. In this context, event sourcing is useful because we can think to our system's evolution with state transition.
Synchronize (only) data is not so easy because we lose why something happens. Events are the answer to trace and synchronize business process and identify "merge conflicts".
Restructuring and Migrating into and out of TFSRichard Fennell
We have many options to manage our application lifecycle. Irrespective of the tools in use there is a good chance that any choice you made in the past will not seem so sensible now. In this session I will look at the tools available to restructure and migrate in and out of on premise TFS as well as to Visual Studio Online, whether using TFVC or Git source control.
Break free, be agile!Preet Singh
Agile is finally here, it is now well know even in remote parts of Yorkshire. We have started following it. Can we finally say we are agile and successful with it? I have been trying to make sense of it for past few years. Why? What? and then most importantly How?. In this talk I aim to take you to the land that we forgot in the midst of implementing agile. This is my account of how my experience with agile and how the agile mindset forced me to visit that forgotten land again. It made me realise that it all starts with Code and the rest is just detail. We will look at how making our code agile, makes us agile. We will look at how breaking some rules around planning, certainty, architecture and perfection actually helps us to be more agile in our code and respond to change quicker.
Lessons learnt scaling a mainstream restful APIDavid Whitney
A walk through the design, launch, and evolution of a RESTful API that ended up powering some of the largest charity campaigns in the UK. We'll go through what worked, what didn't, along with some tips and advice to help you grow your own API to be ready for consumption by just about anyone.
From Scratch to HTML CSS and JqueryJon Bulmer
In the DDD conference last year we attended a session, talking about the need for IT professionals to go out and inspire our children with Scratch. We tell the story of the journey in that 12 months and introduced www.zero2coding.co.uk. The platform we are developing to turn the dream of coding for all into a reality.
We have worked with teachers, children and have faced red tape. With persistence, patience and shear determination young coders are starting to get hooked, looking to move their Scratch projects to the next level with HTML CSS and Jquery.
Come and see what we have done and see where the next 12 month will bring us.
Using Xamarin Forms to make a cross platform Agenda AppRichard Garside
Why doesn't everyone just use Windows Phone?
Then I wouldn't need to worry about having multiple versions of my app with business code and UI in a variety of languages. Plus I could use C#, not have to remember how Java works, learn if Swift is worth learning or even have to think about Objective C.
The Xamarin Tools have brought the Mono version of .NET and C# to iOS and Android and now with the recent release of Xamarin Forms they've brought XAML and the possibility of cross platform (but tailored) UI as well.
In this session I'll be showing you how to create a simple agenda app for a conference that will work on Windows Phone (clearly the best phone OS), iOS and Android. You'll see how you can use the same XAML for you UI, but still have an app that looks totally at home on whatever platform it is compiled for.
Automating deployment and testing with Visual Studio Online and OctopusDeployJoel Hammond-Turner
Last year I showed how OctopusDeploy was a great (and simple) deployment platform. Now, I'll show how the latest V12 build templates in Visual Studio Online can let you automate building, deploying and testing software - whether it's a Nugettable class library or your brand new social website.
Visual Studio CodedUI: Improving Resilience in your Automated testsRiccardo Viglianisi
CodedUI is a powerful Test Automation technology within Visual Studio, unfortunately it's still all too easy for your Automated Tests to break in the course of a project as the UI in evolves.
You can reduce the chance of this happening (and reduce refactor time if it does happen) if you go about writing your tests in the right manner. I'll be showing the methods I've adopted to achieve this and then demonstrating them with practical examples.
What is Desired State Configuration and how does it help me?Richard Fennell
Desired State Configuration (DSC) is the Star Trek technology for managing deployment. The captain says 'helm make it so' and it just happens.
A big statement! Does is work as advertised?
In this session I will look at how DSC is implemented, how you can extend it and how it relates to deployment technologies such as Chef, Puppet, System Center, Octopus Deploy and Release Management.
RavenDB: an introduction to document databasesMauro Servienti
RavenDB rapidly moved from being one of the emerging kids to a stable and mature platform to built scalable and reliable applications.
In this talk we'll start introducing document databases concepts, such as schema-less and eventual consinstency, and then we'll see how to create applications using RavenDB as the storage backend
BDD, Why you should be doing itRichard Tasker
Behaviour Driven Development has been around for almost 10yrs and yet I still talk to people who think it is just a different way of writing unit tests.
BDD is a process the whole team can use, from BAs to Devs to Testers.
This session will talk about what is BDD, how you can apply it to your process and the advantages of introducing BDD into your process.
Active Patterns in F#Richard Dalton
Active Patterns have been described as F#'s killer feature. This session will take you from the basics to advanced topics like nested active patterns. Along the way you'll encounter some key topics in functional programming including Partial Application (Currying).
If you have some experience of F# or Functional Programming, but haven't quite "got" Active Patterns, this all-code, no slides session will set you straight.
If you are brand new to functional programming and want to get a sense of what all the fuss is about, this session will show you a style of programming that is far removed from the OO/Imperative code that you may be familiar with.
So you've had a killer idea and you need to get a site up quickly but why should you spend time creating the same old code to handle registering your users, storing data, etc?
Come along to this session and I'll tell you all about the different approaches there are and show you an alternative way to build apps that doesn't need you to write any server side code at all yet still provide the functionality you need and possibly more.
Brownfield RefactoringDom Finn
Coming onto a massive old code base with an existing team can be a very daunting task. Especially when everything is going wrong. No change can be made on the code base without something breaking. The database is constantly "running slow" and requirements come in on a scrap of paper that need to be completed in comical time-scales.
I think everyone has seen this before and you have ~3 choices.
1. Get out of there!!!!
2. Join the zombies and just earn your money.
3. Kick some ass and change everything!
I have chosen number 3 a couple of times now and I wanted to share my experiences of what I do in these circumstances, what worked and what didn't work.
There Is No AgileNick McKenna
I’m having an existential crisis. After seven years of practising Agile, it has finally dawned on me that it really doesn’t exist.
Let me take you through the stories of the teams I have worked with and coached and share with you the common insights and developments that Agile teams make as they progress towards their Agile nirvana goal.
I will discuss common innovations that Agile teams have made over the years and also discuss some of the practices that have been discarded and some of the developments that are yet to come…
From CRUD to EDA: a true storyAlessandro Melchiori
When a project starts, all seems so easy: from requirements to implementation. How many times you heard from business: "It's so easy that we don't even need to speak about"...and you start in the (almost) easiest possible way. With CRUD. But what's happens when the business grows? Or when you discover hidden complexities?
This is a true story, about a big financial project, started as a simple one, but with a lot of underground complexity. During the talk I'll describe how we moved from a CRUD approach, to CQRS and EventSourcing, distributing the system among different geographical places, using MongoDB and RabbitMQ
Introduction to S.O.L.I.DColin Mackay
An introduction to the five S.O.L.I.D. principles (Single Responsibility Principle, Open/Closed Principle, Liskov Substitution Principle, Interface Segregation Principle, and Dependency Inversion Principle). In this session we'll take basic OO concepts and expand on them to give a grounding in the SOLID principles. The examples are in C#, but the concepts can apply to any OO language.
Decoupling from ASP.NET - Hexagonal Architectures in .NETIan Cooper
The term 'hexagonal architecture' has come back and forth in popularity since Alistair Cockburn first mooted it, with the Rails community's recent soul searching over its importance or threat just the latest. So what is a hexagonal architecture, why might you want to use one, and why is the 'Rails just falls away' (https://www.youtube.com/watch?v=tg5RFeSfBM4) threat so discomforting to web framework builders. How can we make 'ASP.NET just fall away'.
In this presentation we will look at the Layered Architectural style - when we would want to use one (as opposed to the alternatives) and when it is appropriate how to implement one. We will look at how to implement the Ports & Adapters (Hexagonal's 'proper' name) style, explaining what the different layers are.
We will look at the value the command pattern for implementing our ports , explain why Netflix uses it in Hystrix for reliability. On the way we will discuss Retry, Timeout and Circuit Breaker and explain how we can do better than Hystrix with a Command Dispatcher and Command Processor.
We'll show code throughout, including a look at the Paramore. Brighter framework, an OSS version of the platform we use at Huddle to build this kind of architecture.
As a bonus we will round off showing you how easy it is go from sync to async with this approach.
NServiceBus: introduction to a message based distributed architectureMauro Servienti
SOA and distributed has been buzzword for a long time, a message based architecture that embrace the SOA principles is the real solution to a scalable and distributed environment where HA or/and temporal decoupling are a must.
In this session we will introduce messaging concepts and see how NServiceBus, a powerfull toolkit to rule all the aspects of a messaging transport, can dramatically simplify the development process.
Using F# for Line of Business ApplicationsIan Russell
C# is a great language for developing Line of Business applications but F# is even better! If you want to write code that expresses your requirements clearly, ensures correctness and supports rapid, and fun, development then guess what, F# does all that and more!
No prior experience of F# is necessary for this session but be warned, once you've seen what F# can do, you won't want to go back to C#!
Getting started with SVGPeter Shaw
All the "kewl kids" are doing fantastic scaling graphics in thier UI's these days, but how?
Scaleable Vector Graphics (SVG for short)
Simple, SVG unlike the more traditional bitmap way of doing things, are infinitely scaleable. Imediately this means no more producing three versions of an image for your site (Mobile, Normal and Retina)
SVG however has much more under the hood than just making super scaling logos and Icons, it's a graphics description language that's fully controllable from CSS and as easy to work with as regular HTML tags.
In this short session, I'll give you a basic introduction to SVG, how you can use it inline with your HTML and set you in the right direction to start making your web UI's nice and scaleable.
An Actor's Life for Me – An introduction to the TPL Dataflow Library and asynchronous programming blocksLiam Westley
Every version of the .NET Framework has brought improvements to asynchronous and concurrent programming. While .NET 4.0 brought the async/await model which is useful for improving UI responses and server applications, it can sometimes still be tricky to marshal multiple threads within longer processing pipelines.
The Dataflow Library consists of a Nuget package built on top of the Task Parallel Library (TPL). It harnesses the actor-based programming model to provide a set of dataflow blocks data structures that buffer and process data, which you can connect together to form custom pipelines with messages passed between the blocks.
By using the Dataflow Library you can concentrate on the messages and actions being performed, while the blocks marshal the messages, provide concurrent message processing and buffering as well as supporting cancellation and exception handling.
Owin: The great asp.net rebootsteve higgs
Asp.net has a long history of delivering web applications; unfortunately this history comes with a fair amount of baggage. This all changed with the introduction of owin. Owin lets us achieve a level of efficiency and portability using asp.net that would be inconceivable using the existing .net infrastructure.
In this session I will cover:
The whats and whys of owin, how's it different to what we already have? What do we get out of it?
Owin hosts and middleware
Running owin on multiple platforms using mono
Fast and simple in-memory integration tests using the owin testing infrastructure
Owin in .net vNext
In short: Owin - it's really fast, extremely portable and you should use it; here's why.
Quick and Dirty SOA with RavenDb and Reactive ExtensionsSean Newham
As in Life, so in Memory Management: Premature Promotion Produces Poor Performance and a Menagerie of Other Grotesque BlundersBart Read
Both the JVM and CLR provide automatic memory management with garbage collection. Developers are encouraged to write their code and forget about memory management entirely but, whilst ignorance is bliss, it can also lead to a host of problems further down the line. And if you move back and forth between platforms the differences can sometimes trip you up!
In this session we’ll compare and contrast memory management in both the JVM and CLR. We’ll look at some of the “classic” blunders that cause trouble and how to avoid them. We’ll also talk about the tools that can help you get to the root of problems when they do occur.
Developing Prototypes in a Connected WorldMark Stevens
The modern world is replete with devices collecting information about the environment, people, nature and the performance of many modern devices even the humble kettle. For many developers this presents a change in mindset moving from the macro world of desktop/web environments to the smaller environment of microcontrollers.
In this session we will look at some of the options available in the maker / hobbyist development market including:
- Netduino (.NET Microframework)
- Raspberry Pi
- ST Discovery boards
The session will conclude by looking at connecting such devices to the macro world and the Internet of Things (IoT).
So you want to be a Tech Lead? 10 things you need to do to succeed.Joel Hammond-Turner
"Tech Lead" is an amorphous job title - is it all about the technology, or all about leadership? What should the balance really be?
And it can also be a complex and thankless role too - particularly if you find yourself becoming the go-to guy (or gal) for everyone from the intern to the product manager.
In this talk I'll cover (at least) 10 things that I think are essential to success in both areas, including how to address technical debt, herd your PMs and make sure your development team has a steady flow of work (and beer, pizza or other "motivationals").
Web components with MVC & Polymer JS (Quick Start)Peter Shaw
You heard there's a revolution coming right?
Well there is, and it's called "Web Components".
Most of you are used to creating things like "HTML Partials" in ASP.NET MVC, or using custom controls in Webforms.
You can build an entire application if you want too, then simply place it into your web page using:
In this session, I'll show you how to get started in an ASP.NET MVC Application using Google's PolymerJS system, getting you started on the road to true HTML components encapsulation, ready for the road ahead.
Refactoring Away from Test HellAlastair Smith
Your builds have been red for years; maybe they’ve never been green. Someone learned about mocking frameworks at a conference years ago, and now you can’t sneeze without breaking a test. There’s 30 lines of setup and you can’t tell what your tests even do. What happened to the promises of flexible, well-designed code that unit testing and TDD made?
In this talk, I will cover immediately-applicable ways to refactor your way out of test hell, and demonstrate some open-source libraries to help you clean up your test code, all based on my encounters with dodgy tests from my current and previous jobs. You will come away with practical examples of how to make your tests work for you rather than against you, including recommendations for the correct use of mocking libraries.
Functional DDDAlessandro Melchiori
Very often we approach, more or less unconsciously, DDD's principles only with object-oriented paradigm, without exploring if other "style" can live better with aggregates, value objects, commands and domain events. Well, yes: there is 'other' out there... In this session we will see how a functional language as F# can lead to a more intuitive and compact implementation of our domains.
Near Field Communication and Proximity in Windows and Windows PhoneSteve Spencer
In a world of devices we are continually wanting to communicate more and more with the devices around us. This talk will go through the technologies being integrated into tablets and phones which can be used to communicate between devices whether that is through tapping and NFC or with devices close by using Bluetooth and WiFi Direct.
Join the Dark Side - Why developers should choose managementCeri Shaw
Have you even thought to yourself "There's no way I'd ever want to be a manager” ? If so then this talk is for you!
‘Management’ is seen as a bit of a dirty word in the development community, so much so that we’ve had to give it other names so that people will do the job (Scrum master for example!) but it doesn’t have to mean PHB’s and David Brent. It isn’t anti-agile to have managers and there’s a real need for more developers to step up into management roles. It also doesn’t have to mean ceasing to write code.
This talk is based on my own journey from developer to manager. I’ll describe the different types of management, why we need developers to do the job and why the job might appeal to you.
By the end of the talk I aim to convince you that management is something you can and should do!
Authoring Useful Software LibrariesDavid Whitney
We'll work through some common sense advice for building software libraries touching on what makes a package or library good and worthwhile, how to keep the barrier to entry low for users, and helping potential contributors extend your code. We'll also touch on error handling, bridging libraries and writing just enough documentation.
Not just layers! What can pipelines and events do for you?Ian Cooper
When developers reach into their toolkit for architectural styles, they often explicitly uses layers to separate their domain from their presentation logic or infrastructure. They often implicitly use the repository style, with independent components updating the database. But there are many more styles out there, which can help you build your applications. In this talk we look at two of them: pipelines and events. Pipelines let us deal with streams of data effectively, and events provide significant advantages for loose coupling.
We discuss where these styles are appropriate and how to implement them in .NET. As both approaches can be used in-process or out-of-process we'll show examples of both, leading to an understanding of how distributed systems communicate using ideas such a SEDA - the staged event driven architecture.
It's all about the User, man! (Authentication and Authorization with OWIN)Joel Hammond-Turner
Google, Facebook, Twitter, even Office265 - these days getting a user to sign in to your web application is all about federating identity. And with OWIN, it's easier than ever to integrate with these identity providers. In this talk I demonstrate hooking these providers up, how to avoid rolling your own user database, and what other great libraries are available to help.