Lessons learned from building real world chatbotsGaliya Warrier
In this session, we will cover some basics of building conversational interfaces (chatbots) and explore the practical use cases that are now being implemented by the companies in various ways to interact directly with their customers, internally, or simply improve their backend systems. We will touch on the design principles, and discuss examples where the chatbots shine the most and when they really should not be considered despite all the hype. By the end of the session, you'll know how to build a simple chatbot, as well learn how to take it forward.
Blockchain, Ethereum and Smart contractsJuan Blanco
Ethereum is becoming one of the main blockchain technologies from both a public and enterprise perspective. Many businesses are implementing and exploring ways to use this blockchain technology to create new decentralised applications and improve existing business processes, trust and regulation. On this session, we will have an introduction to the Ethereum blockchain. Including development topics like smart contract creation using the solidity language and Ethereum integration using .Net.
Creating Desktop Apps for Windows, Mac OS and Linux with your favorite web-tools and Electron.Don Wibier
You build it, you run itChris O'Dell
You’ve collaborated with the Product Owner and ensured the feature matches requirements. You’ve collaborated with the Architect to achieve the best design. You’ve collaborated with the QA to ensure everything works as expected. Then, you’ve thrown it over the wall to Ops and moved onto the next feature. Job Done. Or is it? Development of a feature doesn’t stop at deployment, your involvement continues for the lifetime of the product. If you want great power to control the choice of tooling and approaches, then you accept the great responsibility of ensuring it works, and remains working, in Production. In this talk I’ll explore the topic of Developers supporting their own features in Production. I’ll cover the benefits of this approach, including greater understanding of your product, its usage and performance, and how this data can be fed back to improve your product. I’ll also talk about the downsides of being on-call, combined with the strategies from Ops teams on how to handle these. You’ll come away from this talk feeling empowered to own your own work.
SOA lessons learnt (OR Microservices done better)Sean Farmar
Service Oriented Architecture has been around for a while, 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.
Teaching Your Computer to ReadGary Short
Sometimes there's just no shortcut other than to read and absorb a lot of written material. When I'm faced with such a situation, naturally, I cheat. In this session I'll show you how to I do it. We'll create a machine learning bot that will curate a lot of written material and then provide us with a summary of the main points as well as creating a graph of the content for us so we can get a "single view" of a complex topic.
Security and hacking in 2017Christos Matskas
The past few years we've seen an explosion of hacks taking place. High-profile companies are p0wned by hackers and an inordinate amount of personal data and credit card details can be found for sale on the not-so-dark web. How can we still get this wrong? In this light hearted session I plan on doing a quick tour of the current threat landscape and use stories from the field to talk about what's still wrong with our industry and how to make things better. Get ready for a roller-coaster ride through the bad and ugly in application security. Hoodies and black terminals optional.
Machine Learning with RBarbara Fusinska
Data Science is becoming more and more popular. It covers a variety of topics and requires a wide range of skills. R is a programming language dedicated to working with data. The platform offers numerous libraries and implementations of machine learning algorithms. This makes it a perfect tool for exploratory data analysis and presenting the results of inquiries and data science in general.
In this talk, Barbara will present capabilities of R in a field of data science. Along with theDuring this session, the audience will gain basic knowledge on using R when working with data. Attendees will find out how to follow the process of machine learning. Finally, they will learn various ways of applying R when preparing the data, running machine learning computations and presenting graphical results.
languagebasics session will cover specific data applications. The presentation will be built around typical machine learning problems like classification, regression and clustering. Barbara will show how to prepare data, perform learning computations and present the results.
Becoming an awesome Open Source contributorChristos Matskas
Are you a developer that wants to give back to the open source community? Perhaps you're already a seasoned contributor but you want to get better? Or you want to join the open source movement because, well, OSS is the future? Just look at all the cool tech built with OSS: Node.js, BootStrap, ASP.NET etc. Join Christos Matskas to learn about the many ways to contribute, key development tools in OSS projects and tips about what it takes to become a successful first time contributor and collaborator in this welcoming and open community.
Serverless with Azure Functions - as cool as can beChristos Matskas
Introduction to Azure Web ApplicationsChristos Matskas
You need a hosting solution for your site. Or maybe you want to deploy your shiny new blog. Or your company needs a fully scalable and reliable solution for its new application.Azure Web Applications is one of the most mature PaaS solutions and it's a cost-efficient, scalable and reliable platform to deploy any website with support for most popular frameworks and languages. It even supports containers out of the box and has transformed the way developers deploy and test their code. In this session I will show you how to deploy and use Azure Web Apps and touch on advanced features like Kudu and log management.
You keep using the word agile, I do not think it means what you think it meansNathan Gloyn
More and more you hear of people that have being working in an agile team writing blog posts like "Scrum should die in a fire", or people on twitter complaining about "yet another agile meeting that goes on for hours"
The first thing that comes to mind when I read these posts/tweets is that the person wasn't working in an agile manner in the first place.
In this presentation I'm going to look at what people frequently think agile is, explain why it’s not agile, and then move on to discuss what agile is covering principles & practices.
I can't promise I'll provide enough information to allow you to fix agile where you work but hopefully you'll have a better idea of what agile looks like which in turn could help you improve your agile implementation.
Personalisation Architecture in ASOSAli Kheyrollahi
Beyond the hype around Big Data and Microservice architecture, there is a real need in this highly competitive market to provide the most excellent user experience powered by personalisation. We in ASOS take this very seriously and our 3-year journey to produce state-of-the-art personalisation has turned an important corner and we would like to share our experience with you.
What does it take to churn terabytes of user interaction data via machine learning to produce recommendation models for 20 million customers and generate recommendations in real-time and serve them up to 1000 request per second while maintaining a 95th percentile of 250ms? What is the level of complexity when you have to marry Spark with Cassandra with Elasticsearch and all powering an API?
We are happy to share our secrets.
Shifting from one app does all to multiple apps working togetherJames Croft
You're probably used to looking for those killer applications that have every single feature imaginable. Have you found one yet? Probably not. If you have though, it's probably not perfect.
This is where app extensibility comes in handy. In this session, we will cover how you can move away from traditional one app does all approaches to building more manageable, extendable applications using the Universal Windows Platform.
Client-side web performance for back-end developersBart Read
C# 7 and beyondJoseph Woodward
Since C#'s initial inception back in January 1999 under the original name of COOL (standing for C-like Object Oriented Language but later dropped for trademark reasons), we've seen C# grow from strength to strength with each release. Fast forward 18 years and C# is still going strong, with version 7 being bundled inside Visual Studio 2017 we'll stop and take a look at the latest developments and language features being made available to us. We'll look at what they are, how we can take advantage of them whilst also taking a peek under the covers of the more interesting C# 7 developments such as the new ValueTuple type, pattern matching and more to see how they work and their limitations. After covering C# 7 we'll move on and take a look at what the future of C# has for us by looking at some of the proposed changes that may make it to C#8 or later.
Analysing SQL Server performance: execution plans, extended events, and profilingBart Read
Dealing with performance problems in SQL Server can be a daunting prospect, especially for the casual or part-time DBA, whose main job is software development.
But SQL Server actually provides a host of tools to help you understand and fix performance issues, so in this session we're going to take a good look at what's available.
We'll cover execution plans, which give detailed insight into query performance, and how to go about interpreting these sometimes confusing diagrams. We'll also look at the more comprehensive SQL Server performance data you can collect using extended event traces (recommended) or, if you prefer, SQL Server Profiler, along with ancillary data available from tools such as perfmon, and SQL Server's built-in DMVs.
By the end of this session you should have a good idea of how to begin tackling any SQL Server performance problem you might encounter.
Fun with the Twitter Stream API - ELK Stack, RabbitMQ, Redis and High Performance SQLDave Mateer
Taking an existing system which consumes 4.3m Tweets per day then making it more Scalable and Testable. What happens if we need 10x the scale? Will look at: Signing up to the Twitter API Simplest possible C# app working consuming the Twitter stream: Making more scalable with RabbitMQ ELK (Elasticsearch, Logstash, Kibana) stack Caching with Redis SqlBulkCopy ETL patterns This application has been in development for 6 months. It is born out of 7 years of writing similar enterprise software - can my system handle 2x or 10x the load if I need it? Can I prove my system is working ie Auditable/Testable and Dashboard overviews.
Lions, and Tiger and Hackers - Oh My!Phil Winstanley
In this session Phil Winstanley (Microsoft) will talk about the current cyber threat ecosystem, who the bad guys are, what they want and why you should care. We’ll cover hackers, security, privacy and how we’re pretty rubbish it at collectively and what, if anything, we can do to keep the bad guys out and keep our systems and loved ones safe.
Functional Programming in C#Ian Russell
Functional programming has been one of the major trends in software development over the last few years. Most of the most important new features of C# in the last few versions have been ported from F# (e.g. Generics and LINQ). In this session you will learn how think functionally and make use of the new functional features of C# to improve how you write your software.
ASP.NET Core Razor Deep DiveJoseph Woodward
Along with many parts of the ASP.NET Core framework, one area that's seen lots of improvements is Razor, ASP.NET Core's powerful view engine. In this talk we'll dissect what's changed in the Razor view engine, how we can utilise Razor's new tag helpers, View Components and more to create cleaner, reusable and maintainable markup and views (along the way we'll stop to learn some tricks, tips and features you may not know!). If we have enough time we'll also take a look at some of the upcoming features in Razor and discover how we can extend Razor to go further than we thought possible 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.
Service Discovery with Consul.io for the .NET developerJoel Hammond-Turner
Microservice architectures are all the rage - hundreds of tiny services, all communicating - built, versioned and deployed independently. But even if your application only has a very few components, as soon as you go for High Availability you're already deep into that world.
Enter Consul.io - your saviour of service discovery.
In this session, I'll explain the High Availability architecture employed at Landmark, and how we've use Consul.io to provide discovery, monitoring and load-balancing for our services across an environment that spans two geographically separate data centres.And as a bonus, you can potentially get rid of a LOAD of configuration in your app.config or web.config file.
Introduction to Azure Service FabricSteve Spencer
Azure Service Fabric is the Microsoft microservices framework and this talk explains how to build applications that can be deployed in Azure, on your own infrastructure or in a Docker container. Service fabric lets you deploy your own existing services or build them using the service fabric framework to take advantage of the built-in microservices features that service fabric provides
Ten tips from real world SonarQube experiencesMatteo Emili
I use it on personal projects, I use it on enterprise, production projects of all sizes and I use it since more than a year. What did I learn dealing with SonarQube in my TFS and VSTS environments? A lot! Come and see ten tips from the real world which might help your implementation and raise the quality bar for your projects.
Thinking Functionally with .NETJohn Stovin
The determined programmer can write FORTRAN programs in any language - Ed Post
Recent versions of C# have seen the introduction of many features that originated in the functional programming arena - but where did they come from, and where do they lead to?
To think and program functionally, you need to reassess 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, John will talk about some of those fundamental idioms, explain why they exist and how they interact. Even if you never write a line of F#, he will explain how you can apply theese principles to your OO code to make it cleaner and safer.
Introducing Elixir: Self-healing applications at ZOMG scaleAndy Pike
Elixir is a new functional language built on the Erlang VM. We’ll tour the Elixir language and it’s most important frameworks to discover what makes Elixir a great choice for building systems at ZOMG scale and how those systems stay up for so long with Wolverine level self-healing.
Elixir’s secret is in its Erlang heritage. When was the last time your telephone network went down? Never, right? That’s because most of the telephone network is written in Erlang. How does WhatsApp manage to support 1.2 billion users and deliver 42 billion messages a day with only around 50 engineers? Yes, Erlang.
Elixir takes the power and stability offered by Erlang and makes it more approachable, with a Ruby inspired syntax, simpler abstractions and some powerful tools which will enable you to build concurrent, fault-tolerant and distributed systems. We'll find out how this functional language is the most Object Oriented of all languages and how microservice architecture is built right in.
Challenge yourself to break out of your comfort zone and look at how other languages solve problems. You’ll become a better developer if you do.
Mmmm, Chocolatey Goodness!Gary Park
Do you use Nuget to control the packages that you consume in your Development Projects? If so, a natural extension of this is to use Chocolatey (which is built on top of Nuget) to control the installation and update of actual tools/applications on your machine(s).
Chocolatey is a Package Manager system for Windows, similar to apt-get on Linux.
With the recent release of Chocolatey vNext and the successful funding of the Chocolatey Kickstarter, now is the time to be checking out Chocolatey. In this session we will look at everything that is new in Chocolatey. Including, how you can use it to install tools/applications, how you can create your own packages, as well as highlighting the new features that aim to make Chocolatey as stable, secure and safe as possible.
Fun with GitChristos Matskas
Git is the ubiquitous tool for Open Source. It's also rapidly becoming the tool of choice for many enterprises. Hell, even Microsoft's teams are switching to Git. But why? In this session I explain why Git is such an important tool and I'll help you understand how it truly works behind the scenes, hashes and all. This is a great introductory session to Git that goes beyond the "porcelain commands" and helps demystify its inner workings. Leaving the session you'll feel like you were always meant to work with Git. And all this just using the humble command line!!
Control your GitHub releases with GitVersion and GitReleaseManagerGary Park
Have you ever needed to control the version number of your open source application on GitHub? If so, you will likely know that it can be hard! You may have tried to use some form of auto incrementing number, or stored the version in a text file hoping that someone will remember to update it. Both of these approaches (and there are plenty others) will work, but they are fragile, and don’t account for some of the more complicated scenarios.
And then, after controlling the version number, you then want to generate Release Notes for that newly released version. How can you do this without manually trawling through the revision history?
In this session, we will look at how we can improve the versioning strategy of your application using a combination of branching strategy (Gitflow), Semantic Versioning, an open source tool called GitVersion, and the commit history of your Git repository. With the version number in place, we will then use the Issue and Milestone tracking functionality in GitHub to automatically generate a set of concise release notes using a tool called GitReleaseManager.
Successfully Decomposing Your MonolithSean Farmar
Designing a system is hard, it’s even harder to build a distributed microservices style architecture…I’m going to try and walk us through a simplified example of carving our our entities, bounded contexts and processes on the road to building better applications.
TestCafe: Web Testing Made Easy!Don Wibier
Join Don Wibier as he shares just how easy testing your web app should be. Using it's 'plug-in free' design, Don will demo the benefits TestCafe delivers in just a few mouse clicks. • see how quickly TestCafe can be deployed • learn the powerful API • discover the browser based script editor • witness the true independence as Chrome, IE, FireFox and Safari all play host
Goodbye REST; Hello GraphQLSandeep Singh
Do you want a single endpoint to access your data? Fetch only the data your client needs all in a single request? Do away with API versioning? Well if the answer is yes to any of these questions then GraphQL might just be what you are looking for. GraphQL is a query language for your application and not your database. Unlike RESTful API’s, with GraphQL, developers can use composable typed queries to request and receive only what’s required from the server.
We’ll walk through an introduction to GraphQL, drawing comparisons with traditional RESTful API’s, highlighting the implications on server and client design. Live coding examples will be used to illustrate how to get started creating a GraphQL client including: defining a schema, connecting to a database, fetching/manipulating data and much more.
Deploying Applications as Containers on Windows Server 2016Ben Hall
Docker has changed the way we deploy applications onto Linux and
ARM basedsystems. Windows Server 2016 introduces first class container support to the Windows Kernel.
In this session Ben will explore how Docker and Windows will work together, the impact it will have and how you can get started.
Key talking points will include:
- Deploying applications using Windows containers
- Managing Windows containers using tools from the Docker ecosystem
- Combining Linux and Windows containers
- Difference between Nano containers and Server Core containers
- Why Hyper-V isolation exists
- Windows Container Security Model
endattendees will understand how containers on Windows will work and the problems they’ll solve.
Counting Your Chickens After They've HatchedGary Short
We data scientists are sometimes asked to solve bizarre problems. One of the strangest I've been asked to solve this year, was the problem that a chicken farmer had no idea how many chickens he actually had! In this session I'll walk you through the machine learning software I built in order that we could count the chickens. When I was finished the farmer asked me how I'd managed to count the chickens so accurately, I'm not sure he believed me when I told him I counted the legs and divided by two :-)
Countering the OWASP Top 10 web security threatsjohn staveley
The number and frequency of attacks on websites in the news is increasing steadily and effects can be devastating. However for each company that you hear about there are many more who cover up or are unaware of breaches on their sites. Thus what you hear about in the news represents just the tip of the iceberg. This primer session on security focusses on the major risks and the practical steps you can take now in your software development to protect an ASP.Net Mvc website from the major threats in the web today and will include code you can take away and implement in your own sites. Each type of attack will be introduced in a technology agnostic way, then highlighted with some case studies using major breaches as examples, then finally countermeasures which you can use will be proposed for each risk. The attacks I will be looking at are: * SQL Injection * Session hijacking * Password hacking * Weak account management * XSS * Insecure direct object references * Misconfiguration * Sensitive data exposure * Missing Function Level Access Control * CSRF * Unvalidated redirects and forwards A sample code project is included as part of the talk which helps mitigate against all of these threats and more.
Strategic Domain-Driven DesignIan Russell
Since being introduced by Eric Evans in 2003, there is plenty of evidence that Domain-Driven Design (DDD) has gained significant traction in the .Net world, particularly the Tactical patterns (Aggregate, Entity, Repository etc). However the most powerful aspects of DDD are the Strategic patterns (Ubiquitous Language, Bounded Context, Context Map etc) and these have been ignored or misunderstood by development teams. In this session you will learn just how important and powerful the Strategic patterns are in determining how we structure and architect our applications.
TensorFlow in Three SentencesBarbara Fusinska
TensorFlow is growing in popularity as the go-to tool for Deep Learning and building complex AI systems. But there is also a lot of misconception about the capabilities of the platform and how and by whom it can be used in the most efficient way.
Is TensorFlow the silver bullet of AI? Does one need to gain a lot of preliminary knowledge before starting to use the library or can it just be treated as a black box?
In this talk, Barbara will start with three statements and drill down into each of them to reveal the holistic view on what TensorFlow is capable of, what are the limitations and what is needed to start working with the library. The session will cover the following areas:
- Required experience and knowledge when approaching TensorFlow
- Principal concepts and components of the library (Tensors, GPU computing, Deep Learning)
- Methods and applications in the AI field
After the session, the audience will have a clear idea what TensorFlow is and what it is not. The attendees will be able to start their journey with the library and apply it to tackle problems like Computer Vision or Natural Language Processing.
A second helping of Cake - C# powered cross platform build automationGary Park
Now that you have created your first Cake Build Script, it is time to take it to the next level.
In this session we will look at making use of the various IDE and Continuous Integration Server integrations for Cake, including Visual Studio Code, Visual Studio, VSTS, Bitrise, and others.
On top of this, we will look at how to utilise Modules within Cake to customise the internals of how Cake works, to allow you to fine tune your build processes.
Finally, we will look at how you can distribute your Cake Scripts to allow them to be re-used across multiple projects.
This is a level 201 talk that assumes that you already have some understanding of how Cake works.
The Psycological Tricks Your Mind Plays on You That Means You Suck at Data ScienceGary Short
In this light hearted presentation we'll examine some of the psychological tricks our minds play on us that stop us using our cognitive abilities to their upmost. By the end of this session, you'll never look at a "fact" the same way again.
Breaking The Common Myths Around Artificial IntelligenceGaliya Warrier
In this presentation, we will be talking about 5 main common myths around Artificial Intelligence as well as what it can actually deliver at this moment of time. We will discuss and see a demo of interesting AI examples that span beyond chatbots and personal assistants, and that should leave you with some practical ideas on how you can get started in this space.
Developing with HoloLens: The Path to Mixed RealityMike Taulty
Microsoft HoloLens is a self-contained, mobile, mixed reality headset which blends your physical world with your digital world.
In this session, we'll have some fun looking at developing for HoloLens and Windows Mixed Reality by building out a simple demo application to illustrate how you can build features like gaze, gesture, voice, speech, spatial audio and spatial mapping into HoloLens applications with C# and Unity.
Building an OSS CommunityGary Park
When a project on GitHub gets to a certain size, problems start to arise with regard to controlling the horizontal scaling of the project. For example, creation of 3rd party extensions, or addins for the project. This leads to questions along the lines of:
- Is this an official extension?
- It has the same logo as the project that I am using, is it legit?
- I have created an extension for this project, how can I get better visibility for it?
In this talk, we will look at each of these questions, and others, and how they can be handled in order to ensure that both the project, and the consumers of these projects get the best possible outcomes.
This talk circles around the work that has gone into building the Cake and Cake Contributions Organisations on GitHub, which aim to ensure the longevity and maintainability of the growing eco-system of both Cake and Cake addins.
10 more things you need to do to succeed as a Tech LeadJoel Hammond-Turner
What is .NET Standard?Adam Ralph
.NET Standard is one of many new technologies to emerge from the mass of open source .NET initiatives during the past year. Compared to what's come before, .NET Standard is not only a more effective way to use NuGet packages cross platform, it's also way simpler.
It has the potential to remove most, if not all, of the current confusion surrounding cross platform multi-targeting. So what is exactly is it and how does it work? How does it relate to .NET Core? Join Adam as he answers these questions and more, and takes a dive into some of the magic which makes .NET Standard work.
Become a Bot 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!
The Art and Science of Predictive AnalyticsGary Short
In this fun presentation we'll cover the science of predictive analytics, with a look at statistical methods such as regression and Bayesian inferencing, but we'll also have a look at some of the art, those techniques that lay outside of the pure science that we practitioners pick up along the way.
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.
Scaling Docker Containers using Kubernetes and Azure Container ServiceBen Hall
The Azure Container Service offers simple deployments of Kubernetes, an open source container orchestration solution, designed to help manage running containers at scale. In this session, Ben will demonstrate the benefits of deploying Containers to Kubernetes and how to ensure your system remains reliable and scalable by building on top of the Azure Container Service.
Topics and discussion points will include:
- Introduction into Containers
- Scaling considerations
- Deploying Kubernetes
- Migrating Application to Kubernetes and Azure Container Service
- Scaling to meet application demands
By the end, attendees should understand the benefits of using a Container Orchestration system, where Kubernetes fits into the eco-system and how it can be combined with the Azure Container Service.
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.
Deep Learning with Microsoft Cognitive ToolkitBarbara Fusinska
Deep learning has become a very popular artificial intelligence technique. Its capabilities of handling large amounts of data and efficiency when retraining the model made it a useful tool when working on real-world data. Nowadays these abilities are especially useful when trying to recognise patterns from inputs like images or videos which present two dimensions of the big data world, the volume and velocity.
Cognitive Toolkit is a Microsoft open-source system dedicated to solving deep learning challenges. It offers a set of built-in components and sophisticated algorithms, allows to customise the machine learning process and enables easy integration with Azure platform.
During the session, the attendees will get introduced to basic concepts of deep learning and how to use Cognitive Toolkit when approaching them. By applying reinforce learning and neural networks algorithms to the several machine learning challenges, Barbara will demonstrate capabilities of the platform. Presented use cases will help with understanding on how to use core components when building solutions and publishing them to the Azure cloud. In the end, the audience will get the information about the technical roadmap of the Cognitive Toolkit for the rest of 2017.
Building a better Web API architecture using CQRSJoseph Woodward
We've all worked with a monolith and we all know the unbearable pains that come 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 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 that favours breaking your application into features using MediatR, isolating our business logic and utilising the Command/Query Responsibility Segregation pattern to isolate our reads from our writes. We'll also look at how we can utilise features in MediatR 3.0 to introduce cross-cutting concerns such as monitoring, metrics gathering, logging and caching to our API.
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 (micro) services in .NetSean Farmar
In this talk I will show how we can build deploy and monitor a couple of (micro) services using the .NET platformOn the Java platform we have a lot of options to implement micro services, this is not the case on the .Net platform, lets look how we can do this using .Net tools like NServiceBus and the Particular Platform
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.
Take advantage of telemetry with Application Insights to save your day!Matteo Emili
A proper telemetry is critical in a DevOps process and as part of the Application Lifecycle Management for any kind of software and Application Insights is a brilliant tool for closing the loop, with a solution that allows information sharing for the whole team, regardless of the role. Proactive telemetry enables the development team to get a meaningful insight of how the application is used and where the critical 'hotspots' in our system are - also using Machine Learning! - whereas reactive telemetry is the #1 tool for solving problems after they happen. Let's take a look at how to take advantage of all the information we can gather instead of deleting that hundred GBs of logs every few weeks :)
Introducing the LEDS Stack - Linux, Nginx, Dotnet, SQL ServerAlex Brown
- SQL Server
Ok, I made that acronym up.
It isn't yet a 'thing' (as far as I'm aware)
Hopefully we can change that!
This talk aims to introduce you to ASP.net Core, Entity Framework Core, Visual Studio Code and SQL Server on Linux.
First, we'll get Microsoft SQL server set up, on a Linux box (running on a non-MS cloud)
Then, we'll use Visual Studio Code (on a Mac) to create a data-capturing ASP.net core application.
Finally, we'll package and deploy this application to our Linux box, and make it live on the internet.
An intro to F# for C# developersStuart Lang
Do you feel guilty for not taking the time to learn F#? Yes? Good, your language is bad and you should feel bad! No? Well you should (unless of course you already know F#, in which case, I have no beef with you).
In this session, I'll be making the case for F# and outlining contrasting syntax and features to C#.
Please bring an open mind, and no pitchforks.
How to speed up .NET and SQL Server web appsBart Read
Why Service Oriented Architecture?Sean Farmar
When we go about designing and building a scalable durable system we need to solve the number one issue in developing scalable software systems: coupling.Implementing Service Oriented style architecture also refereed to lately as micro-services will help you solve this problem.In this talk, I will try to explain the Service Oriented Architecture’s paradigm…
Using Machine Learning and Chatbots to handle 1st line technical supportBarbara Fusinska
1st line of the technical support is frequently providing answers to FAQ and pre-assembled conversations for operators to follow. With the enhancements in A.I. and Machine Learning, how much of this task could be supported with the aid of software? While this raises many questions and challenges, the first would be how would software understand the intention of the user and hold a human-like conversation.
Based on this particular use case, Barbara will demonstrate how to go from a new project to a chatbot handling technical support. The talk will present the building blocks of the system like receiving and sending messages, natural language processing and integrations with existing messaging platforms such as Telegram, Messenger or Skype.
The session will cover the following topics:
- The existing chatbot ecosystem
- Performing text analysis on user input
- Identifying the best response to the user
- Personalising the response based on who the user is
- Integrating the chatbot into applications and messaging platformsDuring this talk, the audience will gain knowledge of the components necessary to build chatbot based system, including natural language processing and messages handling. The aim is that attendees will be able to go from never writing a chatbot, to building one which is capable of holding a conversation.
Building a modern enterprise with UWPJames Croft
Based on experiences and learning through practice, this session covers the benefits and pain points of moving from traditional desktop applications to modern cross-device applications that works across multiple form factors using Microsoft's Universal Windows Platform. We will take a look at building your modern desktop app, bringing those experiences to the mobile form factor and moving into the future with Microsoft HoloLens.
Improving UWP development skills and techniquesJames Croft
Are you new to UWP application development or looking to brush up on some common mistakes made when creating apps for the platform? Covered within this session will include some coding tips & tricks, pitfalls and how to get unstuck, and building a better understanding of the Universal Windows Platform. This will allow you, as developers, to build great, responsive cross-device applications on laptops, tablets, phones, the Surface Hub and even HoloLens!
How Stuff Works! - Meta-programming in C# 101David 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, David will 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.