Talks

Proposed Talks for DDD South West 2020

There are currently 70 proposed talks for DDD South West 2018. Interested in speaking this year? Why not register and propose a talk?.

From four to forty in four years - scaling the IT Team at PureGym

by Richard Allen

Between 2016 and 2020, the PureGym IT Team grew from 4 to 40 people. During that time Rich worked closely with them to navigate the tricky process of scaling. This talk is a journey through that growth period and discusses the variety of processes and practices that were applied in order to stay "Agile".

Making a noise with F#

by John Stovin

F# isn't just for finance: in this talk, I'll show you how to use it for audio synthesis.

Thinking Functionally

by John Stovin

C# is embracing functional features: learn how to use them effectively.

Deploying globally resilient websites

by Callum Whyte

Delivering maximum uptime and the fastest response to our end users all over the world is very important... So we deploy our application to powerful servers and hope for the best. Working at distributed scale brings challenges and trade-offs - from handling cache purging to balancing data consistency vs. performance. Callum will share his experience of adding world-class resilience to globally distributed (ASP.NET) web applications.

A Centennial's guide to learning to code

by Callum Whyte

Do you still need to learn computer science to succeed in the industry? Do you start with C++, or Java or something else? What about Blockchain? Serverless? Or whatever the latest JavaScript framework is?! Callum will share his experience as a self-taught programmer, his motivations and challenges, and the languages he learnt, plus some opinions on where to get started.

TDD and the Terminator - An introduction to Test Driven Development

by Layla Porter

Getting started with Test Driven Development (TDD) can be very challenging. It requires a different mindset and approach to writing and developing code. However, once in that mindset, it is very difficult not to write tests first. I will show you how to get started writing tests first with practical examples on how to reprogram a T-800 series Terminator so you can start using TDD in your own applications (or killer robots from the future).

Full-Fat Functions

by Layla Porter

Azure Functions has come a long way. In this session, we will move beyond demoware and look at the development of Azure Functions from start to production. This includes choosing the right plan, finding use cases for durable functions, logging and monitoring, storing data, and digging into the advantages of deployment slots.

Feature Management in .NET Core

by Kevin Smith

We'll take a look at what feature toggling is and the different types of feature toggling we can apply in our .NET Core applications.

A more flexible way to store your data with MongoDB

by Kevin Smith

If you've been anywhere near software development, the norm is to store your data in a relational form, but what if there was a different way?

MongoDB vs SQL Server

by Kevin Smith

David and Kev will go head to head showing the advantages (and disadvantages) of their preferred database technology.

Growing the Developer Experience

by Chris O'Dell

When building software, we almost always think of our customers - the users of our product. But, what about the software we use to build our product? The tools the engineer uses for the job? These tools build the Developer Experience of your engineers. This is an oft-neglected aspect of the software building process. At Monzo we gathered metrics around our development and deployment process to try and find the bottlenecks. We also turned to our User Research experts for guidance and applied their discovery techniques to our engineers so we could learn about and improve their development experience. By sharing our experience, I hope to inspire you to grow your own Developer Experience by treating it as a product.

Monitoring your Infrastructure and applications in a Cloud Native world using Prometheus

by Joseph Woodward

So you've deployed your application and infrastructure changes, but how do you know they're functioning as expected? How do you know they're not causing your users pain? Since its initial inception in 2012, Prometheus has quickly established itself as the canonical monitoring and alerting tool within the Cloud Native space. In this talk we'll take a hands on approach to monitoring a whole range of applications and services, including .NET Core applications, Docker containers, Databases and even GitHub repositories and other external APIs.

Contract testing for microservices

by Jorge Marin

Do your unit tests always pass but nasty bugs still appear when your microservice gets to production? Here is a new way of testing microservices before deploying them live, using contract testing. In this talk I will share what is contract testing, what are its benefits and will analyse a tool called PactJS.

New test pyramid for microservices

by Jorge Marin

In a post-monolithic era, the test pyramid should be revisited to better fit new architectures, solving new problems with new approaches. This talk will review the software test pyramid and propose an improved test pyramid based on latest architectures/problems, adapting our test strategy to the new world so we can trust software again.

Naming in testing is also hard

by Jorge Marin

