Session details from previous DDD North events.
What Is The Point Of ... Microsoft ?Liam Westley
The demise of Microsoft has been predicted by many; Microsoft as a platform for software and specifically their development tools and ecosystem.
The reboot of Microsoft has been dramatic over the past few years, embracing OSS, ASP.NET vNext rewriting the core of what .NET represents, and the final promise of deployment to any platform with .NET core. Their purchase of Xamarin provides a cross platform mobile solution, and Azure is thriving even when there is no Windows Server in sight.
Liam will take a subjective stroll through where Microsoft is heading, and what the changes might mean for existing Microsoft developers and whether a .NET renaissance is about to happen.
Introduction to Event SourcingDuncan Jones
"Introduction to Event Sourcing" is a beginner level introduction to event sourcing, a data storage idea that works on capturing the change history of the system as a sequence of events and recreating the state from this history.
I will also show how it fits into the larger concepts of CQRS and up to domain driven design - with some discussion on how to host and use event sourcing in microservices.
Beginner's level talk (101), no code but mostly diagrams, interactive discussion and Lego.
User Story Mapping for BeginnersColin Mackay
Sometimes it is difficult to work out how to prioritise the backlog and effectively work iteratively while still holding on to the big picture. What do you put in your MVP (Minimal Viable Product)? What then goes in each incremental release to give your users more and more useful functionality? Storymapping is a technique for solving this problem and getting your solution to your users faster.
In this interactive session I’ll explain how you go about creating a story map and I’ll get you to create one. Lots of sticky notes later you should have a fairly good grasp and be able to use the same technique on your own projects to better manage your backlog and keep everyone aware of the big picture while still working on individual stories.
Sticky notes and sharpies will be supplied.
Enhancing your enterprise with modern Windows appsJames Croft
Based on experiences building modern business applications to update legacy processes, this session will aim to help give a better understanding to Microsoft's universal Windows platform and how it can improve the lives of your enterprise customers using legacy applications.
You will learn the tooling that is available today to help in migrating classic Windows applications to the universal Windows platform. You'll also learn about open source projects which are being maintained and built to help you design and build great user experiences for the platform with minimal effort while utilising your classic application's code with demos to get you started.
While taking a look through modernising your applications interface and bringing it into the modern world, you'll learn how the power of the universal Windows platform will allow you to take those business applications to bigger and better devices such as the Microsoft Surface Hub and mixing realities with the Microsoft HoloLens and Mixed Reality headsets, exclusive to Windows 10 apps.
Become a chatbot builder with Microsoft Bot FrameworkJames Mann
The way in which customers expect to be able to interact with companies is changing. We'll look at this change and how you can take advantage of it by creating chatbots using the Microsoft Bot Framework. We'll cover the basics, including what tools you can use and where to go in order to get started. Then we'll see how we can use Microsoft Cognitive Services to sprinkle AI magic on your chatbots and turn them from simple command-line pretenders to useful tools that customers will love. Come along and become a chatbot builder for your organisation today!
Successfully Decomposing Your Monolith or UpdateUser Means Nothing To MeSean Farmar
Designing a system is hard, it’s even harder to build a distributed microservices style architecture…Let's try and walk through a simplified example of carving our our entities, bounded contexts and carving out the processes on the road to building better applications.
Building (micro) services in .Net V2Sean Farmar
In this talk I will show how we can build deploy and monitor (micro) services using the .NET platform.The code and demo will demonstrate how you can decompose your domain and also show a UI Composition example.
SOA lessons learnt (OR Microservices done better)Sean Farmar
Service Oriented Architecture has been around for awhile, now Microservices is the new black, that’s cool, but can we learn from when we failed and succeeded implementing SOA? There are some really useful lessons we can take and avoid the pitfalls.
Creating Facebook Messenger chatbots with Microsoft Bot FrameworkJames Mann
In this session we look at taking advantage of Facebook Messenger functionality to enrich our channel specific experience. We will look at webviews, custom cards, quick replies and persistent menus among other interesting components which you will be able to take away and bring your chatbot to life!
Making enabling apps for disabled people in XamarinDennie Declercq
Making apps for people with a disability with Xamarin tells you about making apps for people with an intellectual disability. Former, people thought people with an intellectual disability cannot read, thus a smartphone isn’t really realistic for them. But nonprofits and startups started to explore this userbase and found out a way of apps people with an intellectual disability can use.
Why is this important? Well there are two big reasons: first of all: If people with an intellectual disability can use your app, they can get info about their life-situation and that empowers quality of life. Smartphones by example uses Text-To-Speech and principal the need to “can read” isn’t there anymore.
For you as developer or startup there’s also a big benefit of apps for these people: nearly every market is discovered for mobile apps. Every market has big concurrency. But the market of apps for people with a disability is quite less discovered, so if you are good, you can rule a hole market!
Visual Studio Online with Git for small teams and hobby projectsDennie Declercq
This session is about creating and managing VSO projects with GIT as source control. This session is specially made for small teams and hobby projects.
Interactive APIs with GraphQLSam Hogarth
GraphQL is Facebook's language-independent technology, used to create interactive APIs. It provides an alternative approach to REST-based APIs, making your data queryable, explorable and efficient (from a networking point of view).
In this session we will develop an understanding of the motivations behind GraphQL and under what conditions the technology can be effectively deployed. We'll build a GraphQL schema and demonstrate the awesome interactivity that a GraphQL endpoint opens up!
Resilient and Scalable : what does it means and how can Azure help?Steve Spencer
Everybody wants their web apps to be scalable and resilient. Its easy to do when you build it in but what about those existing applications.
Building web apps that are both scalable and resilient is challenging. How can you take your existing on-prem application and move it into Azure?
Azure is so big what services could I use to help me?
This talk discusses the issues around making an existing web app scalable and resilient and talks about some of the Azure services and how they can help you achieve your resilience and scalability goals
Microservices and Containers: How Service Fabric can help build your distributed applicationSteve Spencer
Whether you have existing services or containers or whether you are building a new system from scratch there are numerous ways in which you can deploy. Managing and deploying your microservices application can be complicated.
This talk introduces the Azure Service Fabric and shows how you can take existing services and containers and deploy then on your own infrastructure, in Azure or another cloud provider; how you can manage these applications and build new services to take advantage of the Service Fabric platform.
The power of mentoringSimone Cuomo
It doesn’t matter what point you’re at in your career, mentoring and being mentored is the key technique for personal improvement at any stage. Knowing your weakness is a strength of its own, and mastering how to mentor will help you in achieving just that, by not only revealing your greatest strength but also your weakness. Learn how to offer help and support to others is actually the best way to help yourself.
The talk will help attendees to learn how to use mentoring not only as a skill to support others, but as a technique to achieve your goals.
Teaching an old dog new tricksIsmail Mayat
In this session we will get down and dirty with clean code.
Expanding on Uncle Bob’s teachings this session will give you practical hints and tips to help you practice clean code. We will cover what clean code is, why you should be writing it and how to write it. If you’ve been a victim of “wtf code”, or even guilty of writing it yourself, then this is a must attend talk for you.
Disclaimer: there may be swearing!
Spot the difference: Automating visual regression testingViv Richards
What if you could not only automate end to end tests which test the happy and functional paths of your applications, but also tests typically carried out by manual or exploratory testing?
What if you could pick up on minor changes to layouts, sizes of elements, colours, text etc? What if these tests were also less flaky, easier to maintain and also faster to execute.
Using Visual regression testing discover how you can gain extra value in the automated tests you create, having the ability to see and assert what the user sees and to assert the sotware UI meets our expectations.
Your Handover Sucks. What’s Your Phone Number?Anthony Dang
Many years ago I was a freelancing contractor. I did a handover on my last day of a small-medium website build. The agency contacted me a few months later to ask questions about how it all worked. For the record, my code was decent, the Lead Developer saw a demo, and my handover documentation was very good.
So what went wrong?
For a start, at 5pm on my last day, I met the project manager (for the first time). He told me that the functionality was not as he expected. Let's just say that their company processes left me wanting.
For this talk I’ll be discussing why a proper development process, and incorporating knowledge sharing (built into day to day activities) effectively makes handovers unnecessary. I’ll be presenting how we at The Cogworks implement knowledge sharing and open communication as part of our processes, and how this benefits to the company as a whole.
Some of the topics I will cover are:
• Client engagement and transparency
• Pair programming, and when it’s appropriate
• Asking for help, and when it's appropriate
• Pull Requests and code reviews as a vital part of quality control
• Behavioural & Integration tests (eg. using Ghost Inspector)
• Cross functional teams, and how they improve communication & throughput
• Kanban pull based workflow and how it improves not only project throughput, but company wide throughput, and maintenance
• Scrum rituals and the importance of Sprint Retrospectives
Service Discovery with Consul.io for the .Net developerJoel Hammond-Turner
Getting your Splunk on - a developer's guide to SplunkJoel Hammond-Turner
Unleash the Crypto Fairies - Advanced Secure Coding in .NETStephen Haunts
Not encrypting your data is a risky move and just relying on the hope that you won't get hacked and compromised is not a strategy.
As a software developer, you have a duty to your employer to secure and protect their data. In this talk, you will learn how to use the .NET Framework to protect your data to satisfy confidentiality, integrity, non-repudiation, and authentication.
This talk covers random number generation, hashing, authenticated hashing, and password based key derivation functions. The talk also covers both symmetric and asymmetric encryption using DES, Triple DES, AES, and RSA. You then learn how to combine these all together to produce a hybrid encryption scheme which includes AES, RSA, HMACS, and Digital Signatures.
By the end of this talk, you will be fully equipped to develop secure applications that protect your companies and customers data.
Hacking Humans : Social Engineering Techniques and How to Protect Against ThemStephen Haunts
Social engineering is one of the biggest threats to our organizations as attackers use manipulation techniques to coerce people into revealing secrets about our companies to allow attackers to gain access to critical systems.
In this talk, we will look at some of the techniques used in social engineering and look at how to guard yourself against them. We will cover subjects like pre-texting, elicitation and body language as techniques for manipulating people.
Scaling Agile in your Organization with the Spotify ModelStephen Haunts
Using agile methodologies like Scrum or XP has become common place in a lot of organizations, but what do you do when you want to scale your business or department in size. Just being Agile in it self won't stop the growth of your business and teams descending into chaos. In this talk, we will look at different techniques and team dynamics changes you can make to allow you to scale Agile across your business.
In this talk, we will take a look at the Spotify model that has been gaining in popularity recently and discuss how this works for consumer facing products and how you can adapt it to work in more regulated business to business enterprises. I will give examples of where I have started to apply this model to a start-up working with regulated insurance companies, that is currently going through a hyper growth stage.
What can Rollercoasters Teach us About Software DesignStephen Haunts
When writing software we use Design Patterns as a way to show common solutions to common software design problems and also as a way to have a shared terminology with our fellow developers. This fun talk is about the importance of these common design problems and shared terminology, but to illustrate their importance I am going to look at a completely different industry that also has their own set of design patterns and terms.
In this talk, we are going to look at the wonderful world of Rollercoaster design and engineering and we are going to have a lot of fun at the same time.
By the end of the talk, you will know a lot of the common patterns and terms used in this fantastic industry and you will leave the room knowing about Inversions, Magnetic Lift Hills, Woodies, Steelies, Helixes, LSM Launches, Cobra Rolls, Brake Runs and much much more.
So put your hands in the air and prepare to have fun as we enter the wonderful world of Rollercoasters.
** Note to organizers, this talk works really well at the end of the day when people brains are fried **
As Easy As PiRichard Tasker
The Raspberry Pi is a small inexpensive computer, initially designed to teach children programming.
It has become the core component in many hobby projects and with subsequent releases of the credit card size device has seen it move into industry.
In this session Richard Tasker will introduce you to the Raspberry Pi, show you how to get up and running with the Raspberry Pi.
Richard will show you how to develop and deploy your code to the Pi.
Introduce you to electronics and show you how to build applications that sense the environment.
In the final section he will discuss how to go about architecting larger sensor networks, and how to interact with Azures IoT services.
Building your first dashboard with Azure PowerBI EmbeddedJoel Hammond-Turner
Users love dashboards… Dashboards give them that warm fuzzy feeling that they can see into your software and watch it working perfectly… And dashboards give you the same insight into what's actually going on.
Microsoft's new Azure PowerBI Embedded product lets you capture data, analyse it and present it on dashboards that live within your application.
In this session, I'll take an existing instrumented application, pipe the data into Azure and demonstrate just how easy it is to create a rich dashboard to monitor the application - live.
Deploying Functions to Azure (or AWS) with OctopusDeployJoel Hammond-Turner
Azure Functions and AWS Lambdas are the new darlings of "serverless" computing. But whilst both technologies provide (fairly) smooth paths for developers to play with them, in the enterprise you still can't just deploy from the desktop.
And even deploying from a GIT repo isn't necessarily enough control for your business - just as with traditional software and services you need reliable, repeatable deployments.
At Landmark, this is exactly what we need to do, and so in this talk, I'll show how we can use our old favourite OctopusDeploy to take an Azure Function (or AWS Lambda) from our build process and deploy it in just the same way as we do for other software.
Groove Music for DevelopersPeter Bull
Groove Music for Developers features how to power your experiences with Groove Music on any platform and on any device with access to millions of tracks using the Groove Music service
In this talk you'll learn about Groove Music for Developers - including signing up, details of the API, an overview of the SDK, and how to integrate Groove Music using the API and SDK
Effectively Scaling in .NET - Horizontal, or Vertical?Joe Stead
Effectively scaling any application is difficult. There are dozens of different approaches you can use, but which one suits your problem best?
We'll explain the difference between horizontal and vertical scaling and when you might prefer one over the other. We'll explore different approaches and discuss the pitfalls as well as the benefits of each.
We'll go on a journey together, looking at an application that handles barely any concurrent users, to handling tens of thousands concurrently.
.NET Core in the real worldJoe Stead
.NET Core has dominated the hype for a while, but, what’s it
really likerunning in production, on different operating systems?
We ported our
15 year oldcodebase (you read that right) to be running on the shiniest new thing in the .NET world, and yes, we hit some problems. Luckily, we managed to solve or work around those problems successfully.
Living on the bleeding edge with our legacy application has taught us a lot. We learnt very quickly it's better to embrace the platform, and the operating system to really reap the benefits. I can pass on some more of the lessons we learned to help you decide whether or not you should make the
leap,and to ease your transition if you do.
Building APIs with Azure FunctionsKevin Smith
Functions as a Service (FaaS) seems to be trending as the next big buzzword, in this session we'll look at the advantages of using FaaS and how we can take advantage of Azure Functions to build our APIs. Through this demo lead session we'll see examples of how we can take advantage of HttpTriggers, Routing, Proxies and API definition to build a set of rich functions as the source for our APIs.
Windows Server containers, Kubernetes and other hotnessShahid Iqbal
Everyone is talking about containers and you've probably already seen every ASP.Net Core/Linux/Docker demo you ever wanted to; what if you have more traditional Windows applications, maybe running on VMs/PaaS? Perhaps you're on the start of a journey to microservices, how can you (or should you!) join in with the container hotness?
In this talk we'll focus on Windows Server containers and how you can containerise your existing windows applications to take advantage of the power of containers.
Once you have your application(s) in containers are you ready for production?
This area is littered with buzzwords, concepts and new technologies which can be daunting at first so we'll try and demystify the terminology and help you understand if and why you might need to consider these technologies as your applications mature.
We'll cover topics such as:
- Windows containers
- Container orchestration concepts
- Tools/frameworks to help you manage containerised applications
It promises to be a packed session with demos and the jeopardy of spectacular demo fails.
By the end of the talk the audience will be more familiar with Windows containers and how you can take these (and Linux containers) into production environment. You'll be more familiar with container orchestration concepts and Kubernetes as a container orchestration platform.
Layers, Abstractions & Spaghetti Code: Revisiting the Onion ArchitectureNaeem Sarfraz
There are not many stones I've left unturned in the quest of finding the "right" way to architect an ASP.NET web application, trying n-tier to no-tier, to hexagonal and onion. And no, this is not my entry for the Great British Bake Off.Turn to Google for help and you'll drown in Business Logic Layers, Generic Repositories and Core class libraries. In this session we'll look at different examples of good and bad web application architectures from real-world experiences and why you might consider using Onion\Hexagonal to address problems like coupling and separations of concerns as we strive for a clean architecture.
Writing Business-centric Code using Domain Modelling techniquesNaeem Sarfraz
Writing code using the language of the domain sounds easy except when you actually come to doing it. We tried modelling behaviour and state using Object-orientated techniques but we ended up with Anaemic classes and Partially Initialised objects. Some say start with identifying nouns whilst others look at verbs or interactions between things.
Just where and how do we begin? Domain-Driven Design encourages you to focus on creating models that are useful given a context. We'll look at one such problem and how we can use techniques such as the Model Exploration Whirlpool to quickly build out a domain model.
In this talk I'll be using C# and Visual Studio, with a little bit of help from Resharper, to flesh out a useful and practical model. In the end you will pick-up techniques that will help you to express those complex business rules in a rich domain model.
CQRS for DummiesNaeem Sarfraz
Build it and they will come but when they do, your application grinds to a halt. Too often scalability requirements are an afterthought and in most cases the choice of database appears to be the problem.
In this talk we'll look at different ways to apply the CQRS pattern when you're faced with the challenge of scaling your existing application. Examples will be in .NET using C# although the principles are technology agnostic.
Married to the Mob (Programming)Derek Graham
"All the brilliant people, working on the same thing, at the same time, in the same space, and at the same computer."
That may sound like a recipe for disaster but Mob Programming is a new way of working for development teams that encourages collaboration, promotes shared understanding and building, increases productivity and improves the quality of the software you deliver.
In this session you'll learn what makes Mobbing so effective and why it's better than working independently or in a pair.
We'll look at:
• Mechanics of Mobbing
• Organizing the environment
• Team heuristics
• Dealing with competing solutions
• Coding as a team
• "Real time" retrospectives
• Including subject matter experts, testers and analysts
• Woody Zuill - Evil, Genius or Evil Genius?
I'll share what I have learned over the last 18 months using Mob Programming at work, in training sessions and on open source project teams, how you can use it immediately to see benefit on your current project, how to get started and how to avoid getting stuck.
Hacking the micro:bit - Python to IoTDerek Graham
The BBC micro:bit is small ARM-based computer that 11 and 12 year olds are using in schools to learn about programming, creativity and physical computing. But it's not just for kids! It's a fully featured, tiny IoT-style machine with a load of on-board features that make it brilliant for those wanting to explore embedded devices or where programming interfaces with electronics tinkering.
In this session you'll learn what the micro:bit has to offer, how to get up and running with some simple examples, how to build some more sophisticated projects using clusters of interacting devices and the range of languages you can explore on this platform.
You will learn how to use:
- Bluetooth LE,
- Programmable digital and analog IO
- LED matrix screen
- Voice synthesizer
- Music capabilities
It's a platform that is really easy to get started and really difficult to give up. Come and discover what it's all about and wave goodbye to your remaining free time!
Building a private cloud on a shoe string using OVHMark Thompson
We’ve all heard of AWS and Azure. Let’s talk about another option – OVH.
I will demonstrate how you can get a hold of your own dedicated hardware, from the company that has the third most hosting servers in the world (according to Netcraft 2015).
How much might you ask? … Well prices start from £30 a month. Not for a VM, but for a piece of hardware you can run Hyper-V server on and create multiple VM’s. All nicely located in the UK or Paris.
We will talk about building clouds, Hyper-V and object storage. We’ll talk about load balancers and firewalls to protect your stuff. We will then have a fly through the rich API on offer (Using C# of course!).
How we use Value Stream Mapping to identify where to focus to achieve maximum impactMarcus Robinson
Creating a software development Value Stream Map is an exercise to identify delays caused by people, processes and tools. Over the past 12 months I have been running DevOps focused "hackfests" with customers. Prior to each event we meet to create a Value Stream Map of the software development processes.
In addition to improving understanding of the existing state the exercise enables opportunities for improvement to be identified. Given the fact engagements only last for a few days they have been vital in pinpointing which DevOps practices we should focus our effort.
The Value Stream Mapping process has not just been useful for the hackfest but has proved to be an extremely valuable process for all involved.
"The value stream mapping exercise wasn't just useful in terms of laying out the technologies and processes. It was also a bit of a trust and familiarisation exercise for the teams and individuals. We found it extremely valuable."
"Isolating and realising how much ‘waste’ there was really interesting to me. I knew there was quite a lot but identifying exactly where and how much there was essentially gave us a green light to carry our further work to improve our build system."
During the session I will describe Value Stream Mapping and the process we carry out. I will then present a number of real world case studies and discuss some of the more interesting areas of waste that we have been able to identify.
Bring your own container (BYOC) - running your containers on Microsoft AzureMarcus Robinson
Containers provide excellent application portability, often summarised as "Build Once, Run Anywhere". During this session we will build simple Windows and Linux containers and discuss and demonstrate some of the options for running your containers on Microsoft Azure. We will compare and contrast the following services :
- Azure Container Instances
- Azure Container Service - Kubernetes, Docker Swarm, DCOS
- Azure Service Fabric
- Azure Batch
- Azure Web Apps on Linux
At the end of the session you will be better placed to choose the most appropriate solutions for running your container workloads on Azure.
Thinking Functionally in C#John Stovin
The determined programmer can write FORTRAN programs in any language - Ed Post
To program effectively in a functional language, you need to discard many of the thought processes and habits that you have developed for coding in ‘curly bracket’ languages, and understand a new set of idioms and ways to think about code.
In this session I will talk about some of those fundamental idioms, explain why they exist and how they interact to provide a very different framework for thinking about your code. Even if you never write any F#, these ways of thinking can be used to make your C# code more efficient and more robust.
I will also discuss some C# libraries that you can use to apply functional principles to your existing C# code.
Practical Audio Synthesis in F#John Stovin
Functional languages are a great fit for writing applications that generate and process audio signals.
In this session I will demonstrate building a simple audio synthesizer in F#. We will discuss simple digital audio theory (no scary maths!) and then demonstrate how we can use functional programming techniques to translate our theoretical understanding directly into code.
This is a great way to gain an understanding of functional programming fundamentals, while making silly noises.
A gentle introduction to ElmJames Murphy
Elm describes itself as: "A delightful language for reliable webapps."
Elm apps are built to follow The Elm Architecture which has a unidirectional flow and was part of the inspiration for Redux.
Aim of this talk is to be code heavy - walking through enough Elm to do something vaguely useful with the aim of introducing the language and the Model Update View architecture and to allowing you to see why it might be worth further investigation.
12-Factor Apps in .NETIan Cooper
The buzz is all around Cloud Native: continuous deployment and easy scaling of your server side code. You have heard about Docker and Microservices, but what are 12-factor apps? The Twelve-Factor App methodology (https://12factor.net/), was created by engineers with experience of delivering apps on Heroku, and is a "recipe for success" when authoring code for cloud native senarios. In this presentation we will look at what a Twelve-Factor App is, and demonstrate how to meet the requirements when creating .NET applications. We will show examples using ASP.NET Core, Brighter and Darker of authoring code to meet these requirements, and show its deployment to containers using Docker. By the end of this talk you will know enough to be able to approach another pillar of Cloud Native.
Going Cloud NativeIan Cooper
Today's applications need to continuously delivered, as much as hundreds of times a day, and scale from hundreds to hundreds of thousands of users. At the same time these applications need to be safe, with high availability rates. Cloud Native is emerging as a set of best practices to help us meet this paradox: to both embrace change but yet remain stable. In this talk we will identify the key pillars of a Cloud Native application, and discuss how to move your development towards high-scalability software engineering. Along the way we will cover everything from Microservices and Antifragility to Agile Application Infrastructure
Creating a .NET RenaissanceIan Cooper
The .NET platform has been in decline over the last four years, losing half if its available positions in server-side development. In this presentation we look at the data behind that decline and ask what happened and what can we do to reverse it.
In 201I, Bob Eel called for a Java Renaissance to capitalize on new developments on the Java platform and fight off the competition from frameworks like Ruby on Rails. The numbers show that Renaissance having an impact on server-side Java development, and many web scale companies have returned to Java for their server workloads.
Can we make a similar move in .NET and create a renaissance that will see .NET taking a role server-side in web scale deployments?
Part-history lesson, and part call to action, this talk tries to set out where we could go, if the community can create a .NET Renaissance around the .NET Core developments.
Microservices - what I've learnt after a year of building a systemNathan Gloyn
This talk goes into my experience during the last year as part of a team building a system that is based on microservics architecture.
Whilst I'll mention the technology used this talk won't be about the technology more about the lessons I've learnt.
I'll cover how we built the system, deploying the code & most importantly how to support the system.
#FAIL - Lessons from infosec incidentsRobin Minto
Securing a web application is a challenge. The internet is awash with malicious traffic and web applications are globally accessible. Don’t make it easy for them and the baddies will move on and find someone else to annoy.
We’ll look at the risks facing web applications, the basic steps you can take so that you don’t make yourself a target and the things you should do to avoid becoming a data breach statistic. We’ll also look at lessons that can be learnt from mistakes that others have made.
We’ll demo some of the techniques and tools in both attack and defence with examples for any web application developer.
HALT! Who goes there?Robin Minto
Is the visitor to your website friend or foe?
Authentication is the sentry to your web application or API. "Bad dudes" are ready to march into your app but you have to control who gets through the gate.
This session will show you how to authenticate your users and keep your application secure. We'll look at the threats to your system and how to avoid pitfalls. We'll compare options in the .NET ecosystem and consider when they might be used.
We'll look at examples in .NET Framework and .NET Core, tackle integration with Identity Server and look at third-party authentication systems. By the end of this session, you'll have learned how to change your authentication for the better or what to choose if you're starting out.
XSS: Don't die of ignoranceRobin Minto
You wouldn't allow any Tom, Dick or Harry to add code to your application; but cross-site scripting (XSS) vulnerabilities allow exactly that.
This session aims to prevent these issues from keeping you awake at night. We'll look at the mechanics of XSS, how protections can be bypassed and how defence in depth is your friend. We'll demonstrate XSS in action using the Browser Exploitation Framework Project to illustrate the power of this attack. Examples are in C# and React.js; lessons will be useful to any web developer.
We’ll learn how to protect ourselves from XSS so we can all get a better night’s sleep.
Building conversational appsMartin Kearn
It is now possible to embed natural language conversation into almost any application., You can have your users speak to your apps and have your apps speak back all in a natural language way. In this talk we’ll look at how you can use Microsoft conversational AI service in your applications, bots and websites. We’ll look at Language Understanding Intelligent Service, Bing Speech, Cortana and Bot Framework.
Can I make a recommendation?Martin Kearn
Recommendations are a key way to up/cross-sell your inventory, delight your users and retain visitors on your site or application. In this session, we look at the Microsoft Cortana Intelligence Recommendations solution and explore how you can easily build you own recommendation engine with your own data at minimal cost using Azure.
Meta-Programming in C# 101 - How Stuff WorksDavid Whitney
We live in a world where our tools, frameworks and libraries are often built for us. Especially in .NET, we rely on ASP.NET MVC, DI Containers, Unit testing tools and IDEs and all of these things sell themselves on hiding complexity and being "hard problems".
In this session, I want to explain how all these big tools and frameworks aren't really that different, and are built using the same language and practices that you using in your user-land code every day.
We'll break down how all that stuff works - MVC, Test frameworks and containers - illustrating how it's all just meta-programming with reflection, and hopefully leave you with practical tips for implementing strong conventions, discovery, and implementing composition in your own code bases.
Cutting CODE Live! A Test Driven AdventureDavid Whitney
The best way to learn how to truly test drive your code is to do it, and to pair with others who do it.
In this session, we'll live code our way through a TDD code kata, sharing learnings, practices and techniques for test driving functionality in your codebase.
Based on the Cutting CODE streaming series, we'll work through driving features, continuous test runners and test hygiene as we fumble our way towards victory through treacherous live coding demos!
Typescript for the C# developerPeter Shaw
It's little wonder many .NET developers try their best to stay in C# land where they feel comfortable and write nice safe code.
This is where TYPESCRIPT comes in.
TYPESCRIPT will allow YOU to write good, solid, strongly typed front end code, right now, using all the latest ESxx or JSxxxx features that are currently part of the JS standards track, and STILL ALLOW you to target older ES5 browsers such as IE10 & IE11
In this session, I'm going to take you through a brief tour of TYPESCRIPT and how it relates to what you do in C# and other OOP style back end languages, and hopefully make front end coding much more fun.
(If your in the Newcastle-Upon-Tyne area, I'm also presenting this same session at NeBytes on September the 20th)
Getting Started with the Aurellia Front-End Framework in DotNet CorePeter Shaw
Angular? React? Redux? Backbone? TheBestFrameWorkEver.JS? MyFrameWorkRocks.Js?
Ok, so I made the last two up.... :-)
Point is, there's millions of frameworks out in the wild today, and as a .NET developer, your not just doing back-end development anymore.
You need to pick a front-end framework, that's easy to pick up, does what you need "Quickly", and allows you to get back on with your back-end code and architecture.
3 Years ago, Rob Eisenberg started to develop a new JS framework called Aurelia (Aurellia.io), many of the larger more complex and more popular frameworks buried it, and uptake was slow.
Since Rob returned to Microsoft, there's been an upsurge in the framework, which is now in a very mature and very stable state.
Aurellia ticks ALL the boxes that most .NET developers are used to, and to boot it's native development model is in pure TypeScript.
Development of your front end application is almost identical to your back-end development in C#, you build Views in HTML, and ViewModels in TypeScript. You Hook up the Aurelia Fetch Client to grab data from your DotNet Core back-end api, you create interfaces in TypeScript to match your Pocos and other View Models created in your C# code providing FULL type safety, even across the wire.
In this session I'll take you through a simple seat of the pants creation of an application using DotNet core and the new Aurellia templates. I'll show you the application structure, and explain how to expand on what you get out of the box, to make making web applications as easy as 1, 2, 3
Alexa, open Sneezaroo...Zinat Wali
How easy it is to set up an actual, useful Alexa skill? With the newly added reminder functionalities in Amazon Alexa, what are the possibilities? In this session, we will look at what’s involved in building reminder functionality tailored to individual needs using Amazon Alexa, Lambda, Simple Notification Service (SNS), and some machine learning as well. Hay fever sufferers rejoice!
A gentle introduction to Fable-ElmishJames Murphy
Breaking The Common Myths Around Artificial IntelligenceGaliya Warrier
In this presentation, we will be discussing 5 main common myths around Artificial Intelligence as well as what it can actually deliver at this moment of time. We will then see a few demos of interesting AI examples that span beyond personal assistants, and that should leave you with some practical ideas on how you can get started in this space.
Rider - taking ReSharper out of processMatt Ellis
Rider is a new cross platform IDE from JetBrains, integrating the language analysis features of ReSharper inside the IDE functionality of IntelliJ. Wait, what? ReSharper is a plugin to Visual Studio, running in .NET, and IntelliJ is a JVM application! Cats and dogs, living together, mass hysteria!
So how does this work? Rider runs ReSharper out of process, as a headless language server. All of the .NET language features - inspections, navigations, refactorings and more - happen in the ReSharper process, with the results being displayed in the IntelliJ based user interface, running on the JVM.
How would you tackle this? JSON and REST? Protobuf and named pipes? Or something a little more made-to-measure? In this session, we won’t be looking at Rider’s (impressive, comprehensive, some would say attractive) feature set. Instead, let’s geek out and see how and why we built our own custom, asynchronous, declarative, reactive, inter-process, cross runtime communications protocol.
How to parse a fileMatt Ellis
Yes, we're going to look at file parsing. Sounds a bit boring, right? Wrong.
In this talk, just for fun, we'll find out how to parse a file. We'll look at simple, hand crafted parsers. We'll finally figure out just how lex and yacc work. And we'll pick apart structured parsers that build abstract syntax trees as you type - ReSharper style. How is an IDEs parser different to a compilers? How do you handle sensible error recovery? What about significant whitespace?
Everything you always wanted to know about parsing a file, but were too afraid to ask.
Possibly the only NoSQL cloud database you'll ever needGaliya Warrier
If you are lucky to be a developer these days, very often your application is trying to reach out a geographically broad user base. Such ambitions often bring challenges of expected high availability, responsiveness, elasticity and scalability. On the application side, various cloud-based tools and services are helping to address them. However, the data layer - relational or non-relational - is still often a bottleneck, as the traditional databases were never designed for the cloud.
In this session, we will look at an (Azure) cloud-native database, called Cosmos DB, its unique features and capabilities. We are going to look at its universe of supported models, consistency models and opportunities to use at the global scale at a click of a button. We will discuss why it should be your first choice, whether you design an e-commerce system, a social media app, an IoT Telematics system, or use it to solve data science problems using big data.
Azure-ify Your Favourite Big Data ArchitectureGary Short
Just as with software engineering, so to Big Data and Machine Learning has a set of general purpose architectures, these architectures are well documented for the AWS cloud, but if you are a Microsoft shop, on Azure, then guidance is not so easy to come by. In this session I'll take some of the most heavily used patterns in big data and machine learning and show you how to implement them on the Azure platform.
How to Count Your Chickens After They've HatchedGary Short
When you're one of the leading free range chicken farmers in the UK, and you buy your fertilized eggs by the ton, how do you know how many chickens you own after they hatch? How many are in each barn when you lock them in for the night? If someone stole a large quantity, would you even notice?
In this session I'll walk you through the IoT and Machine Learning solution I developed to solve this problem. Along the way I'll teach you several machine vision techniques as well as demonstrating to you how I adapted a well known clustering algorithm in order to help me short circuit the machine learning model training phase of the project.
Introduction to SharePoint Online Automation with PowerShellAndy Dawson
SharePoint Online automation using PowerShell provides powerful capabilities to automate common tasks.This session covers getting up and running with PowerShell automation for SharePoint Online, including installation of the required components, pros and cons of the available options and some sample scripts to perform common actions.
If you're a newbie to SharePoint Online automation with PowerShell, this is the session for you!
Effective Lab Management with DSC, Lability and AzureRik Hepworth
Creating and managing complex environments of virtual machines for development, testing and production can be hard work. Desired State Configuration allows a declarative approach to configuration that can be used on-premises and in the cloud. [Lability](https://github.com/virtualengine/lability) extends the power of DSC to creation of virtual machine environments, and with care the same configuration can be used on your own machine, on a lab server and in Azure.
In this session I'll introduce you to DSC and Lability, and show how we use the tools at Black Marble to create a single set of configurations that can be deployed locally or in Azure.
ARM Yourself For Effective Azure ProvisioningRik Hepworth
Azure Resource Manager templates are a crucial part of your journey to the cloud. Learn the essentials of template creation and maintenance, with some examples of how to deal with complex deployments and manage the PaaS services that born in the cloud apps need
Sending punched cards to the cloudTomasz Bartoszewski
ASP.NET Core 2.0 Razor Deep DiveJoseph Woodward
Along with the rest of the framework, one area of ASP.NET Core that's seen a lot of change is Razor, ASP.NET Core's powerful view templating engine.
In this talk we'll dissect what's changed in the Razor view engine, how we can utilise Razor's new tag helpers to create cleaner, more manageable markup. the new View Components concept to create more modular, reusable views and how we can extend Razor to go further than we thought possible. We'll also take a look at what new Razor goodies are available in .NET Core 2.0 including the new Tag Helper Component and Razor Pages.
By the end of the talk you'll be able to go away and build better ASP.NET Core MVC applications with your deeper understanding of what new features are available to you and how best to utilise them.
Tensorflow, Tensorflow, What is it that you see?Ashic Mahtab
Machines are doing things today that were unthinkable even a few years ago. From computer vision, to understanding human conversation, to translating text, or even generating art; they're encroaching on domains previously thought to be strictly human realms. The technology behind this is actually fairly old; neural networks have been around for decades. However, modern hardware capabilities have made them technology feasible to such a degree that they can now drive cars.Key takeaways:
Tensorflow is Google's open source framework for deep learning. It makes it relatively straightforward to apply these techniques. In this session, we'll cover the basics of image recognition, and use Jupyter Notebooks, and Tensorflow to apply it.... with a dash of GPU processing to boot.
* You'll learn how machines can be endowed cognition.
* You'll also see the basics of using Tensorflow.
Client-side web performance for back-end developersBart Read
Devices nowadays offer a wide variety of form factors and capabilities. On top of this, connectivity – whilst widely available across many markets – varies considerably in quality and speed. This presents a huge challenge to anyone who wants to offer a great user experience across the board, along with a need to carefully consider what actually constitutes “the board”.
In this session I’m going to show you how to optimize the client experience. We’ll take an in depth look at Chrome Dev Tools, and how the suite of debugging, data collection and diagnostic tools it provides can help you diagnose and fix performance issues on the desktop and Android mobile devices. We’ll also take a look at using Safari to analyse and debug web applications running on iOS.
Topics covered include:
- Page lifecycle
- Making efficient use of memory
- Profiling with Chrome Dev Tools
- How to handle long-running scripts (don't have them!)
- Canvas and CSS
- Taking control of resource loading
- Several other small matters
Slides for the last time I gave this talk can be found at https://www.slideshare.net/bartread/client-side-performance-for-back-end-developers-camb-expert-talks-nov-2016.
Patterns, Practices and Considerations for Building Resilient MicroservicesJoseph Woodward
With microservices being the latest hot trend in software architecture promoting benefits such as increased business velocity, self-organising autonomous teams and increased scalability, they can often lead to developers focusing too much on business valuable whilst forgetting the distributed nature of microservices mean they're more prone to failures than similarly-scoped monoliths.
In this talk we'll look at some of the best practices, patterns and considerations one can take to improve reliability and resiliency in your distributed systems, including topics such as:
- Managing transient network failures
- Effective timeout strategies to prevent cascading failures across your systems
- Dealing with the 'thundering herd problem'
- Patterns such as exponential backoffs, bulkheads and retry policies
- And more
Async in C# - The Good, the Bad and the UglyStuart Lang
We will take a closer look at why we care about async, how it works and then deep dive into async issues.
By the end of this session we will understand what SynchronizationContexts are, when to use ConfigureAwait, how deadlocks occur and how to detect and avoid them. On the way we'll touch on some C#7 features.
Whether you're building web apps or shared libraries, there will be something for everyone.
Plunge into React+ReduxAshic Mahtab
React is Facebook's front end solution to complex front ends. Its concepts are simple, modular, composable... understandable. Very complicated React programs aren't that different from very simple ones. The learning curve is not steep by any means either. These have made React one of the most popular front end technologies out there; even Microsoft's next version of Outlook web (currently in Beta) uses React.
While react components are simple, understandable, modular, yada, yada, to build real world applications quickly and efficiently, some sort of reusable bits solving things like navigation, data flow, etc. are needed. This is where various offering from the eco-system come into play. These include components like Redux, React-Router, etc. If React provides the core concepts, Redux provides the substrate gluing everything together in a manageable, scalable unidirectional flow. That Outlook beta I mentioned? Well it uses Redux too.
And did I mention React Native?
In this session, I'll take you through the landscape of React development. We'll go through the things you'll need to build production quality applications... in the real world.
Building a better Web API architecture using CQRSJoseph Woodward
We've all worked with a monolith and we all know the unbearable pains associated with them. Controllers fatter than Thomas the Tank Engine's Fat Controller, repositories that quickly become a dumping ground for data access with zero cohesion and arbitrary services that make the SOLID principles cry. All of these violations make for a codebase that's hard to maintain, tough to evolve and a terror to work with.
In this talk we'll look at an alternative architectural approach utilising the Command/Query Responsibility Segregation pattern to better isolate and decouple our business logic from our framework whilst separating our read models from our write models. Whilst on our CQRS journey we'll stop and take a look at libraries such as MediatR and Brighter that enable such an architectural pattern. We'll also look at how this separation can lead to organising our API into feature folders for a better project structure and the additional benefits that come with such a concept.
We'll also look at how we can utilise pipelining features in MediatR and Brighter to introduce cross-cutting concerns such as monitoring, metrics gathering, logging and caching to our API.