React.js and FriendsPaul Aikman
React.js has seen some stellar growth over the past couple of years, and its adoption doesn't seem to be slowing down.
In this session I'll give a short introduction to the framework, and share some of my experiences of introducing React into new & legacy projects.
As part of the session, I'll try to answer the following points (time allowing!):
- What is React? Where did it come from?
- What does a React component look like? What's JSX?
- What does a typical workflow look like? What are the options?
- How do projects like React Router and Redux fit into the picture? Are they hard to integrate?
- What are the use cases for React?
- Where can I see React used in production?
- What's the future for React?
- How do I get started?!
ASP.NET Core 2.0 Razor Pages - Getting StartedDave Mateer
We will go from File New Project towards a production ready high performing business application showing my favourite libraries.
-What are Razor Pages?
-When to use them?
-Why use them?
We'll then cover: Tag helpers, Validation, Binding, PRG, EF scaffolding trick, DI, Routing, Authentication, Logging, Exception handling, SSL. Libraries will include Dapper and Polly (DB Resilience). We'll talk about the CSS/LESS and bundling/minification/cache busting
Kubernetes - Container, Clustering, Catastrophe?Rory McCun
Hot on the heels of the rise of containerization, organizations have been looking at how best to orchestrate containerized workflows. One of the leading solutions, Kubernetes, is seeing heavy adoption in many industries including banking and government.
Kubernetes is being driven by a lot of the major technology companies including Google, RedHat, Amazon and Microsoft who all see it as an important component of the modern application lifecycle process.
Of course with any new, complex technology there's the risk of security problems. This talk is about what I've found in my research, what you need to do to secure Kubernetes, when deployed on premises or in the cloud, and also touches on some of the wider issues of what happens when Open Source projects and large companies collide.
Managing standardised environments without ContainersChris Gardner
Containers are a great technology for ensuring an application has a consistent platform regardless of if it's running in dev, test, QA or production, however they aren't always the correct technology for all applications. PowerShell Desired State Configuration can be leveraged to enable legacy applications to enjoy the same consistency across deployment environments. This talk will cover the basics of DSC and some of the ways to implement it both on-prem and in the cloud to ensure the same outcome no matter what the platform is.
I’ve been using DSC in anger as part of my day job for some time now, and I’ll share with you tips and tricks that I’ve picked up on the way. Dev or Ops alike, come along to learn how PowerShell lets you declare how you want your servers to be configured, and how the DSC pixies make it happen
sing DSC in anger as part of my day job for some time now, and I’ll share with you tips and tricks that I’ve picked up on the way. Dev or Ops alike, come along to learn how PowerShell lets you declare how you want your servers to be configured, and how the DSC pixies make it happen
How to parse a fileMatt Ellis
Yes, we're going to look at file parsing. Sounds a bit boring, right? Wrong.
In this talk, just for fun, we'll find out how to parse a file. We'll look at simple, hand crafted parsers. We'll finally figure out just how lex and yacc work. And we'll pick apart structured parsers that build abstract syntax trees as you type - ReSharper style. How is an IDEs parser different to a compilers? How do you handle sensible error recovery? What about significant whitespace?
Everything you always wanted to know about parsing a file, but were too afraid to ask.
What did I learn trying to migrate teams from legacy to modernMatteo Emili
<p><span lang="EN-US">I spent an incredible amount of time doing migrations and transformations (on both process and technologies), as a consultant for most of my career and then inside a product company, bringing ALM, Agile and then DevOps to people varying from who was willing to change and who just wanted to retain their 20 years old habits.</span></p><p><span lang="EN-US">The amount of lessons I learned is massive, not just about technology itself – that changes at the speed of light – but about how to deal with change in an organization.</span></p><p><span lang="EN-US">This is not going to be a technical session – far from it – but instead it will be a short collection of some of the most striking experiences I had since I first heard about Software Engineering.</span></p>
HALT! Who goes there?Robin Minto
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.
What makes a graduate software developer employable?Tom Caira
There is a recognised problem in the UK with computing graduate employment. A statistical analysis of first destination leavers of UK higher education institutions produced by the Higher Education Statistics Agency (HESA) shows that UK computing graduates currently have the highest unemployment level of all graduates six months after graduation. Yet, in contrast, statistics from Ecorys UK show that 72% of large companies and 49% of SMEs are suffering technology skill gaps. These statistics seem counterintuitive and research to date, most recently by way of the 2016 Shadbolt Review (https://goo.gl/2uS49Y), has failed to fully explain this contradiction. Given the economic significance of resolving these technology skill gaps, it is important to gain a better appreciation of this computing graduate employment paradox by consulting with key stakeholders to ascertain the factors that influence the phenomenon and investigate the underlying cause.
This session will take the form of a guided discussion which seeks to establish, through consultation with members of the software developer community, the key hard and soft skills and other personal characteristics that are viewed as essential in enhancing the employability of UK computing graduates. It is hoped that attendees will contribute to the session by reflecting on their own experience of finding gainful employment in the software development arena and providing valuable insight to the discussion.
Dealing with DisempowermentMark Dalgarno
We know that people who are empowered are more creative, more productive and more satisfied with their work and so produce better results for their organisations. So why is there so much disempowerment in the workplace?
In this workshop we’ll share our experiences of disempowerment, invent even more ways to disempower our teams and colleagues and discuss how we might identify the signs of disempowerment when it’s happening to others.
We’ll then work together to figure out what could be done differently to move from a disempowered organisation to an empowered one.
Participants will take away:
Insights into what disempowerment looks like
Options for tackling disempowerment
Functions as a ServiceJames Maciver
The serverless world is upon us. The barrier to having our code running in a highly scalable environment is lower than ever thanks to the the likes of Google Cloud Functions, Azure Functions and AWS Lamda. I will take you through what these different providers offer and show you just how easily we can architect an application using these tools.
Strava, No REST for C++yclistsWilliam Taylor
analysingbig data is hot stuff in today's world. Traditional REST APIs are normally not C++'s strong suit however in this session I will hope to convince you otherwise. In this session, I will show how StravaCpp a C++ library that provides access to Strava's rich dataset was developed and how to use it to access athletes, activities, gear, clubs androutes from across the world and process it to gain rich analysis and reporting.
Planning in an agile worldCraig Nicol
There's more to planning than a backlog of dog-eared post-its than fill up the wall beside your agile board. Whether you use scrum or kanban or something else, you need to look up to the horizon to see what's next. Starting agile is all about removing the immediate roadblocks but how and when do you remove the roadblocks that aren't affecting you yet?
Teaching an old dog new tricks.Ismail Mayat
In this session we will get down and dirty with clean code.
Expanding on Uncle Bob’s teachings this session will give you practical hints and tips to help you practice clean code. We will cover what clean code is, why you should be writing it and how to write it. If you’ve been a victim of “wtf code”, or even guilty of writing it yourself, then this is a must attend talk for you.
Disclaimer: there may be swearing!
Continuous Delivery is a piece of CAKEColin Mackay
I’ve been a proponent of continuous delivery for a while now and in this session I’ll introduce you to some of the ideas behind continuous delivery and get you started with your build and deploy scripts using Cake Build (C# MAKE) which is a cross platform build tool.
Azure CosmosDb for BeginnersPhil Pursglove
Azure CosmosDb is the multi database! Multi model, multi API, multi consistency and multi location!
Azure CosmosDb is Microsoft's NoSQL cloud database. In this session we'll be exploring its' capabilities to show you:
- how to create and use the different types of data model
- how to use triggers and stored procedures
- why and when to use the different levels of consistency
- how you can replicate your data globally at the touch of a button
Learning Kotlin as a C# DeveloperJoe Stead
There are hundreds of programming languages out there now, more seem to crop up every week, trying to learn them all is an impossible task. Learning Kotlin, like any language, presented various challenges. Is my code idiomatic? Is this a good use of the language, or am I abusing the syntax to solve my problem?
We'll start with a basic introduction to Kotlin, how to get up and running with relative ease, and then we'll start comparing simple applications written in C# and seeing how we could write them in Kotlin instead.
Finally, we'll share ideas to help you start writing Kotlin immediately, without rewriting all of your existing .NET code.
Regular DeploymentDavid Rankin
Much has been said about Continuous Deployment, but unless you are starting from scratch it can be hard to achieve. And for non-web apps it is nigh impossible.
So as we strive for Continuous Deployment lets talk about Regular Deployment.
Thought a process of automation, convention and determination you can achieve many of the great benefits quicker than you think.
This talk will discuss how Regular Deployment can be achieved, why you might want to aim for it, and an analysis of the latest fads.
A year of Mob ProgrammingKeith Kirkhope
Mob Programming what is it? A fad? An inefficient use of coding time? Or, the best development practice you've probably not tried yet.
How do you do "agile" or "scrum" without stand ups or planning sessions? How can you have a retro where no-one can think of anything to say (in a good way).
We've been doing it in our team for over a year and we've learnt a lot. We've worked together, got annoyed together (and at each other), worked with and in other teams doing it and not doing it, gone to the extreme form and back again.
If you are interested I'll share our experiences, what worked (sometimes), what didn't (sometimes), share tips and show how to hack and exploit your work place to get a space to really collaborate in. I'll show you benefits and pitfalls.
Maybe you'll give it a go.
Becoming The A-TeamViv Richards
After over six years working as a full stack developer I decided I really wanted a change, six months ago I set upon a new journey as a test engineer. Over the years I've been able to observe many behavious and actions from both developers and testers of both teams not performing to the best of their abilities as well as successful teams.
Drawing from experience and examples from what I've seen work badly and well, this talk aims to share tips to help improve both communication and collaboration between developers and testers to help bridge the gap and help your team become, the a-team.
Virtual Data WarehousingMalcolm Crowe
Fritz Laux (Reutlingen), Carolyn Begg (UWS) and I have been developing database technology for Big Live Data. In areas where central repositories, extract-transform-load and materialised views are deprecated because of liveness and data ownership issues, this technology envisages arrangements for secure cross-platform data contributions defined using database Views via HTTP and REST. The DBMS automatically generates queries to enable ad-hoc, real-time and efficient access to the overall data set as if it had been centralised, while contributors retain the management of their data.
We presented an award-winning paper on "Data Validation for Big Live Data" at Barcelona in 2017 and we have a proof-of-concept demonstrator using the idea of WHO health monitoring. The technology is great for Smart Cities, government agencies and information sharing generally and we hope to use this session to demonstrate the practicality and simplicity of the technology. The next step is to get it implemented in a mainstream DBMS.
Security in Cloud-NativeRobin Minto
Cloud-native is an approach that fully exploits the advantages of the cloud - it's how you build and run your applications to allow easy scaling and continuous deployment. You may have seen the Twelve-Factor App methodology (https://12factor.net/) for developing applications that embrace a cloud-native philosophy but with that, there's little or no guidance on security.
Security can't be an afterthought and cloud-native is no different. This talk looks at how to approach security for an app deployed to the cloud. Can you forget about infrastructure security? Where should you focus your attention? Is cloud-native more secure?
We'll consider the similarities and differences between traditional apps and cloud-native apps. We'll look at how you can avoid the most common security vulnerabilities that affect cloud apps and we'll look at approaches applicable to both Linux and Windows. You'll come away knowing how to be more secure in cloud-native.
Discover Intelligent Vision SoftwaresJoanna Isabelle Olszewska
Intelligent Vision Softwares are present everywhere in our Society from street surveillance cameras to airport e-gates, from drones to AUVs, from m-health services to Facebook apps. Behind the scenes, these new technologies including social media, cybersecurity systems, or autonomous agents require softwares with capabilities of processing vast amounts of complex data, and in particular visual data such as images, videos, etc. in a computationally efficient and dependable way.
This talk aims to present the 'why' and 'how' of intelligent vision softwares deployed in constrained and unconstrained environments. Participants are expected to get new perspective about the intelligent vision softwares' challenges and solutions.
Typescript for the C# DeveloperPeter Shaw
Believe it or not, there are still a large number of .NET developers these days, that are happy to stay in the server domain, writing code only in C#
While that may be your thing (and I'm not going to stop you) .... you owe it to yourself to at least explore the world of front end code.
Fear not however. There is a way you can explore programming in the browser, and still maintain all this nice stuff your used to in C# code, things like Type safety, OOP programming and generics.
That Way is called TYPESCRIPT
You'll get to play in the browser, while still thinking and working in a very back-end programmer like way.
I'll not be teaching you the Typescript Language, nor will I be showing you any majorly cool coding tricks, I'll simply just be showing you that coming out of the server room, doesn't have to be painful at all.
Technical debt: From buzzword to theorySantiago Matalonga
I am an agile practitioner and researcher. I'm a firm believer that agile works! I have seen it work. But I'm also a man of science, and only too often in software engineering, we follow trends based on biased advice by gurus. Technical debt has become a beacon in software engineering research where empirical evidence and hearsay can be compared and contrasted.
In this talk, I'll be presenting results from the academia - some mine, some borrowed - about the available theory that sustains Technical Debt.
Attendees to this talk will;
* Understand the underlying concepts behind technical debt.
* Identify areas with empirical evidence of the application of the metaphor (and areas without empirical evidence)
* leave with practical advice for integrating technical debt based decision into their agile development process
A video abstract is available at https://www.youtube.com/watch?v=Dfr6UVtmNgA
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.
Your career as a software developerCraig Nicol
Whether you're just starting out, thinking about moving jobs, or just feeling underwhelmed by your job, this session, from an experienced developer and mentor, will give you some tips and advice on when to move, what to do next and how to move forward in your career.
But we’ve always done it that way!Andy Gibson
We’ve all been there, you come across something in your job that you find is outdated, manual, inefficient and could with a bit of effort be improved for the benefit for everyone, and then you ask a co-worker why it hasn’t been done and you hear the dreaded line ”We’ve always done it that way” or “It just works so we don’t touch it”. You then find yourself fighting an uphill struggle to make a change which you know will only help the team work better but you mean resistance along the way.
The session will discuss the nature of change within an organisation, why change can be hard for those it will affect, what we can do to improve the situation and guiding people onto a better path. There is no code or technology in this talk and it is suitable for people of all skill levels.
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.
Microservices - what I've learnt after a year of building a systemNathan Gloyn
This talk goes into my experience over the last year or so as part of a couple of teams building systems that use a microservice architecture.
Whilst I'll mention the technology used this talk won't be about the technology more about the lessons I've learnt.
I'll cover how we built the system, deploying the code & most importantly how to support the system.
Serverless - the elephant in the data centreLiam Westley
Serverless, what *IS* all the fuss about?
It still has a server, somewhere, so it's definitely a stupid name. But is it a stupid idea?
So join me on a journey of discovery. As of November the above two lines (and presentations at conferences and from AWS) sums up my serverless experience.
By February I'll have analysed what serverless really means (hint: containers that you don't own), the architectural issues that come with executing stateless functions, latency issues between calls and tackle when it makes sense to use serverless technologies in both technology and financial terms.
There may be some code running in AWS Lambda or Azure Functions, but the primary goal of this talk is to look at the new architectures that serverless makes possible rather than any specific vendor implementation.
If there's any particular area you'd like investigate send me a message on twitter.
Beyond C# 7.0 - point releases, reference semantics and nullabilityMatt Ellis
No, we’re not going to look at C# 7.0. That’s ancient history. Instead, we’re going to look at the recent point releases - C# 7.1 and 7.2.
Unsurprisingly for point releases, the feature list isn’t huge, but there are a couple of very interesting new items in there. Notably, let’s pick apart “reference semantics for value types”. Firstly, what does that even mean? Secondly, let’s take a look at how this fairly major set of new features work, and how we can use this in our own apps to improve performance by reducing allocations and garbage collection overhead. Immutable structs, readonly references and of course, Span<T>, a type safe and efficient way of accessing chunks of memory. Just think - creating sub-strings without any new allocations!
And after all that, we’ll check out the preview of the big headline feature of C# 8.0 - nullable reference types. Wait, aren’t reference types already nullable?
Adding a layer of Chocolate(y)Gary Park
In this session, we will learn from from experienced package author, Chocolatey.org moderator and project contributor Gary on how to automate the installation and configuration of all the software you need to get your job done. This will include the use of open source software tools Chocolatey and Boxstarter.
Find out how to wrap each of your tools and applications in a well-specified Chocolatey package. Learn about common pitfalls and get an inside perspective on the package moderation process so that you can publish to the public repository on Chocolatey.org with confidence.
Learn how to orchestrate the installation of all your packages (including reboots) with Boxstarter. Build up a fully configured developer machine from scratch, or redeploy your test environment with ease and reliability.
However, Chocolatey is not only about packaging of existing, 3rd Party Applications. You can also apply the exact same techniques to allow your customers to download, install and upgrade your software with ease.
This talk is rated 200-300 with a target audience of all Windows-based developers who want to spend more time coding and less time reinstalling software.
From designer to developer and back againDarren Wilson
During the past 25 years i’ve been working in the design indistry, an industry that has changed beyond expectations. This talk will explore how i went from a graphic designer to digital designer to developer and back again, the one constant being creativity. I’ll also touch upon how anyone can change their career.
Resilient Microservices WebAPI with REST and GatewayVincenzo Chianese
from CLI to Aurelia Web App in about 30 seconds...Peter Shaw
Ok, so Aurelia's not a new framework, and let's be honest, all the cool kids are largely ignoring it in favor of Angular, React, Redux, Vue or what ever else is hot at the moment.
That being the case, then why on earth would any one be interested in using it?
Well in a nutshell, speed and simplicity.
With the now released .NET core 2 and the .NET Core SPA Templates, you can be up and running with a fully featured, ready to rock and roll browser application and ASP.NET core API in about 30 seconds.
Aurelia is designed and supported by someone who's got a long track history in .NET [Rob Eisenberg] it's supported in the latest round of SPA templates shipped and supported by MS themselves, it's super, super easy to get to grips with, and it just WORKS!!
Oh and did I forget to mention, the projects you create are 100% cross platform ready!
In this session, I'll give you an introductory tour of building an Aurelia application, working with it in Visual Studio 2017, then Deploying it to an Ubuntu Linux host, the world of web development has never been so easy.
Progressive Web AppsJames Maciver
Mobile apps, no "install" required. Progressive Web Apps should load instantly, respond quickly, and feel native to a device. I will discuss the technology and techniques behind bringing our web apps to a user's home screen.
Nginx for .NET DevelopersIan Cooper
With the move to .NET Core, IIS is no longer the default web server for ASP.NET deployments. Instead ASP.NET apps are self-hosted and by default run in Kestrel. Kestrel is fast, and like Node.JS is based off the libuv async I/O library. But it's also optimized to talk to Nginx, another web server. Why would you need two webservers? What is Nginx?
In this talk we will explain the mysteries of Nginx to you. We will focus particularly on its role as a reverse proxy in front of Kestrel, but also cover its use for load balancing.
By the end you should understand what Nginx is, when to use it, and how.
You will even learn how to pronounce Nginx.
APIs on the Scale of DecadesGary Fleming
"APIs are hard. They are pretty much ship now, regret later." -- Chet Haase.
What do Greek philosophy, early video games, and Japanese bullet trains tell us about how we should design our APIs?
Writing any old API is easy. Writing an API that can evolve to meet your needs over the coming months, years, and even decades; now that's hard. We'll look at some common practices and try to see where they go wrong, some misunderstood techniques and how to use them better, and some less common practices that might be useful.
Let me give you some good advice that'll help you evolve your APIs, and some big ideas that might provoke some interesting thoughts.
A case for on-premise: why you can do brownfield DevOps tooMatteo Emili
These days there is a strong misconception in the software development world – DevOps equals to ‘the Cloud’ (and inherently greenfield projects).
I strongly disagree. Given that DevOps is about best practices (aided by technology) nothing prevents you from bringing these practices in your own, on-premise world. I’ve heard too many times this ‘equation’, and in hindsight many companies would benefit from a DevOps approach even for internal, ‘legacy’ applications. This doesn’t mean you should be forced to use legacy technology too, at the end of the day technology is out there to help, not to force your decision down a certain path. The Phoenix Project is all about this after all…
Let’s see how to put this into practice, leveraging on the right practices and modern tools to put your on-premise application on par with the rest of the field. This won't fix existing bugs though...
Introducing Event Sourcing - from WTF to why to wowDuncan Jones
An introduction to the idea of "Event Sourcing" and discussion of how you can use it as the basis for a distributed system with the emphasis on the underlying ideas rather than focusing on any specific programming language, with examples using different Azure storage mechanisms as the backing storage technology (AppendBlob, File or Table).
Beginner to intermediate level talk which does not assume any previous experience of Event Sourcing or CQRS, not overly much code but mostly diagrams, discussion and Lego blocks.
Accessibility in Modern Web ApplicationsStuart Ashworth
The web’s original mission was about opening up information and communication to everyone, regardless of where you might be in the world and regardless of who is accessing it.
In this talk, we’ll focus on the biggest obstacles these applications impose on people with disabilities and what steps we can take to ensure all users have a fantastic experience. Our discussions will be kept framework-agnostic with the techniques and approaches able to be applied to all applications.
Spot the difference; automating visual regression testingViv Richards
This session looks at common issues with just relying on end to end automation testing tools, using examples to demonstrate common pitfalls and how visual testing can help add another tool to your tool belt.
The talk looks at why we automate tests, the issue with just manually testing, common end to end automation pitfalls, a brief introduction to visual testing and finally a look at common issues with visual testing and ways to overcome them.
Through the use of interactive examples the audience will gain an understanding of why relying on just manual testing can become an issue and how too much end to end automation can have a negative impact by looking at testing anti-patterns. The audience will also learn what visual testing is, what tools are available, some of the common pitfalls of using visual testings as well as tips on ways to overcome them based on experience of creating a custom visual test framework at my current employer.
#FAIL - Lessons from infosec incidentsRobin Minto
Securing a web application is a challenge. The internet is awash with malicious traffic and web applications are globally accessible. Don’t make it easy for them and the baddies will move on and find someone else to annoy.
We’ll look at the risks facing web applications, the basic steps you can take so that you don’t make yourself a target and the things you should do to avoid becoming a data breach statistic. We’ll also look at lessons that can be learnt from mistakes that others have made.
We’ll demo some of the techniques and tools in both attack and defence with examples for any web application developer.
The Website Obesity Crisis, Let's fix it!William Taylor
Quick load times are rarely a concern for the average web developer as we increasing fill the web with bulky sites. In this demo session, I will show you techniques to get your website payload down to the smallest number of bytes and how optimizing your payload can help make a better web, user experience
Code less, email more. Is that what life is for a developer who falls into the 'management' trap as their career progresses?! In this session, I talk about my experiences as a development team lead, and how I found himself there in the first place.
If you're interested in finding out what your manager does all day when they could be coding, think you might want to follow a similar path one day, or simply want to share some of your own experiences of managing (or being managed) - this session has something for you!
A second helping of CakeGary 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
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.
Kotlin for the curiousMatt Ellis
In this talk, we’ll go on a high level, introductory tour of Kotlin - how to get up and running, what Kotlin looks like, and how to write idiomatic, concise code - functional or object oriented. We’ll look at data classes, top level and first class functions, inlining, null safety and more, including the design decisions behind some of the language choices. We’ll see how you can build DSLs, with examples from Android and HTML, and look at how we can build multi-platform projects. And we’ll take a look at coroutines, Kotlin’s answer to C#’s async/await.
Turn your ASP.NET Routes up to 11 with BotwinJoe Stead
Botwin is a lightweight library that sits on top of ASP.NET Core to enable powerful routing. If you have ever used Nancy, you'll be familiar with the routing style, but why Botwin?
What does Botwin give you over ASP.NET MVC as an HTTP API? What does Botwin give you over NanyFx running on .NET Core?
We'll discuss what Botwin is, how it fits into your application, and why it's powerful routing can ease your development, whilst helping the performance of your API.
Botwin is so simple to get up and running with, I'll even break my rule of "No Live Coding Demos" to prove how quick and easy it is to learn!
XSS: Don't die of ignoranceRobin Minto
The Developer of the FutureFiona Kennedy
As we face up to the challenges of the "fourth industrial revolution", and the impact of advances in technology and demographical change, we need to think differently about how we develop the skills and capabilities needed in the economy of the future.
Graduate Level Apprenticeships are changing the way businesses think about attracting new and developing existing talent.
They are also changing the way individuals are making decisions about their careers and how they acquire the skills they will need in the workplace of the future.
Hear first-hand from this new breed of software developer about their journey and their aspirations for the future.
Containers jumpstart from a DevOps perspectiveMatteo Emili
Containers are really a thing, but how many organisations are actually using them in production, every day? Why isn’t yours among these?
It’s not because Containers are not reliable or too complex. It is also not because they require some special technology stack to deploy on brand new hardware – they are actually quite nimble. It is often because (like with all new technologies) there is some sort of misinformation around them.
They are actually really invaluable tools not just for new applications but also for existing ones, as they fit very well with a packaged distribution model for example.
So let’s try to shed some light on these, from a different point of view: the DevOps perspective.
Thinking Functionally in C#John Stovin
The determined programmer can write FORTRAN programs in any language - Ed Post
To program effectively in a functional language, you need to discard many of the thought processes and habits that you have developed for coding in ‘curly bracket’ languages, and understand a new set of idioms and ways to think about code.
In this session I will talk about some of those fundamental idioms, explain why they exist and how they interact to provide a very different framework for thinking about your code. Even if you never write any F#, these ways of thinking can be used to make your C# code more efficient and more robust.
I will also discuss some C# libraries that you can use to apply functional principles to your existing C# code.
Building APIs with Azure FunctionsKevin Smith
Functions as a Service (FaaS) is the next trending buzzword, in this session we'll look at the advantages of using FaaS and how we can take advantage of Azure Functions to build our APIs.
Through this demo lead session we'll see examples of how we can take advantage of HttpTriggers, Routing, Proxies and API definition to build a set of rich functions as the source for our APIs.
Kubernetes for .NET developersShahid Iqbal
To paraphrase a famous internet quote, "Kubernetes is eating the world".
Everyone seems to be talking about Kubernetes with companies seemingly tripping over themselves to support or adopt it.
In this talk we'll introduce Kubernetes, discuss the key concepts of the platform, it's high level architecture and how to get a Kubernetes cluster up and running in minutes.
We'll talk about and demo (hopefully!) deploying .NET applications to Kubernetes and we'll finish with a discussion of the future where you can deploy both legacy and modern .NET applications to the same platform.
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 in time. We will discuss and see a few demos 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.
Distributed Web Apps with Ethereum and IPFSJohn Kane
An introduction to building apps that interact with the blockchain, and why this might be interesting technology aside from the massive speculative bubble. This all assumes, of course, that the Ethereum network hasn't collapsed under the weight of CryptoKittie trading before the conference in February.
Conversational Interfaces with DialogFlowJames Maciver
DialogFlow (formally API.AI) is a service that allows you to build conversational interfaces that can run across many platforms and devices. This talk will introduce the concepts within DialogFlow and conversational interfaces as a whole, and provide you with the information you need to take a product into production with DialogFlow at next to zero cost.
Free text search - Find what you’re looking for?David Rankin
For many developers, adding search into your application is an after thought or a demo-ware feature. Used well free text index technologies can give immense power to your application.
With a focus on ElasticSearch, and related technologies, this talk will look at how other companies are using readily available search technologies to do innovative things. We'll look at how free-text indexing technology can be integrated easily into your application and how you might overcome some of the hurdles you can encounter.
Transactional Analysis and How to Talk to ManagementKyle Bremner
There are many social influences that define how we approach certain topics of conversation or respond to questions. Sometimes we say something that wasn't expected by others, often resulting in an awkward silence... In psychology, the study of these conversations and the influences on our actions is referred to as 'transactional analysis'.
We'll look at what transactional analysis is, discuss how it relates to the conversations you have in the workplace, and finally look at some suggestions on how to use this knowledge the next time you find yourself in a difficult conversation.
(Content warning: we will talk briefly about mental health and how it relates to transactional analysis)
My Maker JourneyMartin Goodfellow
How I went from software engineer to hardware hacker. My journey in the maker movement from learning electronics in solitary to working in makerspaces globally and starting the Glasgow Makers and Hardware Hackers group. I'll discuss some of the projects I've been involved in and my experiences of being part of the community. I'll also talk about why you should become a hardware hacker and get involved in the maker movement too.
Writing simpler ASP.NET CoreJonathan Channon
Ever since ASP.NET MVC came out in 2007 many developers have been involved in a cargo cult of writing web applications in a Controller-Service-Repository design. This has been repeated over and over for nearly 10 years. This design reinforces everything that the SOLID design pattern promotes but actually what is the effect of following this? Developers bring in large dependencies to support this design, add complexity to their applications and potentially cause a performance issue. We'll go through various approaches to improve your web application design, one better than the last but arrive at a destination where you can simplify your architecture, simplify your code, remove dependencies, increase performance and use "functional" approaches in C# whilst still allowing you to write clean code that negates the need for IoC containers and mocks in your tests
The usability of developmentCraig Nicol
Like all good developers, we but the usability of our software first. Who wants a frustrated user?
But do you do the same for yourself? How can you identify and remove your own frustrations?
How telemetry can be your best friendMatteo Emili
Pretty much everyone use telemetry in software systems today – to understand where things break down, where performance or load are issues and if our components are working as expected.
But this is just a fraction of what you can do with telemetry. Telemetry can help you understand why the adoption of your new ‘market breaking’ feature is not as expected, it can become a critical business tool to gather information about how to provide the most value to your users and how to make minimum viable products successful.
With the help of a bit of artificial intelligence it can even prevent outages or explain sudden load surges so that you can plan in advance.
This session is all about this: how telemetry helps the business, and how it can really become a major player for your development teams.
Architecting TeamsCraig Nicol
You've distributed your services, and your data. You team is distributed around the globe, but have you distributed decision making, and architecture. Is your team empowered to make decisions and confident about making them? Do you trust them to deliver?
How do you build a high performing team? Do you train, recruit, reduce or reassign?
The Board WhispererGary Fleming
At this point in Agile's lifecycle, many teams have switched to using a Kanban Board. Some are simple, three-column trackers; others are considerably more involved. Yet, many teams don't know how to stop for a moment and _listen_ to their board. It's gently trying to nudge them about the changes that it needs to make them a better team. Come along and learn how we can go from simple to just complicated enough, smoothly.
In a new team, we started with a three-column standard to something that fits us perfectly. Our board won't work for you, but by learning how, when, and why we made our changes, you can make a board that works perfectly for your team too. See the patterns and anti-patterns; listen to the change that your board is crying out for; and enjoy the results.
Scripting and Tooling with Node.jsDavid Rankin
Building code analysis tools with the .NET Compiler Platform (Roslyn)Filip W
We all love Resharper and its amazing code analysis capabilities, right? In this talk you will learn how to use the .NET Compiler Platform "Roslyn" to build code analysis and IDE refactoring extensions yourself.
Enforce coding conventions? Why not.
Finding logical issues on the code? Absolutely.
Rearrange files in the project? Easy.
We'll have a look at everything that's needed to build such code analysis components, such as for example, how you can traverse the syntax trees and obtain semantic information about a code base using Roslyn.
There is also a plot twist - are these tools usable with Visual Studio only? We'll find out.
Are you cloud native?Craig Nicol
Building a web application, even a SPA, is old hat. The big cloud providers are perfectly capable of running your legacy applications, but have you really thought about what an application built for the cloud looks like? How does performance change? How do you optimise for O(£) instead of O(log(£))?
Having moved from a web-on-metal to a cloud-native, scale-at-will application, I'll discuss some of the ups and downs, the differences between Azure and AWS and what abstraction over the cloud means. And I'll discuss some of the challenge of taking Windows applications into the cloud.
Interactive Development with RoslynFilip W
It’s fair to say that most software developers very highly value the productivity boost that comes with being able to work in a development environment that provides a real-time feedback loop. Historically, C# has been far from that - as typically developers had to rebuild their projects after every change, and the process of finding issues in the code has always felt extremely heavy.
Roslyn compiler and Visual Studio 2017 introduced a lot exciting tools, improvements and APIs that help in this area.
In this talk, we will look at various techniques to leverage these interactive capabilities. We’ll explore the REPL and Interactive Window, scripting APIs, live Roslyn analyzers, a much improved Edit-and-Continue support and interactive testing, all of which will hopefully help your development workflow be much more productive.
C# Scripting in the .NET Core worldFilip W
While still being relatively niche, over the recent years C# scripting has grown to become a first class citizen in the Roslyn compiler and can now be enjoyed and applied in your applications in various ways.
Together, we will dissect what’s going on under the hood in C# scripting and how you can make use of it in the cross platform, lightweight, .NET Core world (which, by the way, creates a perfect environment for low ceremony C# scripting).
We'll also have a look at scripting via the new .NET CLI, how you can integrate it into your everyday development workflows and how you can debug the script assemblies.
Developing for privacy and data protectionHeather Burns
In our volatile and uncertain political times, developers can play a crucial role in protecting the safety and privacy of those who use our software, services, and apps. Whether you enjoy the support of an employer or work on your own as a freelancer, an informed regard for data protection must become a part of your development workflow.
This talk will provide a practical toolkit which draws on current and upcoming data protection regulation (including GDPR), development frameworks, and recognised best practices in protecting personal data to inspire attendees to integrate a healthy approach to privacy into everything they do.
Those who attend the talk will learn how to:
-think proactively about developing for privacy and user protection;
-adopt protective workflows and business practices;
-understand that privacy and user protection are everyone's responsibility;
-feel empowered to challenge things which may put people at risk.
This is not a technical talk; it will be applicable across all platforms and disciplines.
A gentle introduction to ElmJames Murphy
Elm describes itself as: "A delightful language for reliable webapps."
Elm apps are built to follow The Elm Architecture which has a unidirectional flow and was part of the inspiration for Redux.
Aim of this talk is to be code heavy - walking through enough Elm to do something vaguely useful with the intent of introducing the language and the Model Update View architecture and to allowing you to see why it might be worth further investigation.
BigCode: Transforming enterprise systemsMarnie McCormack
Dealing with giant code based is a privilege and a vocation, like restoring the Mona Lisa in the dark with a chisel. Except there is another approach, using service oriented architecture coupled with a focus on the customer to decouple and free your teams from legacy ennui. Come along and find out how cloud can be the lever for the change you want to see.