Software testing does also experience one of the hardest problems in the software world: naming things. In this session we will try define the boundaries of different testing levels and strategies, giving them an appropriate name based on their function. This will help the whole software testing community referring to things by their name rather than explaining a bazillion times what an integration test means to you or your organisation.

Async Javascript error handling

by Jorge Marin

Writing try/catch blocks are not fun. What if we could implement in Javascript error handling the Golang-way and save a couple of lines while making the code more readable? Also, what happened to my async function stack trace? This talk will focus on error handling for async functions. New techniques, saving the stack trace for better error tracking even with async functions, the new error trace feature in NodeJS 12 and more.

Avoiding misleading data representation

by Jorge Marin

How many times have you looked at your Grafana dashboard, full of numbers and graphs, unable to tell what was the real picture and the current status of your services? Are you sure the way you are displaying your metrics is not masquerading important events? Are you monitoring the right thing? Let's unravel all the pitfalls together!

AWS ECS: A story about memory and CPU

by Jorge Marin

If you still struggle to understand AWS ECS memory and CPU reservation, or you fear running out of memory, or you thought you had more memory but your tasks still get killed. If you are always 100% CPU. Let's unravel this together and set a list of best practices for maintaining your ECS clusters

Building Cloud-Native Application Bundles (CNABs) with Porter

by Mike Larah

In this talk, you'll learn what the CNAB (Cloud-Native Application Bundle) packaging specification is, and how it can help you bundle, install, and manage your distributed applications. We'll also take a look at Porter, a open-source tool for CNAB, with demos showing how to build and publish your first bundle.

Infrastructure as Software

by Paul Stack

It's 2020, cloud development is now the becoming the default standard of applications. It's time to start treating our infrastructure that manages, creates and maintains these applications as software themselves. We can't do that in "languages" like JSON, YAML or DSLs... enter Pulumi with it's real language support!

A more flexible way to store your data with MongoDB

by Kevin Smith

If you've been anywhere near software development, the norm is to store your data in a relational form, but what if there was a different way?

Developing Actions on Google with .NET

by Poornima Jayamohan Nayar

Actions on Google lets you extend the functionality of the Google Assistant with Actions. In my session, I will cover the basics on how to develop conversational Actions on Google with .NET

Debugging the Brain

by Laura Weatherhead

We will look at the psychology and cognition that comes into play when we face mental obstacles, and how a better understanding of what's going on in our brains could make it easier for us to solve problems. This talk will explore common difficulties we face when problem solving and reasons why these might occur - the aim of the talk is for listeners to gain an appreciation for the complexities of the brain as well as new approaches to try when programming is feeling futile!

An opinionated journey from zero to one

by Savvas Kleanthous

A set of tools and practices that can help you to take an idea to production, or how to build the right thing, right.

Keeping up with .NET web development in 2020

by Jon Hilton

Keeping up with all the changes happening in .NET web development is a tough gig; you face endless choices of framework, technology, language... It's no wonder you feel overwhelmed, anxious and worried about making the wrong choice. No-one wants to spend their days wrestling the framework gods just to get a "simple" application over the line. Thankfully, help is at hand. Apply a few core principles to your web apps and you can ride each technology wave as it comes and goes...

Migrating to .NET Core: A real life example

by Craig Bridges

Have you considered migrating your existing codebase to .NET Core? Scared of taking the plunge? Fear not! Migrating is not as scary as it seems. In this talk, I'll guide you through the process we recently went through to migrate our flagship application.

Stop Blaming Your Users for Bad Passwords

by Scott Brady

Users cannot secure your web applications through password choice alone. You cannot blame them for this; it is not their problem to solve. It is ours, as security professionals, identity professionals, and software developers. Typical 2FA implementations such as TOTP and push notification have had some success, but they can be frustrating to use and are still vulnerable to basic phishing techniques. OWASP and NIST are now recommending FIDO2, which offers a realistic solution in the form of frictionless, possession-based authentication that has inbuilt anti-phishing techniques. But what does FIDO2 look like to a developer, and how does it actually work?

An introduction to Blazor

by Poornima Jayamohan Nayar

Run C# code on your browser, no plug-ins, no extensions and that's Blazor! My session will give an introduction to Blazor - discussing what is Blazor, what is Blazor WebAssembly, what is Blazor Server. Attendees can gain a good understanding of this game-changing platform which could offer clarity when it comes to UI.

