IoT with nothing but your laptopPeter Gallagher
Although the cost of IoT hardware has reduced dramatically over the last few years, you still need to choose the right IoT option, figure out what accessories it needs, order it all from Amazon and wait for it to arrive. By that point, you’ve moved on to something else entirely, so it sits in a cupboard drawer for a year and a half before you get back around to thinking about it…. Then you realise that you need some components and wires… Back in the drawer it goes!
With the advent of HTML 5, so comes the ability to simulate a lot of IoT Kit right there in your web browser. I will take you through a few great online simulators for IoT technology, which will give you a head start into the world of IoT. This way you can forgo all the procrastinating, and get to (virtually) creating!
Beyond HTTP in ASP.NET Core 3.0 with gRPCSteve Gordon
In this session, Steve will introduce 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. gRPC uses HTTP/2 as its transport protocol and ProtoBuf encoded content for efficient, fast communication.
You'll see C# examples of how to build client and server gRPC components using ASP.NET Core 3.0, using the blazingly fast Kestrel web server. You'll learn how to define your proto3 service definition (contract) and integrate with MSBuild tooling to code gen the server and client components you'll need. You'll be amazed at how quickly a service can be created with little effort or boilerplate code required. You'll also see how additional clients can easily be generated for other languages such as Node.js to make connecting polyglot systems a breeze.
It's a great time to begin taking notice of gRPC as a worthy contender to take over from REST for inter-service communication in microservice-based environments. It's time we started to let service talk their own language!
Hacking C#: Development for the Truly LazySimon Painter
I don't know about you, but I'm a lazy developer. What do I mean by lazy? I don't mean I don't want to do my work - far from it - I mean that I hate to write out a great deal of code to get the job done. I want to accomplish my goals with as little effort as possible.
One of my pet hates is writing enhancements that involve copying and pasting blocks of code, changing a variable name, then leaving everything else the same. I hate having to consider each and every possible null reference exception, and adding in a whole ton of boilerplate to handle it. I hate having to spent ages jumping back and forth in a legacy codebase, trying to understand what it actually does!
What's the alternative? In this talk, I'll demonstrate a way of working that avoids all this unneccesary work, and gives you more time to do something more productive.
We'll look at:
* Functional Programming - what benefits does this increasingly popular paradigm bring us to cut down coding effort
* Linq & Generics - These have been a part of C# for a long time now, and are some of the most powerful features available in the language, but hardly anyone seems to be using them effectively
* MetaProgramming - break open C# and take it to the next level with code that describes how to generate code
Our goal is to write code in as few lines as possible that provides the greatest amount of impact. We also want code that's readable, and easily maintainable. We want to think smart, and think...Lazy.
Introduction to GitHub ActionsRichard Fennell
Have you been looking for an automated build solution for your GitHub projects?
GitHub Actions are currently in beta. They allow you to kick-off workflows with GitHub events like push, issue creation, or a new release. You can combine and configure actions for the services you wish to use, whether these are ones built and maintained by the community, or ones you build yourself
In this session I will show how you can use GitHub Actions for your GitHub projects and how you can create your own actions.
Browser Mechanics for ASP.NET DevelopersBenjamin Howarth
More often approached as an afterthought, this primer will cover some essential ground on how to approach measuring website and web app performance, along with some quick wins, through to some more lower-level technical nuances with HTTP2, compression, and header management, and finally putting all our tools together to comprehensively and continuously keep a watchful eye on your performance metrics.
The topic will include ASP.NET and NodeJS samples, and slides & code will be made available on Github.
Internationalising your applicationsPete Vickers
Your application is more attractive to non-native English speakers if you can provide your application in more languages.
Devices are available in more or less all countries in the World, so having your application available in more than one language, especially if you are selling it as opposed to giving it away, is a big advantage.
Remember, the Chinese and Indian markets are massive, and have the very cost effective lower price phones and tablets.
In the reviews of some of our apps, some of the reviews have mentioned this.
This session will take you through how to easily add foreign languages in you own applications, using demo applications.
We will show you how to easily manage the heavy lifting by using the latest tools to ease your journey.
Blazor - The future of frontend is hereChris Sainty
What started as a prototype demo at NDC Oslo in 2017 has become one of the hottest technologies in the .NET ecosystem.
Blazor is Microsoft’s new frontend framework for building single page applications using C#. That’s right, C# running in your browser. No plugins, transpilation or voodoo magic involved.If you’re a .NET developer who’s looking to up their frontend game, or curious about how this all works and thinking of making a switch, then this is the talk for you!
Join Microsoft MVP and Blazor expert Chris Sainty as he gives an introduction into this game changing new framework. You’ll explore Blazor's flexible architecture, rendering models, syntax, project types, component model and more.
Building Smarter Solutions Using Azure And Cognitive ServicesEldert Grootenboer
There's a lot of discussion going on around Artificial Intelligence, and for good reason. AI and Cognitive Services are getting more powerful all the time, and it can be confronting to see all these developments. But how can we leverage this power in our own solutions, using it for making the life of our users and customers easier?
In this session, you will see learn we can get data from the real world, and use this to drive our business, and all this in a serverlss manner. Thanks to Microsoft Cognitive Services it's easy to integrate and work with speech, text, images and videos into our processes. Come and learn how to use this to your own advantage, driving your business forward.
From Olá? To Olé! with BlazorDon Wibier
Join technical evangelist Don Wibier and see how to get going with Blazor. Experience the power of C# running on the server – and in your browser!
In this session, you’ll get a quick introduction on how to setup your development environment, and start coding a Blazor app.
We’ll go over several aspects like hosting models, dependency injection and data access, routing, editing and validation as well as using 3rd party controls.
Discover if this new technology is something for you!
Typescript for the C# developerPeter Shaw
First aired at the Sheffield .NET Users group about 4 years ago now, and last shown at DDDScotland in 2018, my talk on why Typescript is important for C# developers these days.
If you've never done much front end coding, and you still prefer to sit with the C# compiler when writing software, then it might just surprise you how similar to C# typescript actually is.
The DDDScot version of this talk can be found at : https://www.youtube.com/watch?v=8n2oHzlTWfQ
The History of AI - what can we learn from the past?Håkan Silfvernagel
Nowadays AI is all the hype, but what many might not know is that AI is an established discipline originating from a workshop in the 1950s. This talk will describe the historical milestones of AI from that workshop up until present days. In addition we will get an understanding of what the future of AI might have in store.
Initially we will investigate what happened at the workshop in the 1950s. Then we’ll be reviewing a number of areas where AI initially was put to use between 1950-1970. We’ll cover the AI winter in the coming decades.
In the second part of the talk we’ll cover applications and milestones from the 1990’s and onwards. Finally we’ll look into the crystal ball to see where AI will takes us in the future.
Deep Learning for DevelopersAli Kheyrollahi
Deep Learning has taken the world of Computer Science by storm yet for many of us it remains an elusive sci-fi-like buzzword. After years of feature engineering in Computer Vision and Natural Language Processing, we have finally come to the point where, we can feed raw data to a Neural Network, similar to how our brains work, and expect results that can surprise us in their high accuracy.
This talk is about de-mystifying Deep Learning for developers many of whom could benefit from understanding and using Deep Learning in their day-to-day job. It covers the background and brief theoretical grounds in the first third but shows actual working code and examples in the rest. We will overview convolutional Neural Networks and then cover network design techniques such as pooling, dropout and local connections.The examples of this talk are in python/Keras and aimed to build a real-world model to recognise the language of code file or snippet out of 16 programming languages.
Easy integration with Flow and Logic AppsSteve Spencer
Historically integrating different systems has been challenging and you have needed experts to help you build even the simplest integration. Microsoft has introduced its Azure based offerings to help take some of the complexity out of integrating to allow you to build your own personal workflows. This talk will introduce both Flow and Logic apps, show you where to use each and how you can migrate from Flow to Logic Apps.
Decision Making in The Face of UncertaintyGary 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 and use C# to compose them into 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.
Air Quality, Azure Functions and Spider EggsRob Miles
Good quality air is important. After all, everyone breathes. But dig a little deeper into the subject and most of what you find is what we don't know. Is air pollution produced by local traffic? Does it waft in on the breeze? Are there times when I really shouldn't go out for a run?In this talk I'll describe how you can build your own connected air quality sensor and get data from it. I'll touch on embedded devices the MQTT protocol, LoRa networking, Azure IoT Hub and Azure Functions, along with our Connected Humber effort to spread sensors over Humberside. And I'll even mention spider eggs and show off my "Air Quality Top Hat".
Getting Started with Dotnet Core 3 on the Raspbery PI3+Peter Shaw
The humble little rPI really is a marvelous little device, you can do a ton of stuff with it but with Rasbian/Linux installed on it, and a sprinkling of dotnet core 3, it becomes a remote controlled I/O platform.
In this session, I'll show you how to get dotnet core 3 and blazor apps running on the thing, even now while it's all still in beta and with no official "installer package" yet.
We'll then take a quick look (time permitting) at some source code to toggle GPIO pins, and maybe even some infra red control.
Game-playing AI: from hype to building oneAli Kheyrollahi
Even if AlphaGo’s victory over the go’s world champion was viewed dubiously as hype by a one-trick pony, AlphaZero’s ability to learn chess in 4 hours and beat the strongest computer using not-of-this-world techniques has silenced the strongest of critiques.
But really, how do they do it? In this talk we look at the brief history of Reinforcement Learning and explore concepts of training using Deep Reinforcement Learning. And then move on swiftly to build a game-playing agent using Monte-Carlo Tree Search that can beat equivalent man-made agents in the game of Hexagon (Danske Bank’s coding challenge).
- Intro into Reinforcement Learning (RL)
- Understanding into several RL algorithms
- Review of recent achievements (Go, Chess, Dota and SCII)
How to use Cognitive Services to make a chat botHåkan Silfvernagel
Chatbots are commonly used in a wide range of user scenarios such as ordering pizzas, product suggestions, schedule meetings or customer support. But how can we as developers make our own chatbot?
In this session I will demonstrate how you can make a chatbot by using the Microsoft Bot Framework together with LUIS (Language Understanding Intelligent Services). The chatbot will be multi-lingual meaning it will adapt in real-time according to the user’s language (i.e. switching from English->Spanish->Norwegian).
Finally we will integrate our chatbot in a web application and demonstrate how we can use this in a realistic scenario.
This presentation will be code centric with the majority of time spent in Visual Studio and the Cognitive Services portal.
Special Operations: Azure DevOps for BeginnersPhil Pursglove
Feeling left out because all the cool kids are doing DevOps and you can't figure out how to install it into your project? No problem! In this session we'll look at how to get started using Azure DevOps to run your projects including:
* Creating a Build pipeline
* Creating a Release pipeline
* Using Azure Artifacts to manage your package dependencies
* Monitoring your application with ApplicationInsights & DevOps
By the end of this session, you'll have all the knowledge you need to bring CI/CD to your projects!
Let's Talk HTTP in .NET CoreSteve Gordon
In the world of microservices (yes, there's that buzzword again!) and distributed systems, we often find ourselves communicating over HTTP. What seems like a simple requirement can quickly become complicated! Networks aren't reliable and services fail. Dealing with those inevitable facts and avoiding a cascading failure can be quite a challenge. In this talk, Steve will explore how we can build .NET Core applications that make HTTP requests and rely on downstream services, whilst remaining resilient and fault tolerant.
This session will focus on some of the improvements which have been released in .NET Core and ASP.NET Core 2.1, such as IHttpClientFactory and the new, more performant socket-based handler. Steve will identify some HTTP anti-patterns and common mistakes and demonstrate how we can refactor existing code to use the new HttpClientFactory features.
Next, Steve will demonstrate Polly; a fantastic resilience and transient fault handling library which can be used to make your applications less prone to failure. When integrated with the Microsoft HttpClientFactory; wrapping your HTTP calls in retries, timeouts and circuit-breakers has never been easier!
If you're building services which make HTTP calls, then this talk is for you!
Web Assembly and BlazorHåkan Silfvernagel
We will cover a practical example writing our web assembly using Rust. We will go through everything from writing your web assembly code to publish it as a npm package and finally use it in an existing web application.
Web assembly is also the basis for a Blazor which is a new framework from Microsoft where you can build a web application all in c#. This session will you give an introduction to Blazor as a web application framework.
Azure IoT Hubs with Raspberry Pi and Node.jsPeter Gallagher
Taking you from start to finish through connecting a Raspberry Pi to Microsoft Azure IoT Hubs.
We go through the basics of IoT, Microsoft’s Azure offering and basic electronics with a simple circuit with a couple of LEDs, a button and a Temperature Sensor.
We cover everything from how to create a Basic IoT hub, connect a Raspberry Pi up to a circuit, add the parameters to the template code and see our first interaction between the Pi and the IoT hub.
We’ll also walk through Device Twins and Azure Functions showing how to send a tweet when the room temperature drops below a certain level.
.Net Configuration is Easy ... Right?Steve Collins
Let's face it, we've all done it at some point. You have a value in your code that you don't want to hard code as it will vary in different environments or needs to change in a runtime environment, so you want to make it configurable in a file. That's where the fun begins.
In the .NET Framework, you usually create an XML configuration file and reference it using some static methods. Or maybe you use the designer in Visual Studio to do the work for you? In .NET Core, you are given a JSON file by default and access it through the IConfiguration interface. Job done ...or so you think.
· How do you code the keys to access the values?
· How do you unit test it and what if you need to test different values?
· What if you want to store values other than primitive types?
· What if you want to have secure passwords, but don't want them in your source control?
· What if you don't want to use json files ... or come to that, don't want to use files at all?
· What if you want to change values in a Docker container
.. and the questions go on and on.
In this talk, we start with a brief overview of the history of configuration in .NET Framework and how Microsoft handed developers a loaded gun to shoot themselves in the foot. Moving on to .NET Core, things are much better, but there are still some gotchas.
Lastly, the talk goes on to deal with the questions raised above with a "SOLID" based approach that makes configuration not only fully testable, but adds enhancements to handle encrypted configuration values (because you're not storing passwords as clear text in source control are you?) and validation of the configuration data before it hits your code.
The talk aims to help new developers avoid the pitfalls that others have fallen down and give experienced developers some food for thought as to how they might want to reconsider how they do configuration.
Functional Programming in C#Simon Painter
Functional Programming is becoming increasingly popular and relevant with each year that goes by. With so much discussion around languages such as F#, Haskell and Erlang, it can seem as though getting started with Functional programming would mean first learning a whole new syntax...but what if it didn't?
Most .NET developers are familiar with the use of Linq, and basic constructs such as IEnumerable, Func delegates, arrow functions and ternary expressions, but did you know that you can use all of this to implement some of the most powerful patterns and techniques from the world of functional programming?
This talk will demonstrate how, using only familiar features available in out-of-the-box C#, to write Functional code that is:
* More robust
* Easier to read
* Easier to maintain
As well as these benefits, Functional code is a great enabler for the use of concurrency with Async functions and Serverless applications with technologies such as Azure Functions.
This talk might be of interest to anyone looking into moving to a new platform, or in improving the scalability of an existing application, or even just interested in seeing what Functional Programming is all about, but all within the comfort of a familiar language.
We might even attempt the impossible, and explain what a Monad is!
Run your ASP.NET Core solution in AKS and survive productionMarco De Sanctis
Thanks to Azure Kubernetes Service, it only takes a few minutes to have your fully managed Kubernetes cluster up and running on Azure. You can quickly start experimenting with what is considered the de-facto standard to orchestrate containers solutions and understand how to leverage it and integrate it with the rest of the Azure ecosystem.
However, this is just a first step: going to production requires an in-depth look at several aspects which we have to take into account. How do I safely roll out an update after the initial deploy? How can I bring my custom domain, and expose my website in HTTPS? How do I ensure that my cluster stays healthy over time and how do I monitor it?
These are some of the topics we are going to explore during the talk, together with some useful best practices that will guide you when productionising your first container-based application
Getting Started with Unity and AR/VR for the .NET DeveloperDavide Zordan
We all see the cool demos of how augmented and virtual reality are going to be the future of our interaction with devices, but it often feels like there’s a significant barrier to getting started in building these types of apps.
This session is here to help. If you’ve ever thought about developing for Oculus Rift, HTC Vive or the Windows Mixed Reality headsets, but haven’t known where to start, this is the session for you.
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.
Come along, there’ll be .NET code, demos and we’ll have some fun looking at how you can get started on your first VR/AR project.
From layers to vertical slices - simplify your code and focus on your featuresJon Hilton
You know that moment when your boss/customer calls you and says;
"This is just a small change, I can't imagine it would take more than half an hour or so"
And your heart sinks?
No doubt this is because you know what "small" tweaks actually entail.
If you're lucky, you can locate the relevant ASP.NET controller, but that's only the start.
Now you need to find the rest of the business logic...
Before you know it you're knee-deep in your Data Access Layer, desperately trying to figure out where this "small tweak" needs to be made, wondering how you ended up in this part of the codebase, wondering if it's lunchtime yet.
It doesn't have to be this way!
You can skip a lot of this pain by leveraging the idea of "vertical slices".
When you build and architect your application around individual features, magical things start to happen;
You always know exactly where to look for the code that makes any given feature tick
You can use tests to be confident your feature actually does what the user/customer wants it to do (imagine that!)
You get to work with (and write) simple code
You can get all your work done in a few hours and bunk off early (OK, maybe not, but we can dream...)
So join me as we explore what vertical slices are, how you can approach any feature and specific tips and techniques for making this come to life using ASP.NET Core and MediatR.
Reading Matters for .NET Developers!James World
What are your favourite technology books of all time?
What was the last technology book you read?
You will walk away inspired to read a great book - I promise you!
Serverless Architectural Patterns and Best PracticesSana Sarjahani
Get to know Serverless from square one!
The Serverless architectural style empowers you to rapidly create scalable and cost-effective applications without the overhead of managing servers. It eliminates infrastructure management tasks such as server or cluster provisioning, patching, operating system maintenance, and capacity provisioning. This session will take you on a guided tour of serverless terrain and get you building your own serverless solution on your favorite cloud providers like AWS, GCP and AZURE.
You will get to know:
Foundational knowledge to architect Serverless Systems
Capabilities of the popular Serverless Platform
Best practices for developing Serverless Architectures
Serverless Patterns and Architectures
Platform Providers and ecosystem of services and tools
Security, Cost and Economics of Serverless Solutions
Serverless Application use cases
By the end of this session you will have the knowledge needed to start designing serverless systems.
Sports Betting: How I made £500 During Royal Ascot And What That Can Teach You About MLGary Short
By now most of us have a rough idea of what ML is all about, right? Good, but what do we do when ML, alone, just doesn't cut it, when there's either too many variables, or their starting values are non deterministic? Well that's a question we'll answer in this talk - we'll also have some fun as we use what we learn to try to predict the winner of a horse race run during the talk.
Spotify for DevelopersPeter Bull
Peter Bull, Senior Platform Developer for tombola in Sunderland in the North East of England, but also with his personal experience of working with .NET, Universal Windows Platform and Music APIs will talk about Spotify for Developers.
In this this session you’ll learn how he got started with music services for developers and how you can get started with Spotify for Developers. Topics will include learning about the authorisation flows, an overview of the Spotify API and will show off examples using C# in .NET Core and Universal Windows Platform.
You’ll also find out about the Spotify for Developers SDKs Peter has made that make integrating with the Spotify API even easier using .NET Standard and extensions for Universal Windows Platform and how you can start creating your own experiences using Spotify for Developers.
Make serverless more personalPiers Karsenbarg
The serverless movement has become a way for businesses to deploy and run smaller and smaller units of code as part of a much larger system. However, serverless can also be used by individuals as a way of building and hosting mini applications to automate parts of their daily lives all without having to worry about servers, VMs or domain names.
From performing banking tasks, to handling email and even fielding phone calls, serverless applications aren't just for businesses. They can be personal as well.
Writing Business Apps in F#Ian Russell
As you may have heard, F# is great for specialist areas such as finance, scientific research or data analysis but it is also an excellent choice for writing the boring Line of Business apps we work on every day. If you write cloud-ready web apps or cross-platform/mobile apps, then the F# story is very compelling. In this session I will show you how functional programming in F# could help you write apps designed for the rapidly evolving world we live in.
Affective Computing – bringing humans and machines closer through emotionsHåkan Silfvernagel
Research have shown that emotions play an integral role in decision making, cognition, perception, learning and more. If we want our computers to be intelligent and be able to interact with us we need to ensure that they are able to recognize, understand and express emotions. This is the basic assumption of the field of Affective Computing. In this talk I will give an overview of Affective computing and how it can be applied in order to make our interaction with machines more suitable to us as humans.
First I will give an introduction to the field starting with established findings from the field of psychology on how we best can measure emotions.
Then I will describe how the field of Affective Computing has transformed from its origin in the 90’s until now when it is an established research field. I will highlight some of the technology enablers that has made Affective Computing a hot topic nowadays and give some examples of API and services that we as developers can use as of today.
In the second part of my talk I will give some examples on application scenarios across various fields (retail, medical, education and social). After that I will be show casing what is in the front line now. I will conclude my presentation with some recommendations on how this affects us as developers going forward.
Authentication for ServerlessRobin Minto
Authentication is a challenge at the best of times and running "serverless" adds some new challenges. In this session, Robin will share with you how to authenticate your users and keep your application secure. He will then illustrate the threats to your system and how to avoid pitfalls. You'll explore some of the options for Azure Functions and considerations for when they might be used. How do you choose between home-grown, open-source, Azure or third-party authentication systems? You'll learn various ways to implement Authentication for Serverless and how you choose between them.
SignalR in 2019: from ASP.NET Core integration to pure serverless in AzureMarco De Sanctis
SignalR is the library you want to use to improve the user experience of your web applications: it only takes a few lines of code to implement bi-directional communication between the server and client.
Today, we have several options to integrate it in our application, which range from hosting it into our ASP.NET Core process, and hence in our server, using a dedicated service in Azure or even going completely serverless - have you ever needed to send notifications of the progress of a long Azure Data Factory pipeline?
During this talk we'll explore all these possibilities with lots of demos and how you can seamlessly plug them into your existing architecture. You will be able to start playing with SignalR straight away!
Machine Learning For DevelopersSteve Spencer
As a developer I want to understand what machine learning is all about but I'm not a mathematician. This talk introduces some of the machine learning concepts without the maths and shows you how to use the tools provided by Azure Machine Learning to build Machine Learning web services. It also discusses the role the developer can play in Machine Learning to help the mathematicians and analysts integrate their machine learning models with business applications
Keyboards? Where we’re going, we don’t need keyboards.Don Wibier
One of the cornerstones in Microsoft’s digital assistant Cortana are cognitive services. Instead of the traditional Screen / Keyboard / Mouse combination for user interaction with your application, it offers different ways of handling user input.
Think about vision, speech and language – the new way of communicating with your devices – but also how to analyze and structure these kinds of user input.
This session will give you an introduction on the Cognitive Services Platform – show how it can help your end-users – and with live coding examples you will experience how easy it is to start using this incredibly cool API.
Improving System Resiliency via Chaos EngineeringJoseph Woodward
Advances in Cloud technology means systems are becoming increasingly more distributed and complex. Large monoliths are being split up into microservices, we're depending on more remote services and Functions as a Service (FaaS)/Serverless are becoming increasingly common. The very nature of distributed systems mean they're far more prone to failures than similarly-scoped monoliths; this makes predicting or preventing possible failure modes increasingly more difficult. In this talk we'll look at how we can harness Chaos Engineering, a discipline pioneered by Netflix, to better understand our systems, their failure modes and how we can use this information to improve system overall resiliency and reliability.
IoT in your Home? Consequences and CountermeasuresSimon Painter
Cloud Recipes For The EnterpriseEldert Grootenboer
Azure offers a wide range of services, with which we can build powerful solutions. But how do we know which services to choose, and how to combine them to create even better architectures? What are the drivers for choosing one service over another? And how do we know when we should combine them?
In this session, you will get a look at real life scenarios, and how these were solved by leveraging the power of Azure. There will be guidance on the various option we have to implement a scenario, and how to choose one over another depending on requirements and customer wishes.
You're the Tech Lead - *you* fix it!Joel Hammond-Turner
Over the last couple of years, I've presented 20 tricks and tips that I've found invaluable as a Tech Lead. But in this session, I want to turn things around and look at applying some of those to solving specific issues that are common within many software development teams. I'll be taking lessons learned from the last 2 years of a major development project and using them to illustrate my points. We'll look at managing your BAs and PMs and how to balance their need to understand exactly how long everything takes versus your team's need to not be over-pressured by artificial deadlines. We'll see how a structured approach to analysing problems encountered in LIVE can make everyone's life easier, and how to prove whether the problem is (or is not) the fault of your software. And how to handle that inevitable case where it is. And we'll look at the problems of implementing uniformity across multiple code-bases and multiple teams delivering multiple releases of multiple features... and where getting your tooling right can give the biggest benefits. Amongst other things...
Machine learning in the browser with TensorFlow.jsHåkan Silfvernagel
In order to start out with machine learning you typically would need to learn Python, Tensorflow, Jupyter Notebook etc. But what if we could run our 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.
How to kill a bug without a newspaperPhilip Sutton
Many times when debugging the F10 and F11 keys get worked overtime, and maybe the occasional breakpoint. However Visual Studio has many functions to help with debugging. In this talk I will go through the debugging features from basic breakpoints to thread and processes windows, showing how these can be used to speed up the beginning, by getting quickly to the problem code. My talk will include:-
Breaking on exceptions
Breakpoints and tracepoints
Debugging multithread/parallel applications
Customising debugging information
- Symbol Server
Turbocharged: Writing High-Performance C# and .NET CodeSteve Gordon
There are amazing things happening with C# and .NET Core in regards to performance. We have new types such as Span and Memory for working with and parsing in-memory data. We have pipelines for high-performance IO and we have ArrayPool, MemoryPool and OjectPool to help reduce GC allocations. Many more great things are on the horizon in .NET Core 3.0 such as Utf8String and new built-in JSON APIs which add to the performance arsenal. Internally, these have been used by Microsoft teams to optimise .NET Core and ASP.NET Core. Now it's time to apply them to your code!
These features can seem complex, unapproachable and difficult to apply. In this session, Steve will share his journey of learning about and applying these tools when building high-throughput .NET Core worker services. You'll learn about the motivations that led Steve to begin exploring these cool new features and you'll see how they can be applied to production code. This talk is for developers, who like Steve, are ready to begin their journey towards writing faster .NET code, which allocates less.
FSBolero: Smart Web UIs with F# and WebAssemblyÉdgar Sánchez
How to Hack an ElectionGary 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.
Integrate containers and Kubernetes into your Azure DevOps build and release modelMarco De Sanctis
Docker has become a first class citizen in Visual Studio 2019 and porting your applications to containers is easier than ever. The advantages of this technology become really evident in Azure DevOps, when we can easily leverage the flexibility of containers in a number of areas.
This talk will showcase how Docker makes possible to build our code in Azure DevOps by using the most up-to-date SDKs, to create a fully working temporary environment to run our integration tests and to even use containers in order to run UI tests.
Then we will present a possible approach to distribute the images in Azure Container Registry, isolating development images from the production ones.
As a last step, we are going to explore how Azure Kubernetes Service fits into the loop, and how PaaS services in Azure can be created on the fly, integrated with our application in Kubernetes, and monitored altogether when live.
Securing Web Apps in AzureFrans Lytzen
So you have deployed your web app to Azure. Now, how do you make it more secure and compliant?
In this fast-paced talk we will run through an overview of some of the Azure technologies that you can use to better protect your web applications in Azure - all depending on your required security level, of course. The talk will set out a framework for you to consider which protections you want to put in place and provide you with the awareness of the tools at your disposal.
Stop attackers, inside and outside, from getting access in the first place by VNets, encrypting or masking data and removing credentials from code and config.
Know when someone is trying to get in by using Log Analytics, Alerts and SQL Azure Threat Detection
Stop ongoing attacks and limit the impact of attacks by blocking their access, partitioning your application, ensuring attackers can’t get at further credentials and limit what data they can get access to.
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.
Build single page applications with ASP.NET Core 3.0 and BlazorMarco De Sanctis
Blazor is Microsoft's implementation of the WebAssembly standard and it allows you to create rich and interactive client pages, which run entirely in the browser. And you can do it using C#, the Razor markup and the skills you already have gained from your experience with ASP.NET MVC. The integration with an API layer based in ASP.NET Core brings the technology even one step further, thanks to the capability of sharing code between client and server.
Just What Are You Inferring?Gary Short
Infer.net is a framework for running Bayesian inference in graphical models. It can also be used for probabilistic programming, invented by researchers at Microsoft Research Cambridge. Last year it was folded in the ML.Net library.
In this advanced session I'll explain to you the circumstances that limit the ability of machine learning algorithms to make predictions. I will also present the concept of inference as the next step when you hit that roadblock. As an example, we'll use inference to calculate the probability of England winning the Rugby World Cup.
Azure Resource Manager In A Serverless WorldEldert Grootenboer
So we have heard about using Infrastructure as Code to deploy our environments and resources, but how do we apply this in a world of Platform as a Service and Serverless? What tooling can we use, and how do we ensure our templates are created correctly?
In this session you will learn tips, best practices and techniques from real customers on using Azure Resource Manager templates to make your journey as smooth as possible. We will see how to get started on creating templates, how to easily move from portal to Infrastructure as Code, and what tools are available to help us with this. And we will dive even deeper, looking into deployment strategies, feature flags and other complex solutions.
Real Outcomes from AIAndy Cross
Andy Cross, Director of Elastacloud, Microsoft Regional Director, Azure MVP and all round good guy, gives a session on how to successfully build or transform a business using AI technologies.
I'm actually going to show some code, and show you why a "data scientist" is actually a software developer.
Over the last years, Elastacloud have delivered analytics projects to a variety of customers. The greatest challenges around AI are both technical and organisational. The existing landscape of process and strategy doesn't solve these challenges in combination, and the gap between causes friction and the failure of AI projects.
When modelling the outcome of actions that were informed by AI, possibly enacted by AI, the standard risk modelling approaches need to be transformed to include a factor that can change over time to represent the effectiveness of the AI solutions. Given that we should accept errors as part of the AI solution, and that errors are reinforcing of better future decisions, we need to project risk as a decreasing vector over time.
Solving the Travelling Surveyor problem in .Net using Google OR ToolsJoel Hammond-Turner
The "Travelling Salesman" problem is a computational classic - but firmly grounded in the real world. In this session I'll discuss how at Landmark we used Google's Open-Source Optimisation & Routing (OR) Tools to generate recommended routes for hundreds of surveyors and thousands of jobs on a daily basis for one of the largest firms in the country. We'll cover the basics of the problem, and some of the classic approaches before moving on to how to use the tools Google OR Tools library. We'll look at some pitfalls and limitations - as well as how we created a fluent API for describing general case routing problems to pass to the Google OR Tools library.
Dependency Injection in ASP.NET Core. Why and How?Don Wibier
Join this session if you want to know what Dependency Injection is and how it comes out of the box with .NET Core.
You will learn how simple it is and how you can apply this in your own applications.
We'll go over this with a lot of coding examples so at the end of the session, you are ready to start using this technique.
Fancy Bears are not your problemRobin Minto
Fancy Bear, Stone Panda, Lazarus, Charming Kitten and Equation Group are Advanced Persistent Threat groups. Woah, sounds scary! What are the threats from these groups? Do we really need to worry about them or do they just make attention grabbing news stories? In this talk, Robin will explore why APT groups might not be the thing that application developers need to worry about and the things that should get attention in application security. You'll see some tools and techniques that help find the important problems to work on and the ways to resolve those problems. This is real world appsec.
TPL Dataflow - The Best Little Async Library You've Never Heard OfJoel Hammond-Turner
From the docs: > The Task Parallel Library (TPL) provides dataflow components to help increase the robustness of concurrency-enabled applications. What it actually does is give you the tools to create in-process async pipelines in a simple, structured manner. And I'm betting that like me (until recently), this is a library you'll never even have heard of. I'll cover the basics - Sources, Targets and Blocks - and how to link them together into useful **asynchronous** and **parallel** pipelines within your programs. We'll handle error conditions, cancellation and how to control the degree of parallelism - with samples that give you a bit more than "Hello World".
Azure's Cloud Platform: Building Serverless ApplicationsEldert Grootenboer
Azure provides us with the perfect toolkit of serverless components to build powerful cloud solutions. We have Azure Functions to run our custom code, Logic Apps for our workflows and easy integration, API Management for securing our data and processes, and finally Service Bus for our messaging needs. And all this truly serverless, meaning highly available, dynamic scale and allowing us to focus on logic instead of infrastructure.
In this session you will learn how to combine these services to create powerful scearios, with minimal effort. Come and see how easy it is to get started, while still gaining a lot of possibilities.
Real World Azure: A Journey From On-Premise Monolith To The CloudJames World
You read the tutorials and watched the training videos - but you've got a nagging feeling that moving to the cloud isn't going to be as easy as it looks!
In this talk, I'll outline the strategy we've followed at Thomas International in taking a classic monolithic style on-premise architecture fully into the Azure cloud. We recently turned off the old data centre, but the journey to be fully cloud native is ongoing.
Learn about how we did it, what surprises we encountered, lessons we learned, and what's still on the road ahead. I'll be covering a whole swathe of Azure services, so there should be something for everyone!
Logging and Alerting with Application Insights Azure Log AnalyticsSteve Spencer
In a world where distributed systems are the norm and where we are building more and more things as micro-services we need a way to keep track of what is going on. We need a central place where we can collate all the information we need to diagnose any issues we have without needing to remote onto a service and look through the log files. Wouldn’t it be good if we could also write queries and create alerts so that we know when things are going wrong before our customers do? This is where Application Insights and Azure Log analytics comes in. This talk will show you how to use Application Insights to add logging to you applications and introduce some of the capabilities of log analytics, show how you can query your logs and create alerts.