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.<p>
Machine Learning for MugglesMartin Kearn
Artificial Intelligence is the latest hotness. We’ve heard how bots are going to be the new apps allowing natural conversational interfaces. Siri, Cortana and Google Now are no longer a gimmick and are becoming more useful every day. Machine Learning sits behind artificial intelligence and on the surface it may seem like a deeply technical, scientific topic. We are here to tell you that it is more accessible than you think. We’ll look at some of the basics around machine learning. We’ll also look some of the API services that make it very easy to implement artificial intelligence ‘smarts’ into your application with simple, standard REST calls
10 more things you need to do to succeed as a Tech LeadJoel Hammond-Turner
In 2014, I talked about 10 things that I believe any developer stepping into the role of Tech Lead needs to do to succeed.
This year, I've got 10 more things you should be doing as a Tech Lead.
This new 10 things are a little more specific, and a little more controversial in places, but they're tried and tested and well worth considering, if not implementing right now!
Metrics driven developmentSam Elamin
Moving to a distributed system will solve all your problems and you will be in developer heaven. Right? Not exactly, having hundreds of services doing different things means it's increasingly difficult knowing where exactly production issues are hiding.
In this talk Sam Elamin will relate his real life experience working on a distributed system dealing with £100,000 worth of transactions every hour. Sam will cover monitoring and how to develop your features based on how your customers use your platform and, most importantly, business metrics.
Sam will cover how to implement metrics in your application and setting up dashboards to gaining visibility into what is happening in your production system right now. We'll also go through some helpful techniques to help you convince your domain experts that gaining this insight is invaluable to keeping your competitive advantage.
As an extra treat come and see how JUSTEAT time travels in production, using open source software that can be set up in a matter of days!
Introduction to node.js: From "Hello, world" to deploying on AzureColin Mackay
In this talk, I'll discuss what is node.js, show you the obligatory "Hello, World!" application, how to add dependencies into your project including how the node package manager works and finally how to build a basic web application in node.js and deploy that to Azure.
Becoming an awesome Open Source contributorChristos Matskas
Have you always wished you could contribute to Open Source but didn't know where to start from? Perhaps you want to build something great and gain invaluable experience by working in open source? Or you just 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, the development tools necessary and what it take`s to become a successful first-time contributor and collaborator in this welcoming and open community.
Docker Changes the Way You Develop and Release Your Scalable SolutionsTugberk Ugurlu
Developing a distributed software solution is hard. Even if you boil it down to modular pieces and nicely define deployment boundaries, what matters at the end is that all of those modular pieces should work together in a cohesive way. It’s a must to get it building and working locally to see it in action but it’s a challenge if you have too many moving parts. Not to mention you need to control this many moving parts in production, too.
I have been working in a .NET project and it has many moving parts including MongoDB, Elasticsearch, Redis, HTTP Services, worker processes, clients… I felt the pain very deeply. However, I was able to see the light at the end with Docker. Docker made it easy to glue all the pieces together in development, pre-production environments and production. Getting the application up and running is just possible by running a single bash script thanks to Docker’s declarative nature.
But, how? How does it all work together? What are the tips and tricks to get it all functioning properly? Is Docker the magic silver bullet? What are the caveats? Join me in this session to walk you through the 1000 feet overview of this architecture and answer these questions based on my experience. By the end of this talk, you should have the right concepts in your mind to start thinking about bringing your solution to a high quality, stress-free level.
Learn how to become a Visual Studio Jedi MasterChristos Matskas
Do you spend most of your day working in Visual Studio? Do you feel that you know all there is to know about it? Would you like to learn how to unlock some of its hidden features in order to boost your productivity and code more efficiently? Visual Studio's powerful IDE comes crammed with numerous features that can suprise and amaze you. Join Christos Matskas as he showcases some invaluable tips and tricks to help you become a Visual Studio Jedi Master.
Safe At Any SpeedIan Cooper
You committed to TDD, you embraced your agile methodology, you read up on CQRS and whiteboarded your microservices. The time has to come to release and you are brimming with confidence. But once you are live the pain starts coming; deadlocks in the Db, servers that begin queuing requests and then fail, users reporting errors you have never seen. Keeping an application alive in production takes more than just good practices. You have to understand stability patterns like retry and circuit breaker, you have to understand what it means to be a multi-user system if you don't want deadlocks, you need to understand what happens if you lose a node and you need to know how to monitor your application in production so you can understand the pain when it hits you.
In this presentation we explore some of the key patterns you need to know to keep your application alive in production. By the end of the session you should have a far better idea of what you need to know to stay up.
Windows brings Docker Goodness - What does it mean for .NET developers?Naeem Sarfraz
You've ignored them long enough now, Microsoft is bringing Containers to you in Windows Server 2016. Yes, that's right, you'll be able to run Containers on Windows using Docker.
In this talk we'll run through getting started with containers and deploying a ASP.NET Core (formerly ASP.NET 5) application into it. We'll be focusing on what this means for your workflow as a developer using the latest offerings from Docker & Windows Server.
Getting started with Unity3DLee Williams
With the rise of Indie Game Developers we take a look at one of the biggest tools being used right now. In this session I will be talking about my experience as a developer learning Unity and some of the common mistakes and how to avoid them from happening to you.
We will be creating a basic 3D game from scratch written in C# and using some free assets from the Unity Asset Store. I will also be showing you some examples of what I have been working on over the last year and looking at some lessons learnt.
Giving apps intelligence with Cognitive APIsJames Croft
You may have seen this in action with sample demonstrations like the "how old do I look?" website but how do you go from having fun with smart APIs to gathering useful information to provide rich user experiences in your applications.
This session will take a look at Microsoft's Cognitive services, which allow you to build smarter applications using the knowledge of the web, and how you can integrate them into new or existing projects with demos!
Beautifying your mobile appsJames Croft
There's more to creating mobile apps than a great idea and a developer. The best apps don't get where they are without a great user experience that keep the user engaged and excited to use them.
In this session, we will take a look at common UX concepts for creating beautiful, simplistic mobile apps, show you how you can take an existing app UI and give it a bit of umph with animations, transitions and effects to create a beautiful experience with UWP app demos.
While the demos will focus on UWP, this talk is appropriate for anyone looking to create awesome app experiences and you don't have to be a designer to do this.
Developer UI testing made easy before you commit to source!Richard Wilde
Unit testing helps us when writing any sort of application, however we often end up writing unit tests for small pieces of logic that don't really matter and sometimes miss out on the bigger picture. As a developer we tend to shy away from Web UI testing as the feedback loop is just too slow.
In this demo led presentation we will take a look at a toolset that gives us end-to-end testing to give us far faster feedback. As a developer you will be able to run UI tests before you commit your code to source!
I will show you:
- how to get up and running
- how to screen scrape and take screen captures
- how to test your UI
- how the Page Object pattern can help you maintain your test code
- how Visual Studio Code and Typescript fits in
Building a Continuous Delivery Pipeline using Release Management and Windows ContainersNaeem Sarfraz
How awesome is Release Management? The old WPF tool has been completely re-written to be configured and run directly from the TFS website for both On-Premise or in the cloud with VSTS.
In this session we'll be looking at how easy it is to build a delivery pipeline using the tool and DevOps practises. We'll look to use the new Windows Server Containers to deploy an ASP.NET Core application.
Building (micro) services in .NetSean Farmar
In this talk I will demo how we can build deploy and monitor a couple of (micro) services using the .NET platform.
On 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
Logic Apps! Integration made easyLee Williams
Moving data quickly and securely between applications has always been a challenge. With Logic Apps you can now keep all your services connected in the cloud and on-premise without having to write any code!
In this session I will show you how you can easily integrate many cloud services and automate business processes within minutes. We will also look at how you can extend your existing on-premise systems to integrate with popular cloud services such as Office 365 and salesforce.com
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.
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…
Meet new kid on the block – Microsoft’s .NET is going to rock your world.Christos Matskas
NET Core has been written from the ground up to be the best web development platform for Windows, Mac, and Linux. You can now use your favorite editor to create faster, leaner and more memory efficient NET applications that work everywhere. In this session, you'll get an introduction to the major advancements and an overview of what's changed in the new, brave world of .NET Core. You'll also get the chance to see how you can create ASP.NET Core apps that leverage all the new front-end tooling like npm, Bower, Grunt and Gulp to make development easier. This is going to be session full of demos and information that promises to rock your world!
The Murky World of Hybrid AppsMartin Kearn
The Hitchhiker's Guide to ReduxSam Hogarth
The traditional MVC approach to application structure is eschewed, in favour of a predictable unidirectional data flow. By adopting a few functional programming principles, Redux can significantly reducing the complexity of your code.
To understand the approach, we will first understand its philosophy and what problems it solves. As applications scale they introduce a new set of problems, from developer tooling to communication between modules. Redux has some interesting ideas in these areas too! Utilising hot module reloading and Redux's reducer structure, we can debug by travelling through time. Redux's companion libraries, such as reselect and redux-saga, are targeted at efficient data access and containing asynchronous side-effects.
The Hitchhikers Guide to Redux will present you with a glimpse of the future of front-end development, from a beginner's point of view.
RPC is EvilIan Cooper
As the microservice train thunders into town, it is bringing with it an old enemy - the Remote Procedure Call. Libraries like Thrift are being used for client-server communication and no one seems to be looking back to the past to understand why we ran screaming from RPC last time. Drawing on bitter experience of DCOM, .NET remoting and Web Services, and his very British desire for a decent cup of tea, in this talk Ian Cooper will explain the anti-patterns of RPC and look at the alternatives which will ensure your system stays stable and he gets a decent brew.
Running a real-world node.js applicationColin Mackay
Node.js is taking off in the .NET world in the build pipeline, but you can also run real world web applications with it too.
Busting the Myths with Cross-Platform XamarinFilip Ekberg
You're promised high amounts of code sharing when building your next million dollar business with Xamarin, but is that really what's going to happen?
We'll uncover the truth about code sharing with Xamarin; looking at custom renderers versus doing a native UI approach, as well as talking about how these decisions can haunt your throughout the development and maintenance of your app.
DDD: The God that Failed?Gary McLean Hall
DDD is rarely applied 'properly'. When directed at the right sort of problem and executed well, DDD is a valid solution. But DDD is over-used, misunderstood, misapplied, deified, and just downright bastardized. It is a small core concept that has gargantuan consequences throughout the solution.
Thankfully, there are alternatives. By following the Single Responsibility Principle at an architectural level, we can create a suite of small, decoupled services with high internal cohesion. These services can be composed and orchestrated in many different ways to solve business problems.
React for the .Net DeveloperChris Canal
ReactJs is the new hotness for creating maintainable, composable UIs. In the session, we will cover what ReactJS is, how it works, and what advantages you have as a .Net developer. This session assumes you are comfortable with web technologies, most of the Gang of Four design patterns, and cursory knowledge of declarative functional coding.
Love and Death -- or, Everything you wanted to know about coupling but were afraid to askKevin Rutherford
TDD is the panacea of software development, the golden child of Extreme Programming. But there is a problem with test-driven development. A big problem. Everywhere I go, I see teams practicing TDD, and yet they are still creating horrible, smelly balls of mud. Code with many tests, and yet also many bugs. Code with many tests, but which cannot be refactored. How can that be possible?
The problem lies in the third step of the RED-GREEN-REFACTOR cycle. It's just too difficult!
In this talk we will explore a tool that can help us decide what to refactor and when. That tool is COUPLING (aka CONNASCENCE).
WARNING: Many of the slides in this talk will show code snippets.
Code Quality and Static Code AnalysisStephen Haunts
Visual Studio offers many great tools to help you with improving the quality of your code. These range from unit test tools, code metrics tools and static code analysis.
In this talk we will explore some of these tools and also take a look at tools like NDepend which offers a very rich palette of tools to help assess the quality of your code, or investigate dependencies of legacy brownfield code.
Securing your API with OAuthFilip Ekberg
Rolling your own security layer on top of your API? Stop it. You'll end up regretting that decision for the lifetime of your API!
Why should you care about OAuth and Identity? What's the difference between authoriation and authenticaiton? Should you just roll your own OAuth implementaiton (No!....)?
I'll make sure you know how to secure your API with OAuth, be it with IdentityServer, or some PaaS. You'll know the difference between all the OAuth flows and where they're applicable. We'll see how to approach this from the server, and the client.
.Net Mvc SecurityJohn 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 focuses 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
• Insecure direct object references
• Sensitive data exposure
• Missing Function Level Access Control
• 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.
This talk has already been presented at DotNetNotts, Derby.Net, LeedsSharp and NEBytes and has had great feedback from the developers who have seen it.
SignalR - Can a real-time library for .NET be more awesome?Christos Matskas
.NET developers now have a great, open source library for implementing real time communication solutions both on the web and the desktop. SignalR is a persistent connection abstraction library for .NET which was inspired by tools such as socket.io and now.js on Node. Join Christos Matskas as he shows you how to get started with SignalR, it's requirements, features and supported platforms. Leaving this session, you will have a firm understanding on how SignalR works and how to leverage this amazing, community-driven library to provide real-time experiences for your users.
Getting Into the Zero Downtime Deployment WorldTugberk Ugurlu
Continuous delivery is a huge step forward in our ability to rapidly deliver features and value to the users of distributed applications, but it comes with a cost and a responsibility. Most modern web applications need to be highly available, and this also means that it should be up during the deployments. Dealing with zero-downtime deployments is a challenge, and there is no easy solution. Moreover, the solutions available vary based on the number of integrated clients, which parts of the World it addresses, how many active users it has... Isn’t there a simple way to figure out how to get there?
Join me to get into the details of the key steps on your path to zero downtime deployments. Learn about the patterns, practices and techniques that make it easier, such as semantic versioning and blue/green deployments. We’ll also walk through an end-to-end demo of how a high traffic web application can survive the challenge of deployments.
What seemed insurmountable at the start of the session will be practical and applicable by the time we’re finished, and you should be able to see how to start moving your production application close to the zero-downtime gold standard.
.NET Data Security : Hope is not a StrategyStephen Haunts
Not encrypting your data is a risky move and just relying on 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 product a hybrid encryption scheme which includes AES, RSA, HMACS, and Digital Signatures.
Creating VSTS extensions for fun and profitRichard Fennell
TFS 2015 and VSTS share a new extensions model with an associated Marketplace for web widgets, build/release tasks and other components.
In this session I will look at how you too can write these extensions, there will be PowerShell, NodeJS, Visual Studio Code and much much more!
But I don't use TFS or VSTS I hear you cry, will all is not lost, the session will also focus on the DevOps workflow I am using that allows me to locally build my extensions and then share them in the marketplace as private extension to only my test accounts, prior to full publication when I am happy.
So something for everyone
Back to Basics: Efficient Async and AwaitFilip Ekberg
We've all experienced deadlocks, and we all hate them, but how do we prevent (and potentially fix) them?
That's right, no one likes applications crashing or giving users an unexpected behaviour. Introducing asynchronous patterns is so much more than just applying async and await to your methods; you really, I mean really, need to understand what's going on.
In this session, we'll make sure you know how to avoid crashing your applications, and how to adhear to best practices when applying asynchronous patterns in our .NET applications.
Component Driven Development with AureliaSean Hunter
The web development and design worlds are converging on the idea that websites should be built out of a system of components (or significant panels) rather than the traditional monolithic website approaches of the past. Building websites in this way improves agility, testability, reusability, and even team collaboration. The design world is also moving in this direction with the increasing popularity of Atomic Design http://bradfrost.com/blog/
In this talk we’ll take a deep dive into how to build component based single page applications by combining Aurelia’s dynamic composition and CustomElement & CustomAttribute features. We’ll then look at how we can make these components communicate in a way that is simple to implement and maintainable in the long run, by combining DataBinding and pub-sub with the AureliaEventAggregator.
Desiging Solutions with Ployglot Persistance In-mindTugberk Ugurlu
The World we live in today makes us deal with a lot of information. The solutions we put out there also has the same problem. We collect a lot of data through our applications and we try to give those data back in a non-asphyxiating fashion. Doing this with a single data storage technology makes you feel definite agony even on a medium-scale solution but it's next to impossible to provide a viable solution in a large scale products like Foursquare and Twitter.
This is where the polyglot persistence comes into picture. As much as the word "polyglot persistence" sounds extremely fancy to your ears, it's also not that straightforward to adopt in a solution, especially in existing ones. Come and join me in this session to learn about what most matters in this type of architecture to build a viable, maintainable solution. Also, I will be talking about how to make decisions to choose the right data storage technologies based on my personal experiences I gained with the side project I am spending my nights on.
By the end of the talk, polyglot persistence should seem less scary and you would at least have one real world example in your mind on how a solution is being architected where polyglot persistence is the solid foundation.
Azure Functions is the cool new kid you want to hung out withChristos Matskas
Getting your Splunk on - a developer's introduction to SplunkJoel Hammond-Turner
Splunk is a magical tool - it sucks in your logs, indexes them and gives you a rich search and data mining application to drill deep into them.
But as a developer why the heck would you want to use such a DevOps'y tool?
In this session, I'll show how using Splunk whilst developing can give insight into your code - how to time transactions, graph volumes and analyse performance - and how Splunking as a developer will make life in production that much easier.
Run Your Team Lean and Deliver MoreStephen Haunts
Lean software development (LSD) is a translation of lean manufacturing and lean IT principles and practices to the software development domain. Adapted from the Toyota Production System, a pro-lean subculture is emerging from within the Agile community
In this talk we will look at Lean Software Development and how it is a benefit to modern development.
We will start off quickly looking at Waterfall and Agile, and then look at the history of Lean and its origins at Ford and Toyota. From there we will show how leans applies to software with the following lean principles:
- Eliminate Waste
- Build Quality In
- Create Knowledge
- Defer Commitment
- Deliver Fast
- Respect People
- Optimize the Whole
We will then answer the question Agile or Lean and then look at different software practices that will help support your use of lean including Kanban.
The talk would be aimed at software developers who are keen to apply lean to their software projects.
Jankety JankBen Cooper
Rendering performance is becoming such a prominent figure in web applications that not having an understanding will cost you dearly in the eyes of your users. Understanding how the browser optimises rendering and what the app lifecycle consists of, your apps will be running at a silky smooth 60 FPS in no time.
With no particular focus on a specific rendering engine, we will focus on what is known as the "Rendering Pipeline" and provide a detailed understanding of the tasks which must take place in order to get your web application on to the screen.