Want to know about spices? Lets talk to Alexa!

by Poornima Jayamohan Nayar

Did you know that a clove tree can survive up to 400 years in the wild? In my session, I talk about developing an Alexa skill which gives you information about spices...

You have a blog? Lets turn it into an Alexa Flash Briefing !!!

by Poornima Jayamohan Nayar

In my session, I will be talking on how you can convert your blog into an Alexa Flash Briefing.

Decision Making in The Face of Uncertainty

by Gary Short

Decision making in the face of uncertainty is one of the hardest things to do. In this session, we'll borrow methods from machine learning, statistics, trading and computer science to compose a methodology which will allow you to make the best decision possible given the evidence you have to hand, and to also hedge against you being wrong. Whether you're a "techie" or a "civilian" everyone can benefit from learning this important methodology

How to Hack an Election

by Gary Short

Think your democracy is safe? Better think again. In this session I'll demonstrate the techniques that the 'black hat data scientists' use to get the result they want from any election or referenda. In this entertaining talk, I'll demonstrate techniques, both at the macro level - how to attack an election systemically - and at the micro level - how I can manipulate individuals to do exactly as I want them to do.

A Day In The Life of A Data Scientist

by Gary Short

In this hour long session I'll walk you through a typical day in the life of a data scientist (me). We'll look at a real world question and how I go about working out the answer.

Provisioning your Cloud with .NET

by Shahid Iqbal

This talk will focus on showing Pulumi, which allows you to provision infrastructure using .NET code. This is a step beyond having to deal with long and confusing ARM/Cloud formation templates or trying to shoe-horn additional logic into Terraform templates.

Wrapping the AWS DynamoDB client with F#

by Nicholas Blair

Examining the .net DynamoDB client and improving the developer experience by leveraging the domain modelling power of F#.

Cosmos DB cost and performance modelling

by James Broome

Look beyond the marketing to understand how, when and why you should consider Cosmos DB. Based on real world experience, we'll explain the complexities and gotchas in building realistic cost and performance models.

Evolution of Software: Coping with change

by Elizabeth Hanson

"Expect the unexpected" Change is a constant in life. This is especially the case when it comes to customer requirements and the changing ecosystem which software systems sit in. What types of change should you think about when designing a software system? What can you do to minimise the risk of change? This talk will look into the causes of change and how to minimise their impact.

Writing Fewer Unit Tests with ASP.NET Core

by Steve Gordon

Would you like to write fewer unit tests? ASP.NET Core ships with a powerful in-memory integration testing harness which can considerably reduce the need for unit testing. In this session, Steve will describe and demonstrate how to begin writing integration tests for your ASP.NET Core projects.

All types of fun

by Chester Burbidge

Come and learn about the best kept secret in .NET programming! Interaction with data stores and formats is usually done through libraries but this talk explores the idea of integrating these sources into the programming language itself using Type Providers.

Functional Domain Modelling in F#

by Ian Russell

In this session you will be introduced to the F# type system and learn how we use it to model and solve interesting domain problems when writing line of business apps and websites.

Alphabets to Zip Codes - Localisation beyond translation

by John Kilmister

It can be easy to think of Localisation/Localization as simply changing a few spellings, translating to a new language or handling right to left text however the reality can be a lot harder. This talk goes over some of the considerations of design and technical implementation. It also briefly looks at how .net can both help and hinder the process.

The Road to Continuous Deployment

by John Kilmister

Continuous deployment has been an idea that has been around some time and has gained more momentum with DevOps movement however it is not yet something every team has achieved. This talk looks at the stages from continuous integration, continuous delivery, continuous deployment and some of the many challenges that are faced on the way.

Transforming the impossible - a successful Lean story

by Matteo Emili

What happens when you try to transform a team which really wants a waterfall approach? How difficult is it to transition to an Agile way of working, with tangible results? This sessions covers a 12 month period where a team was completely transformed from traditional waterfall to proper Lean, as well as all the errors and the mistakes along the way.

Automations and a touch of DevOps for a fully resilient IaaS cloud estate

by Matteo Emili

This is the real world story of how to make a large IaaS cloud estate run without breaking the bank. Automations, DevOps and modern engineering practices are the main actors of this story.

