Most Active Speaker

Simon Painter

Simon Painter

Senior Developer at Müller Dairy | Microsoft MVP | O'Reilly Author

Telford, United Kingdom

I've been working as a .NET developer for over 16 years now in a variety of industries including government, retail and manufacturing. But I've been hacking around with computer code since I was old enough to read my Dad's copy of the ZX Spectrum BASIC coders manual.

I've been speaking about Functional C# at various user groups and conferences around the UK, USA, Europe and Australia and am particularly interested in seeing just how far we can push C# without breaking it.

I'm currently working on a book for O'Reilly publications about functional programming with C#. Expected to appear in bookshops some time in 2023.

When I'm not coding, or running after my two small children, I have been known to enjoy the classic series of Doctor Who, Fighting Fantasy Gamebooks, Cryptic Crosswords, and rather more coffee than is probably good for me.

Awards

Area of Expertise

  • Information & Communications Technology

Topics

  • .net
  • .net core
  • ASP.NET
  • Visual Studio / .NET
  • .NET Standard
  • functional programming
  • object oriented programming
  • Programming Languages
  • metaprogramming
  • ASP.NET Core
  • Entity Framework

"Would YOU Survive the Titanic?", with ML and .NET

Have you ever wondered whether YOU would survive the sinking of RMS Titanic or not? In this talk, we'll be using Visual Studio, C# and ML.NET to find out.

Machine Learning is a hot topic these days. Business around the world are keen to utilise it; but doesn't it mean learning python??

In fact - no! These days it's not only possible to do ML in Visual Studio, but it's actually easy to produce high quality results with very little effort.

Be warned though, there are ice bergs ahead....

From Ancient Greeks to Modern Geeks - Basic Machine Learning Algorithms

We've all heard the hype. Machine Learning is cool! Machine Learning is Rad! It'll change the world! End Poverty! Get George R R Martin to finally finish Game of Thrones! What actually is it though?

Talk Machine Learning to a lot of people and they'll probably get muddled up with AI in old SF films, and think of HAL 9000 or Holly in Red Dwarf. That - or there'll be a general sense that it's some sort of black magic - archaic and unknowable.

The truth is that Machine Learning isn't really complicated at all. A few lines of code will implement a lot of the techniques without much effort.

During this talk, I'll be demonstrating a few of the simpler ML algorithms in a code-neutral, easy to follow manner. No need to learn Python, or add any new libraries or frameworks to your existing Codebase. I'll be working from first principles, and keeping it as simple as I can.

We'll cover algorithms like:

* Naive Bayes
* Bayes Classifiers
* N-Nearest Neighbour
* Decision Trees
* Linear Regression

We'll only be covering the absolute basics of Machine Learning - maybe just enough to be dangerous! Enough also, to go away and continue your journey having taken a good first step.

Functional Front-Ends in ASP.NET

For many years now, Microsoft have been adding support to .NET for functional programming. There's the .NET functional language, F#, of course. Not only that, but also C# has been gaining new functional features for many years now - as early back as .NET Framework 3 when LINQ was introduced.

That's terrific for our back-end code. Functional applications tend to be:

* More concise
* Resistent to unhandled Exceptions or unpredictable behaviour
* Easier to maintain
* Highly Testable
* Supportive of parallel processing and async

What about the front-end, though? We can write a back-end codebase in C# that can get close to 100% functional and testable, but what can we do with the front-end in ASP.NET?

In this talk, I'll consider all of the options that exist for a C# web developer to extend the benefits of functional programming to the front-end as well as the back-end.

I'll be assuming zero knowledge of the functional paradigm. All concepts will be explained in easy-to-understand terms.

Topics will include:

* Functional JavaScript/ECMAScript libraries
* JS Frameworks with functional support
* Blazor
* Elm Architecture

Why is a Developer Nothing like an Enchilada?

In the IT industry we're surrounded all the time by all sorts of extraordinary words in our everyday working environment - but have you ever considered their origins?

Some are, of course, entirely modern. Some though date back to the middle ages, and some even to the ancient world!

In this talk we'll look at the stories behind the words we use at work all the time, without even realising what they might actually mean.

On our eymologoligical travels, we'll find out how our work relates to 12th centry Welsh monsters, a 6th centry Persian mathematician and some very silly singing Vikings.

We'll answer questions such as: What are Geeks and Nerds really? What is a C and how can it be sharp? Was a Firewall ever actually made of fire? What were bytes taken out of?

