Stop treating PowerShell as BatchFile++Derek Graham
In our new world of #DevOps, PowerShell is the glue that binds tools, build systems, deployments and monitoring together yet it's often treated as a slightly more complicated version of your grandfather's batch file. In this session I will be talking about how you can increase the reliability of your PowerShell scripts while reducing how much code you have to write, why and how to test your scripts, and how to write effective monitoring code using Pester.
Office 365 as a development platformDylan Hayes
The services that Office 365 provides are so much more than managed SharePoint and Exchange. These days there's a whole ecosystem of Office services with new lo/no code tools like Flow and PowerApps to provide the connective tissue. Not only that, but when you can't do what you want in Office 365, it's easy to reach out and consume the richness of Azure's many services to fill the gaps. What might have taken weeks to achieve in a bespoke application can be built in hours if you take full advantage of the platform.
The talk will introduce some of the key concepts behind Office 365 as a development platform, outline the tools available, and discuss some of our experiences both good and bad in doing development this way for a variety of customers. The talk will end on a discussion on the far bigger topic of how platforms like Office 365 which are made for automation and AI are not just tools we as developers can use, but also potentially represent an existential threat to the way we work as developers.
Elixir for the C# developerDerek Graham
Have you noticed that C# keeps stealing language features from other, hipper languages? Why keep running to stay up to date in C# when you can give in to the dark side and learn another language? If you find it hard to maintain your 5-a-day of fruit and vegetables, how about the much realistic 1-a-year of new programming languages?
If you have been tempted by Node, Ruby or Clojure, why not try Elixir? Elixir is a modern language with good library, unit test and tool support, excellent concurrency and distributed capabilities, and it's fun! Elixir was enabling microservice-like architectures before microservices were a thing.
We'll cover language basics and idioms, some functional programming, reliability, concurrency, testing and application structure and architecture while building a simple (or not so simple) application.
Finally, I'll talk about what impact learning Elixir has had on my approach to writing in .Net.
DevOps and Microservices Better TogetherSean Farmar
If you are trying to drive towards continuous delivery you will need to consider your architecture.
I will talk about how moving to SOA/Microservices architecture can get you to increase your delivery velocity and how DevOps and Microservices style architectures support each other to help you move to the holy grail of continuous delivery
Confessions of a Tech LeadAdam Griffiths
Almost all technology companies around the globe have a the concept of a Tech Lead. But there’s no definition of the position in the Agile Manifesto and (at least as far as I know) I’ve never met one with an industry certification! In this talk we’ll answer the key questions. How do you become a Tech Lead? Why would you want to? And what do they actually do all day!?
Once I've convinced you that it's a great job I'll take you on a whirlwind tour of a Tech Lead's toolbox by introducing topics like Delivering Business Value, DevOps Practices, and People Skills. We'll discuss each of these and talk about why they're all important to a great team.
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 paper from Alan Turing in the 1950s. In this talk I will present the historical milestones of AI from the originating paper up until present days. In addition we will look into the crystal ball in order to see what the future might have in store.
We will start out our journey by looking at what happened in a workshop in Dartmouth in the 1950’s which started it all. 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 1980’s and its’ reasons.
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 and try to see where AI might takes us in the future.
The Good, the Bad and the Avoidable SQL Practices
Code quality matters! You probably have worked with SQL queries before. What was the experience like? Have you ever looked at a piece of SQL and thought... G! that's ugly! Have you seen a query that worked just fine in development but annoyingly not in production, or it used to work for a while, but then started timing out without any change or a warning? This session is for you! Let's take a hard look at SQL code quality. I will show you some ugly queries and teach you how to transform them into good, clean code, that not only looks right but also performs well.
Solving microservices challenges on the Kubernetes platformShahid Iqbal
Developing microservices based applications is a hot trend in our industry.
Sometimes this decision is based not on trying solving the specific problems that microservices solve but unfortunately a desire to use the latest techniques or, even worse, a desire to adopt trendy new platforms such as Kubernetes and service meshes.
In essence the cart is placed before and horse and application architecture is dictated by platform decisions.
However, let's assume that our audience on the other hand have clearly identified how microservices will benefit them.
This talk introduces a "journey" to microservices and highlights some new problems that are created by adopting such an architecture.
We then step through how we can leverage cloud native technologies such as Kubernetes and the even trendier topic of service meshes such as Istio to try and address some of these new problems.
This talk along with demos will cover many topics in an area which is rapidly evolving however we'll try and focus on the fundamental problems, and demonstrate tools that can help make the experience better or simply easier to manage.
Some knowledge of microservices, containers and Kubernetes is useful but not essential we'll cover the basic topics
Having fun with Generics and Abstract classes in C#Don Wibier
Join Microsoft MVP Don Wibier to bring your C# coding skills to the next level. He will show you one of his own personal killer combi's: Generics and Abstract classes.
With a lot of coding examples, you will learn how to optimize and re-use your code to the max and lay down a solid and flexible foundation for your applications.
Logging, Metrics and Events in ASP.NET CoreMartin Thwaites
Providing decent monitoring of your applications has always been considered the boring part of development, with tons of boilerplate code, and making upfront decisions around how it will be done, or retrofit afterwards. However, with dotnet core, things have changed, it's never been easier to implement effective visibility into how your application is performing in production. In this session I will cover the fundamental differences between Metrics and Logs, and Events and look at where one is useful over the other. We’ll look at some of the things Microsoft has done in dotnet core to make logging easier, and some of the third-party libraries and tools that aim to make it easier to navigate. We’ll cover tools like Serilog and Log4Net, along with AppMetrics for capturing application information. We’ll then take a quick look at Grafana, and see how we can make some sense of that information. Finally, we'll look at Honeycomb.io and how they're providing actionable insights for distributed systems using events, enabling testing in production.
Saving the World with IoTTomasz Bartoszewski
TL;DR Watch the presentation, go home and in 10 minutes build your IoT solution
You don't have to be a super hero, to make a difference to our planet. Just a bit of programming skills will suffice. We can't imagine our lives without electricity. We use it to have light and heat, keep our food fresh, we work with computers, use mobile phones, and don't forget entertainment! We need electricity for driving cars, even more now with Electric Cars.
Electricity is generated mostly with fossil fuels, we can use nuclear power and hope that nobody makes a mistake and people do make mistakes. That's why we build wind farms, solar panels, hydro power plants, but we can't force them to generate electricity when we want. They are not aware of world cup finals. So how can we make sure, we use green power more? We need to store electricity when they can generate it, and use when they produce less, but storing electricity is hard. We have to change the way we consume energy, but it has to be automatic, so people wouldn't even know.
That's what we do at OVO Energy, using IoT devices to change the power usage patterns, create virtual power plant, which can be used when the demand exceeds supply. I will show you how we use Azure IoT Hub to do that, you don't have to be C or C++ developer to work with IoT.
Making a noise with F#John Stovin
Interest in functional languages, including F#, is growing, but there are still many impediments to its wider adoption. One problem is the (wrong) perception that F# is language for financial applications.
In this talk I will attempt to dispel myth, and show that F# is a true general purpose language. I will show how F# can be used to create a simple audio synthesis application, and how the functional approach (single assignment, immutable data, recursion) provides a great way to model the audio domain.
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
Lessons learnt using Packer to build Azure DevOps private agentsRichard Fennell
I think we can all agree it is important to use known configurations when building software within your CI/CD pipeline. You want to only change what you expect to change in any release and you certainly don't want to introduce problems because you don't know what is currently installed on your build VMs. They need to be managed like any software/configuration.
If you are using Azure DevOps Hosted Agents then this problem is managed for you by Microsoft. They update the hosted agents regularly and document the changes.
But how do you do this if you are using Azure DevOps private agents, or some other build automation system? Some sort of VM creation tool is needed.
In this session I will be discussing lessons I have learnt building private build agent images for Windows with Packer. I use these with Azure DevOps Pipelines, the the techniques are applicable to any build system.
This talk will demonstrate how, with the aid of a few of my favourite NPM packages, to write Functional code that is:
- More robust
- Easier to real
- Easier to maintain
We'll look into functional concepts such as:
- Higher-order functions
- Referential Transparency
- Composing functions
This will all be done using ES6, and NPM libraries such as RamdaJS, LoDash and Bluebird.
No promises, but I might even explain what a Monad is...
Affective Computing - What is it and why should I care?Hå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.
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.
Not so SQL any more
What if I told you that you don't have to choose between SQL or NoSQL any more? That wouldn't be quite true, but the choice is no longer binary. Some document databases offer now features typically associated with relational databases and a lot of relational database engines support document types or use techniques pioneered by NoSQL giants. The gap between the data models is getting smaller. Let's see what is possible with JSON and XML documents in SQL Server and how well it performs.
How to make a multi-lingual chatbot and use it in your Xamarin Forms applicationHå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 Microsoft 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 Xamarin Forms application and demonstrate how we can use this in a mobile scenario.
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 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!
GraphQL and Dapper : The quick route to flexible and efficient mobile APIsJohn Stovin
GraphQL is alternative to REST for providing powerful, flexible, bandwidth-efficient web APIs. It was originally developed by Facebook, but is now an open standard.
Dapper is a lightweight Object/Relational Mapping library for the .NET platform. It combines speed and efficiency with access to native SQL.
In this talk I will discuss the concepts behind GraphQL, and why you should consider it if you need an efficient, accessible API for you project. I will demonstrate how to design a simple GraphQL API, and how to use the graphql-dotnet and Dapper.GraphQL open-source libraries to implement this API for an existing application database.
Dependency Injection in ASP.NET Core 2. Why and How?Don Wibier
In this session Microsoft MVP Don Wibier will tell you why you should use Dependency Injection (DI) in
your applications. He will next tell about how this is done in .NET Core 2 and by coding examples, he’ll
show you how easy it is to start using this yourself.
Why you should consider Web Assembly in your next frontend projectHå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.
All your code are belong to usDerek Graham
"All the brilliant people, working on the same thing, at the same time, in the same space, and at the same computer."
That may sound like a recipe for disaster but Mob Programming is a new way of working in teams that encourages collaboration, promotes shared understanding, increases productivity and improves the quality of the software you deliver.
In this session you'll learn what makes Mobbing so effective and why it's better than working independently or in a pair.
We'll look at:
• Mechanics of Mobbing
• Organizing the environment
• Team heuristics
• Dealing with competing solutions
• Coding as a team
• "Real time" retrospectives
• Including subject matter experts, testers and analysts
• Woody Zuill - Evil, Genius or Evil Genius?
I'll share what I have learned over the last 2 + years using Mob Programming at work, in training sessions and on open source project teams, how you can use it immediately to see benefit on your current project, how to get started and how to avoid getting stuck.