Let’s move to pipelines as code, it’s about time!

by Matteo Emili

Moving to YAML pipelines should not be daunting, to the contrary - there is so much goodness to unlock that I find really difficult to hold back. Let's take them for a spin on both the CI and the CD side, and we can figure out how to migrate to them in a sustainable way.

How to make security pervasive without falling into the DevSecOps trap

by Matteo Emili

DevSecOps is becoming more and more the buzzword of the day - but is it really 'the silver bullet' for software engineering? How do we implement security practices in DevOps? Do we need extra buzzwords? These and more questions will be answered in this talk!

CQRS and event sourcing in serverless Azure

by Duncan Jones

Using Azure serverless functions, Event Grid, CQRS and event sourcing to build an extremely low cost system that scales to meet demand.

Introduction to event sourcing

by Duncan Jones

An introduction to the idea of “Event Sourcing” and discussion of how you can use it as the basis for a distributed system. Emphasis on the underlying ideas rather than focusing on a specific framework or language. Beginner’s level talk, almost no code but mostly diagrams, discussion and Lego.

Building Language Parsers with ANTLR

by Alistair Evans

As software engineers, we often find ourselves wanting to parse something. A regex might get us a little way, but we hit problems as soon as anything gets even slightly complicated. To do things properly we need to build an actual parser. This talk will introduce you to the ANTLR parser generator, which lets you quickly create a powerful language parser, and we'll actually create a couple of parsers in C#, from scratch, in the session!

Building event driven system with Kafka

by Tomasz Bartoszewski

You likely don't need Kafka. Yes, you've read that right. But it's still useful to understand how it works and what makes it scale well. I will walk you through building producers and consumers, partitioning and replication. We will have a look at retention of data and log compaction. By the end of the session you will understand principles behind Kafka and when it's a perfect tool for the job.

Satisfaction with abstraction, from individual contributor to leadership

by Gwen Diagram

What are the attributes of a great leader? An image that often comes to mind is JFK and his speech about the moon landing. Someone who can bring others along with their ideas. However, there is a lot more to being a great leader than just selling ideas. Leadership should also focus on caring for others and helping them to become the best that they can be. Gwen moved from being an individual contributor to a leadership role a few years ago. Moving from being an individual contributor on a team to being in more of a support function is hard. It’s easy to put pressure on yourself to be the superhero and as with the superheroes in comics, it's tolling on your mental health. Most people get energy and satisfaction from working together in a team or completing tasks but, when the team is taken away and the tasks are abstract, how can you continue to get satisfaction?

Cynicism Doesn’t Build Products

by Gwen Diagram

How many software products have you worked on that have been ruined by cynicism? Not just scepticism but downright cynicism. As a software tester, a large part of my role is to be a skeptic but sometimes this crosses over to cynicism. Identifying risks in code, architecture and products is helpful, dismissing ideas is not, especially as this behaviour can rapidly spread. What if the team becomes cynical? How can we break out of the cycle and actually start building software? It’s very common for a team to pick up a piece of software and look at what has been written and decide, it’s simply trash. People believe that it can be built better. That the tools that the seemingly legacy software was built in have been superseded and the product is no longer fit for purpose. Cynicism for what is deemed as legacy but optimism for the brave new world.

Gwen will look at cynicism, scepticism, optimism and more as attitudes to building products, legacy and green field. She will identify some attitudes that help build, strong, long lasting products. If cynicism isn’t cool anymore, then what is?

Anatomy of ASP.NET Core Requests

by Steve Gordon

Have you ever wondered how a browser/client request actually results in a response from ASP.NET Core? Have you ever been constrained by the default behaviour of ASP.NET Core and wanted to change how it works? If so, then this talk is for you.

Building Microservices with .NET Core

by Steve Gordon

In this session, Steve will introduce techniques for building a microservices architecture with .NET Core. Learn from some hard learnt lessons about what not to do and what to focus on. Steve will introduce the new worker service template in .NET Core 3.0 and show how it can be used to build robust worker services with ease.

Beyond HTTP in ASP.NET Core 3 with gRPC

by Steve Gordon

In this session, Steve will introduce you to gRPC, a modern, high-performance RPC framework for inter-service communication. We'll look at how gRPC stacks up against existing REST-based communication and explore the benefits this technology has to offer.