Above all, as the title suggests - Why is a Developer Nothing like an Enchilada?*

All these questions and more will be answered. You aren't going to go away better at your job, but hopefully you'll gain an appreciation for computer terminology and how it fits into the larger history of the english language

* Be warned - the answer is not as interesting as the question!

A Developer Goes to the Movies

As well as being a full-time software developer, I'm also a huge film buff. I love films from any number of countries, eras and genres. One of my favourite things though, is when Hollywood decide to make a film touching on my day job - that is, a film that's about software development.

There aren't very many of these, rather unsurprisingly, considering how dry the topic can be for the "not-we" that make up the majority of a cinema audience.

What I'm going to do in this talk is take you on a whistle-stop tour of film history, looking at many of the films that try to show the rest of the world what our jobs are like.

I'll be looking at firstly - are they actually good films? But also, how accurate are they? What sorts of social trends informed a portrayal like this?

On this brief odyssey through cinema history we'll cover:

* The first film to depict a developer. You won't believe when it's from and who the actor is!
* How have developers been portrayed differently over the years? Particularly with regard the role of women in tech
* How The Matrix wasn't the first VR world by near 30 years!
* A 90s cyber-thriller that clearly doesn't understand the difference between websites and executables
* How AI is very definitely going to kill us all. At least according to any number of old SF action-thrillers
* An old episode of Doctor Who from the 60s that predicted the internet (ok, not Hollywood, but I love Doctor Who!)

This talk won't help you do your job better, but it might give you a glimpse into how the rest of the world have seen us over the years!

F# Eye for the C# Guy

So, you're a C# developer and you've heard about this F# thing? What is it? What's the big deal? Why should I be interested.

F# is the .NET framework's language for programming in the Functional paradigm - a style of programming that's:

* More concise
* Resistent to unhandled Exceptions or unpredictable behaviour
* Easier to maintain
* Highly Testable
* Supportive of parallel processing and async

It's possible to do most of this style of programming natively in C# - with a little work with extension methods and other bits of hacking. F# does all of it natively however, and far more effectively than C# is ever likely to.

In this talk, I'll be giving a gentle introduction to the functional paradigm - assuming zero knowledge - and introducing the F# language, but using C# as a reference point.

My aim is to give those of you familiar with C# and its syntax as gentle an introduction as possible into the world of F# and functional programming.

Down the Oregon Trail with Functional C#

In 1971, three students from Minnesota thought they could liven up a history lecture by creating a computer game for the students to play, and after several days of work in HP Time Share BASIC, they came up with what turned out to be a significant milestone in the history of computer games - Oregon Trail.

Oregon Trail is often regarded as one of the first great computer games, as well as being the originator of a franchise that is still running to this day. It was effectively also one of the first instances of both Shareware and a Commercial home release of(depending on the version).

My interest though, isn't just in historical computer games, it's also .NET and Functional Programming. I want to use this as a worked example of one of my passions - Functional Programming in C#! The challenge I've set myself is to redevelop Oregon Trail into C# using the following restrictions:

* Near 100% unit test coverage
* No variables can change state once set
* No statements (for, foreach, if, where, etc.) unless there literally is no way of avoiding them

I'll also be demonstrating a few of the tricks Functional Programming can offer, like Higher-order functions, functional flows with simple Monads and Tail Recursion. There should also be a bit of retro computing fun, while we're at it.

SOLID Principles in 5 Nightmares

The 5 SOLID principles - popularised by "Uncle" Bob Martin in some of his highly influential books on Object Orientated Software development - are rarely cited directly but they are nevertheless at the heart of a lot of the thinking that goes into modern software development.

These principles have been around in some form or other ever since the 1980s, but continue to be just as relevant today as they were then.

In this talk, we're going to look at each of the 5 SOLID principles, these being:

* Single Dependency Principle
* Open/Close Principle
* Liskov Substitution Principle
* Interface Segregation Principle
* Dependency Inversion Principle

See what he did there with the names?

We'll look at each in turn, with the help of some slightly imaginative examples taken from a popular SF franchise. What are they, what nightmare scenarios can occur if they aren't followed, and how they can subsequently be applied.

Functional Programming in JavaScript

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?

Using just a few JavaScript libraries, such as RamdaJS, developers can implement some of the most powerful patterns and techniques from the world of functional programming?