Getting Started with Unity and AR/VR for the .NET Developer

by Davide Zordan

At DDD, I will present what I learned building a small game, set in a mysterious dungeon using Unity and the SteamVR plugin. We'll explore how to import assets from the Unity store, how to implement locomotion techniques and interactions using the motion/touch controllers, including some tips for optimising performance and avoid motion sickness.

Evolutionary architecture in the natural world

by Ian Johnson

Nature has developed extremely complex systems that can be significantly more complicated than the ones we build. The aim of this talk is to look at how nature has solved problems that we face today and to identify areas where we can aim to do better. Would you consider yourself to be a monolith or a system of microservices?

Write Better JavaScript with Unit Testing

by James Bender

Most developers don't unit test their JavaScript, mostly because they don't know how. This session will give you the knowledge you need and show you the tools that will help you write better JavaScript with unit tests.

Building REST API of Your Dreams

by James Bender

This session will demonstrate the most common anti-patterns used in building REST-based API's and how to avoid them.

I Promise to Give You a Callback if You’ll Just Await: Working with Asynchronous JavaScript

by James Bender

This talk will demystify how the JavaScript event loop handles asynchronous calls, the various methods to create/manage async calls, and a look at where the language is going in terms of async.

From Event Storming to Working API Microservice

by Andrew Young H Chaa

No fancy airy fairy talk of concept. I will share brutally honest, down-to-earth journey of building a microservice from scratch. We will start from event storming, defining events and behaviours they trigger, and finish with working API endpoints, domain events, event handlers, and integration service bus messages.

Outbox Messaging Pattern for performance and message reconciliation - (Gary and Andrew)

by Andrew Young H Chaa

Don't slow down your APIs by raising integration events in the lifetime of an API request. Use Outbox pattern and let a separate worker process deal with integration events and other complex IOs. Your service will be much more resilient and fast performing.

Machine learning in the browser with TensorFlow.js

by Håkan Silfvernagel

In order to start out with machine learning you typically would need to learn Python, Tensorflow, Jupyter Notebook etc. But what if you could run your machine learning straight in the browser. This can be done through Tensorflow.js. In this session you will get an introduction so that you can use it in your own projects.

Why you should consider Web Assembly in your next frontend project

by Håkan Silfvernagel

During the last decades more functionality has been pushed into the client by using the latest JavaScript framework. But what if we could be using native code in the browser in order to run computations faster and reuse backend code in the frontend? Web Assembly can help you achieving this.

Affective Computing – bringing humans and machines closer through emotions

by Håkan Silfvernagel

Emotions play an integral role in decision making, cognition, perception, learning and more. Affective computing is a field with the goal of making our computers aware of our emotions to be able to better interact with us. Affective Computing brings humans and machines closer through emotions.

An Introduction to the use and creation of GitHub Actions

by Richard Fennell

An overview of GitHub Actions for people new to them, including a demo of their creation. Followed by a discussion, and demonstration, of how to convert a custom Azure DevOps task written in Node.JS to be a custom GitHubAction hosted in the GitHub Marketplace - what works and what does not.

Building next generation web apps with Blazor

by Chris Sainty

Blazor and WebAssembly are game changers. Developers can now write powerful client-side applications using C# running directly in the browser. In this session, we'll go beyond the theory and see what it's like to actually write Blazor applications - exploring loads of great features along the way.

What is Blazor? And why’s it so exciting?

by Chris Sainty

Blazor! Microsoft’s game changing new front-end framework for building single page applications using C#. That’s right, C# running in your browser. No plugins, transpilation - this is not Silverlight or WebForms 2.0. Come learn what Blazor is, how it works and how it could be the last framework you’ll need.

.NET Core Dependency Injection – The Booster Jab

by Steve Collins

So you've got to grips with the basics of Dependency Injection in .NET Core? Join Steve Collins for a whistle-stop tour of how you can avoid some pitfalls, go beyond the basics and even get a bit Func<T>ional

.NET Configuration is Easy ... Right?

by Steve Collins

Join Steve Collins on a trip through application configuration from .NET Framework 1 to .NET Core and learn how to apply security, design patterns and SOLID principles to your configuration along the way. There's a lot more to configuration than meets the eye!