This talk will demonstrate how, using ES6 and a few extra libraries, we can write Functional code that is:

More robust

Easier to read

Easier to maintain

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!

Functional Programming with C#

Functional Programming is becoming increasingly popular and relevant with each year that goes by. With so much discussion around languages such as F#, Haskell and Erlang, it can seem as though getting started with Functional programming would mean first learning a whole new syntax...but what if it didn't?

Most .NET developers are familiar with the use of Linq, and basic constructs such as IEnumerable, Func delegates, arrow functions and ternary expressions, but did you know that you can use all of this to implement some of the most powerful patterns and techniques from the world of functional programming?

This talk will demonstrate how, using only familiar features available in out-of-the-box C#, to write Functional code that is:

* More robust
* Easier to read
* Easier to maintain

As well as these benefits, Functional code is a great enabler for the use of concurrency with Async functions and Serverless applications with technologies such as Azure Functions.

This talk might be of interest to anyone looking into moving to a new platform, or in improving the scalability of an existing application, or even just interested in seeing what Functional Programming is all about, but all within the comfort of a familiar language.

We might even attempt the impossible, and explain what a Monad is!

Hacking C#: Development for the Truly Lazy

I don't know about you, but I'm a lazy developer. What do I mean by lazy? I don't mean I don't want to do my work - far from it - I mean that I hate to write out a great deal of code to get the job done. I want to accomplish my goals with as little effort as possible.

One of my pet hates is writing enhancements that involve copying and pasting blocks of code, changing a variable name, then leaving everything else the same. I hate having to consider each and every possible null reference exception, and adding in a whole ton of boilerplate to handle it. I hate having to spent ages jumping back and forth in a legacy codebase, trying to understand what it actually does!

What's the alternative? In this talk, I'll demonstrate a way of working that avoids all this unneccesary work, and gives you more time to do something more productive.

We'll look at:
* Functional Programming - what benefits does this increasingly popular paradigm bring us to cut down coding effort
* Linq & Generics - These have been a part of C# for a long time now, and are some of the most powerful features available in the language, but hardly anyone seems to be using them effectively
* MetaProgramming - break open C# and take it to the next level with code that describes how to generate code

Our goal is to write code in as few lines as possible that provides the greatest amount of impact. We also want code that's readable, and easily maintainable. We want to think smart, and think...Lazy.

Win at Games and Write Novels with Machine Learning Algorithms

AI and Machine Learning are all the rage these days, and rightly so. They are as close as it gets to actual Magic in the computing world. It seems like there's nothing you can't do with them.

In this talk, I'm going to try and de-mystify Markov Chains - one of the basic algorithms and show exactly how they're used. Among other things, I'll show you how you can use them to:

* Model and replicate systems with a continuous set of states
* Choose the best move in a popular family board game
* Write an entire new novel by Jane Austen

And much, much more. I'm a Microsoft developer, so all code samples will be in either C# or even Excel!

Build Stuff 2023 Lithuania Upcoming

November 2023 Vilnius, Lithuania

Copenhagen Developers Festival 2023

August 2023 Copenhagen, Denmark

Azure Lowlands 2023

June 2023 Utrecht, Netherlands

DevSum 2023

May 2023 Stockholm, Sweden

Appdevcon / Endpointcon 2023

May 2023 Amsterdam, Netherlands

DDD South West 2023

April 2023 Bristol, United Kingdom

MiXiT 2023

April 2023 Lyon, France

NDC London 2023

January 2023 London, United Kingdom

.NET Conf 2022

November 2022

NDC Oslo 2022

September 2022 Oslo, Norway

NDC Melbourne 2022

June 2022 Melbourne, Australia

NDC Copenhagen 2022

May 2022 Copenhagen, Denmark

NDC Porto 2022

April 2022 Porto, Portugal

.NET Zurich User Group User group

February 2022

DDD 2021

November 2021 Reading, United Kingdom

DDD East Midlands Conference 2021

October 2021 Nottingham, United Kingdom

DDD 2020

December 2020

NE RPC

June 2020

NDC Oslo 2020

June 2020 Oslo, Norway

DDD North 2020!

February 2020

DDD East Midlands Limited 2019

October 2019 Nottingham, United Kingdom

Simon Painter

Senior Developer at Müller Dairy | Microsoft MVP | O'Reilly Author

Telford, United Kingdom